diff --git a/bindep/depends.py b/bindep/depends.py index 3ccd9c4..cf6304c 100644 --- a/bindep/depends.py +++ b/bindep/depends.py @@ -47,7 +47,7 @@ rule = :name selector?:selector version?:version ('\n'|comment) -> ( name, selector or [], version or []) lowercase = ('a'|'b'|'c'|'d'|'e'|'f'|'g'|'h'|'i'|'j'|'k'|'l'|'m'|'n'|'o'|'p' |'q'|'r'|'s'|'t'|'u'|'v'|'w'|'x'|'y'|'z') -name = letterOrDigit:start (letterOrDigit|'.'|'+'|'-'|'_'|'/')+:rest +name = (letterOrDigit|'/'):start (letterOrDigit|'.'|'+'|'-'|'_'|'/')+:rest ws = ' '+ profile = ('!'?:neg <(lowercase|digit|':'|'-'|'.')+>:name) -> (neg!='!', name) profiles = '(' (ws? profile)*:p ws? ')' -> p diff --git a/bindep/tests/test_depends.py b/bindep/tests/test_depends.py index da9b732..31f227f 100644 --- a/bindep/tests/test_depends.py +++ b/bindep/tests/test_depends.py @@ -448,6 +448,15 @@ class TestDepends(TestCase): """)) self.assertEqual(len(depends.active_rules(['default'])), 3) + def test_parser_accepts_full_path_to_tools(self): + # at least yum/dnf allow these instead of mentioning rpm names + depends = Depends(dedent("""\ + /usr/bin/bash + """)) + self.assertEqual( + [("/usr/bin/bash", [], [])], + depends.active_rules(["default"])) + def test_parser_invalid(self): self.assertRaises(ometa.runtime.ParseError, lambda: Depends("foo [platform:bar@baz]\n"))