swc-installation-test-2.py: Fix 'mercurial' version extraction
authorW. Trevor King <wking@tremily.us>
Sun, 30 Dec 2012 18:15:28 +0000 (13:15 -0500)
committerW. Trevor King <wking@tremily.us>
Tue, 1 Jan 2013 14:49:47 +0000 (09:49 -0500)
The Mercurial Python package stores its version in strange places.

swc-installation-test-2.py

index e25712a19c27e049b284e499050d570a994b27b5..7e1f731044efcfcfae8ad64b0297875635b5fc24 100755 (executable)
@@ -353,8 +353,6 @@ class PythonPackageDependency (Dependency):
 
 
 for package,name,long_name,minimum_version in [
-        ('mercurial', None, 'Mercurial Python package',
-         CHECKER['hg'].minimum_version),
         ('nose', None, 'Nose Python package',
          CHECKER['nosetests'].minimum_version),
         ('sqlite3', 'sqlite3-python', 'SQLite Python package',
@@ -379,6 +377,23 @@ for package,name,long_name,minimum_version in [
 del package, name, long_name, minimum_version  # cleanup namespace
 
 
+class MercurialPythonPackage (PythonPackageDependency):
+    def _get_version(self):
+        try:  # mercurial >= 1.2
+            package = _importlib.import_module('mercurial.util')
+        except ImportError as e:  # mercurial <= 1.1.2
+            package = self._get_package('mercurial.version')
+            return package.get_version()
+        else:
+            return package.version()
+
+
+CHECKER['mercurial'] = MercurialPythonPackage(
+    package='mercurial.util', name='mercurial',
+    long_name='Mercurial Python package',
+    minimum_version=CHECKER['hg'].minimum_version)
+
+
 class VirtualDependency (Dependency):
     def _check(self):
         return '{0} {1}'.format(