|
@@ -0,0 +1,91 @@
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+"""Tests for git compatibility utilities."""
|
|
|
|
+
|
|
|
|
+from unittest import TestCase
|
|
|
|
+
|
|
|
|
+from dulwich.tests import (
|
|
|
|
+ TestSkipped,
|
|
|
|
+ )
|
|
|
|
+import utils
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class GitVersionTests(TestCase):
|
|
|
|
+
|
|
|
|
+ def setUp(self):
|
|
|
|
+ self._orig_run_git = utils.run_git
|
|
|
|
+ self._version_str = None
|
|
|
|
+
|
|
|
|
+ def run_git(args, **unused_kwargs):
|
|
|
|
+ self.assertEqual(['--version'], args)
|
|
|
|
+ return 0, self._version_str
|
|
|
|
+ utils.run_git = run_git
|
|
|
|
+
|
|
|
|
+ def tearDown(self):
|
|
|
|
+ utils.run_git = self._orig_run_git
|
|
|
|
+
|
|
|
|
+ def test_git_version_none(self):
|
|
|
|
+ self._version_str = 'not a git version'
|
|
|
|
+ self.assertEqual(None, utils.git_version())
|
|
|
|
+
|
|
|
|
+ def test_git_version_3(self):
|
|
|
|
+ self._version_str = 'git version 1.6.6'
|
|
|
|
+ self.assertEqual((1, 6, 6, 0), utils.git_version())
|
|
|
|
+
|
|
|
|
+ def test_git_version_4(self):
|
|
|
|
+ self._version_str = 'git version 1.7.0.2'
|
|
|
|
+ self.assertEqual((1, 7, 0, 2), utils.git_version())
|
|
|
|
+
|
|
|
|
+ def test_git_version_extra(self):
|
|
|
|
+ self._version_str = 'git version 1.7.0.3.295.gd8fa2'
|
|
|
|
+ self.assertEqual((1, 7, 0, 3), utils.git_version())
|
|
|
|
+
|
|
|
|
+ def assertRequireSucceeds(self, required_version):
|
|
|
|
+ try:
|
|
|
|
+ utils.require_git_version(required_version)
|
|
|
|
+ except TestSkipped:
|
|
|
|
+ self.fail()
|
|
|
|
+
|
|
|
|
+ def assertRequireFails(self, required_version):
|
|
|
|
+ self.assertRaises(TestSkipped, utils.require_git_version,
|
|
|
|
+ required_version)
|
|
|
|
+
|
|
|
|
+ def test_require_git_version(self):
|
|
|
|
+ try:
|
|
|
|
+ self._version_str = 'git version 1.6.6'
|
|
|
|
+ self.assertRequireSucceeds((1, 6, 6))
|
|
|
|
+ self.assertRequireSucceeds((1, 6, 6, 0))
|
|
|
|
+ self.assertRequireSucceeds((1, 6, 5))
|
|
|
|
+ self.assertRequireSucceeds((1, 6, 5, 99))
|
|
|
|
+ self.assertRequireFails((1, 7, 0))
|
|
|
|
+ self.assertRequireFails((1, 7, 0, 2))
|
|
|
|
+ self.assertRaises(ValueError, utils.require_git_version,
|
|
|
|
+ (1, 6, 6, 0, 0))
|
|
|
|
+
|
|
|
|
+ self._version_str = 'git version 1.7.0.2'
|
|
|
|
+ self.assertRequireSucceeds((1, 6, 6))
|
|
|
|
+ self.assertRequireSucceeds((1, 6, 6, 0))
|
|
|
|
+ self.assertRequireSucceeds((1, 7, 0))
|
|
|
|
+ self.assertRequireSucceeds((1, 7, 0, 2))
|
|
|
|
+ self.assertRequireFails((1, 7, 0, 3))
|
|
|
|
+ self.assertRequireFails((1, 7, 1))
|
|
|
|
+ except TestSkipped, e:
|
|
|
|
+
|
|
|
|
+ self.fail('Test unexpectedly skipped: %s' % e)
|