diff options
| author | Alexis Metaireau <ametaireau@gmail.com> | 2010-08-02 12:40:31 +0200 |
|---|---|---|
| committer | Alexis Metaireau <ametaireau@gmail.com> | 2010-08-02 12:40:31 +0200 |
| commit | e59f853692bbcf0162be760189355ed056da15d6 (patch) | |
| tree | 9c88c86f37e21b38d4ba07170b4dc85e06bff457 /src | |
| parent | 5ded93e5c5fad2e5449e7048a8af6f82e47930b7 (diff) | |
| download | disutils2-e59f853692bbcf0162be760189355ed056da15d6.tar.gz | |
Fix the way version predicates are parsed.
Now project names can contains "-" and spaces.
Diffstat (limited to 'src')
| -rw-r--r-- | src/distutils2/tests/test_version.py | 7 | ||||
| -rw-r--r-- | src/distutils2/version.py | 5 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/distutils2/tests/test_version.py b/src/distutils2/tests/test_version.py index 343b397..1e392f2 100644 --- a/src/distutils2/tests/test_version.py +++ b/src/distutils2/tests/test_version.py @@ -188,6 +188,13 @@ class VersionTestCase(unittest.TestCase): # XXX need to silent the micro version in this case #assert not VersionPredicate('Ho (<3.0,!=2.6)').match('2.6.3') + def test_predicate_name(self): + # Test that names are parsed the right way + + self.assertEqual('Hey', VersionPredicate('Hey (<1.1)').name) + self.assertEqual('Foo-Bar', VersionPredicate('Foo-Bar (1.1)').name) + self.assertEqual('Foo Bar', VersionPredicate('Foo Bar (1.1)').name) + def test_is_final(self): # VersionPredicate knows is a distribution is a final one or not. final_versions = ('1.0', '1.0.post456') diff --git a/src/distutils2/version.py b/src/distutils2/version.py index e61c60e..4034e24 100644 --- a/src/distutils2/version.py +++ b/src/distutils2/version.py @@ -321,7 +321,7 @@ def suggest_normalized_version(s): return None -_PREDICATE = re.compile(r"(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)") +_PREDICATE = re.compile(r"(?i)^\s*([a-z_][\sa-zA-Z_-]*(?:\.[a-z_]\w*)*)(.*)") _VERSIONS = re.compile(r"^\s*\((.*)\)\s*$") _PLAIN_VERSIONS = re.compile(r"^\s*(.*)\s*$") _SPLIT_CMP = re.compile(r"^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$") @@ -354,7 +354,8 @@ class VersionPredicate(object): if match is None: raise ValueError('Bad predicate "%s"' % predicate) - self.name, predicates = match.groups() + name, predicates = match.groups() + self.name = name.strip() predicates = predicates.strip() predicates = _VERSIONS.match(predicates) if predicates is not None: |
