summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Frysinger <vapier@google.com>2020-03-23 16:49:11 -0400
committerMike Frysinger <vapier@google.com>2020-03-24 03:08:25 +0000
commit587f162033b3d39e394cfb0cd13e5703af913901 (patch)
treea5c7730bf47441ec5396d2da3a6d59aeb1382d48
parent78964472adc5c92e0aad7bf513c50df5331d9d66 (diff)
downloadgit-repo-587f162033b3d39e394cfb0cd13e5703af913901.tar.gz
tests: add more wrapper unittests
Change-Id: Ic6b4eb96b871793bc9463c9047674cf3cfbe4b5e Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259993 Tested-by: Mike Frysinger <vapier@google.com> Reviewed-by: Jonathan Nieder <jrn@google.com>
-rwxr-xr-xrepo3
-rw-r--r--tests/test_wrapper.py88
2 files changed, 90 insertions, 1 deletions
diff --git a/repo b/repo
index 6670c0d3..2f4601a7 100755
--- a/repo
+++ b/repo
@@ -602,7 +602,8 @@ def _CheckGitVersion():
602 602
603 if ver_act < MIN_GIT_VERSION: 603 if ver_act < MIN_GIT_VERSION:
604 need = '.'.join(map(str, MIN_GIT_VERSION)) 604 need = '.'.join(map(str, MIN_GIT_VERSION))
605 print('fatal: git %s or later required' % need, file=sys.stderr) 605 print('fatal: git %s or later required; found %s' % (need, ver_act.full),
606 file=sys.stderr)
606 raise CloneFailure() 607 raise CloneFailure()
607 608
608 609
diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py
index a98c4130..c105a3ce 100644
--- a/tests/test_wrapper.py
+++ b/tests/test_wrapper.py
@@ -153,5 +153,93 @@ class SetGitTrace2ParentSid(RepoWrapperTestCase):
153 self.assertRegex(value, self.VALID_FORMAT) 153 self.assertRegex(value, self.VALID_FORMAT)
154 154
155 155
156class RunCommand(RepoWrapperTestCase):
157 """Check run_command behavior."""
158
159 def test_capture(self):
160 """Check capture_output handling."""
161 ret = self.wrapper.run_command(['echo', 'hi'], capture_output=True)
162 self.assertEqual(ret.stdout, 'hi\n')
163
164 def test_check(self):
165 """Check check handling."""
166 self.wrapper.run_command(['true'], check=False)
167 self.wrapper.run_command(['true'], check=True)
168 self.wrapper.run_command(['false'], check=False)
169 with self.assertRaises(self.wrapper.RunError):
170 self.wrapper.run_command(['false'], check=True)
171
172
173class RunGit(RepoWrapperTestCase):
174 """Check run_git behavior."""
175
176 def test_capture(self):
177 """Check capture_output handling."""
178 ret = self.wrapper.run_git('--version')
179 self.assertIn('git', ret.stdout)
180
181 def test_check(self):
182 """Check check handling."""
183 with self.assertRaises(self.wrapper.CloneFailure):
184 self.wrapper.run_git('--version-asdfasdf')
185 self.wrapper.run_git('--version-asdfasdf', check=False)
186
187
188class ParseGitVersion(RepoWrapperTestCase):
189 """Check ParseGitVersion behavior."""
190
191 def test_autoload(self):
192 """Check we can load the version from the live git."""
193 ret = self.wrapper.ParseGitVersion()
194 self.assertIsNotNone(ret)
195
196 def test_bad_ver(self):
197 """Check handling of bad git versions."""
198 ret = self.wrapper.ParseGitVersion(ver_str='asdf')
199 self.assertIsNone(ret)
200
201 def test_normal_ver(self):
202 """Check handling of normal git versions."""
203 ret = self.wrapper.ParseGitVersion(ver_str='git version 2.25.1')
204 self.assertEqual(2, ret.major)
205 self.assertEqual(25, ret.minor)
206 self.assertEqual(1, ret.micro)
207 self.assertEqual('2.25.1', ret.full)
208
209 def test_extended_ver(self):
210 """Check handling of extended distro git versions."""
211 ret = self.wrapper.ParseGitVersion(
212 ver_str='git version 1.30.50.696.g5e7596f4ac-goog')
213 self.assertEqual(1, ret.major)
214 self.assertEqual(30, ret.minor)
215 self.assertEqual(50, ret.micro)
216 self.assertEqual('1.30.50.696.g5e7596f4ac-goog', ret.full)
217
218
219class CheckGitVersion(RepoWrapperTestCase):
220 """Check _CheckGitVersion behavior."""
221
222 def test_unknown(self):
223 """Unknown versions should abort."""
224 with mock.patch.object(self.wrapper, 'ParseGitVersion', return_value=None):
225 with self.assertRaises(self.wrapper.CloneFailure):
226 self.wrapper._CheckGitVersion()
227
228 def test_old(self):
229 """Old versions should abort."""
230 with mock.patch.object(
231 self.wrapper, 'ParseGitVersion',
232 return_value=self.wrapper.GitVersion(1, 0, 0, '1.0.0')):
233 with self.assertRaises(self.wrapper.CloneFailure):
234 self.wrapper._CheckGitVersion()
235
236 def test_new(self):
237 """Newer versions should run fine."""
238 with mock.patch.object(
239 self.wrapper, 'ParseGitVersion',
240 return_value=self.wrapper.GitVersion(100, 0, 0, '100.0.0')):
241 self.wrapper._CheckGitVersion()
242
243
156if __name__ == '__main__': 244if __name__ == '__main__':
157 unittest.main() 245 unittest.main()