Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(228)

Unified Diff: infra/services/gnumbd/test/git_test.py

Issue 355153002: Refactor infra git libs and testing. (Closed) Base URL: https://chromium.googlesource.com/infra/infra@fake_testing_support
Patch Set: Change config ref to have a sandard naming scheme Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: infra/services/gnumbd/test/git_test.py
diff --git a/infra/services/gnumbd/test/git_test.py b/infra/services/gnumbd/test/git_test.py
deleted file mode 100644
index 1adec3fa7fb469f3a73a4355fe0bc8ea047d0288..0000000000000000000000000000000000000000
--- a/infra/services/gnumbd/test/git_test.py
+++ /dev/null
@@ -1,244 +0,0 @@
-# Copyright 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import shutil
-import sys
-import tempfile
-
-# 'super on old-style class' - pylint: disable=E1002
-# 'cannot import' - pylint: disable=F0401
-# 'no __init__ method' - pylint: disable=W0232
-from testing_support import git_test_utils
-
-from infra.services.gnumbd.support import git, util
-
-class TestBasis(git_test_utils.GitRepoReadWriteTestBase):
- REPO_SCHEMA = """
- A B C D E F
- D L M N O
- O P Q R S
- B G H I J K
- H Z
- O Z
- """
-
- @staticmethod
- def capture_stdio(fn, *args, **kwargs):
- stdout = sys.stdout
- stderr = sys.stderr
- try:
- # "multiple statements on a line" pylint: disable=C0321
- with tempfile.TemporaryFile() as out, tempfile.TemporaryFile() as err:
- sys.stdout = out
- sys.stderr = err
- fn(*args, **kwargs)
- out.seek(0)
- err.seek(0)
- return out.read(), err.read()
- finally:
- sys.stdout = stdout
- sys.stderr = stderr
-
- def setUp(self):
- self.repos_dir = tempfile.mkdtemp(suffix='.gnumbd')
- super(TestBasis, self).setUp()
- self.repo.git('branch', 'branch_O', self.repo['O'])
-
- def tearDown(self):
- shutil.rmtree(self.repos_dir)
- super(TestBasis, self).tearDown()
-
- def mkRepo(self):
- r = git.Repo(self.repo.repo_path)
- r.repos_dir = self.repos_dir
- self.capture_stdio(r.reify)
- return r
-
-
-class TestRepo(TestBasis):
- def testEmptyRepo(self):
- r = git.Repo('doesnt_exist')
- r.repos_dir = self.repos_dir
-
- with self.assertRaises(util.CalledProcessError):
- self.capture_stdio(r.reify)
-
- with self.assertRaises(AssertionError):
- r.run('show-ref')
-
- def testDefaultRepo(self):
- r = self.mkRepo()
- r.reify() # covers 'already initialized' portion of reify()
- self.assertEqual(r.run('rev-parse', 'branch_F').strip(), self.repo['F'])
- _, err = self.capture_stdio(r.run, 'rev-parse', 'rtaitnariostnr',
- ok_ret={128})
- self.assertIn('fatal', err)
-
- def testDefaultRepoGit(self):
- shutil.move(self.repo.repo_path, self.repo.repo_path + '.git')
- self.repo.repo_path += '.git'
- r = self.mkRepo()
- self.assertFalse(r._repo_path.endswith('.git')) # pylint: disable=W0212
- self.assertIn('refs/heads/branch_F', r.run('show-ref'))
-
- def testRefglob(self):
- r = self.mkRepo()
- self.assertEqual(
- {rf.ref for rf in r.refglob('*branch_*')},
- {'refs/heads/branch_'+l for l in 'FOKSZ'})
- self.assertIs(next(r.refglob('*branch_O')).repo, r)
- self.assertEqual(list(r.refglob('*atritaosrtientsaroitna*')), [])
-
- def testDryRun(self):
- r = self.mkRepo()
- r.dry_run = True
- self.assertIsNone(r.run('push', 'origin', 'HEAD'))
-
- def testRunIndata(self):
- r = self.mkRepo()
- with self.assertRaises(AssertionError):
- r.run('bogus', indata='spam', stdin=sys.stdin)
- self.assertEqual(
- r.run('rev-list', '--stdin', indata='branch_O~').splitlines()[0],
- self.repo['N'])
-
- def testGetCommit(self):
- # pylint: disable=W0212
- r = self.mkRepo()
- c = r.get_commit(self.repo['L'])
- self.assertEqual(c.hsh, self.repo['L'])
- self.assertEqual([self.repo['L']], r._commit_cache.keys())
-
- c2 = r.get_commit(self.repo['L'])
- self.assertIs(c, c2)
-
- def testGetCommitEviction(self):
- # pylint: disable=W0212
- r = self.mkRepo()
- r.MAX_CACHE_SIZE = 2
- L = r.get_commit(self.repo['L'])
- self.assertIs(L, r.get_commit(self.repo['L']))
- self.assertEqual(len(r._commit_cache), 1)
-
- O = r.get_commit(self.repo['O'])
- self.assertIs(L, r.get_commit(self.repo['L']))
- self.assertIs(O, r.get_commit(self.repo['O']))
- self.assertEqual(len(r._commit_cache), 2)
-
- N = r.get_commit(self.repo['N'])
- self.assertIs(N, r.get_commit(self.repo['N']))
- self.assertIs(O, r.get_commit(self.repo['O']))
- self.assertEqual(len(r._commit_cache), 2)
-
- self.assertIsNot(L, r.get_commit(self.repo['L']))
-
-
-class TestRef(TestBasis):
- def testComparison(self):
- r = self.mkRepo()
- O = git.Ref(r, 'refs/heads/branch_O')
- self.assertEqual(O, O)
- self.assertEqual(O, git.Ref(r, 'refs/heads/branch_O'))
-
- N = git.Ref(r, 'refs/heads/branch_K')
- self.assertNotEqual(O, N)
-
- def testRepr(self):
- r = self.mkRepo()
- O = git.Ref(r, 'refs/heads/branch_O')
- self.assertEqual("Ref(%r, 'refs/heads/branch_O')" % r, repr(O))
-
- def testCommit(self):
- r = self.mkRepo()
- self.assertEqual(
- git.Ref(r, 'refs/heads/branch_O').commit.hsh,
- self.repo['O'])
-
- def testCommitBogus(self):
- r = self.mkRepo()
- self.assertIs(git.Ref(r, 'refs/heads/bogus').commit, git.INVALID)
- # exercise __ne__ and __eq__
- self.assertNotEqual(git.Ref(r, 'refs/heads/bogus').commit,
- git.Ref(r, 'refs/heads/other_bogus').commit)
- self.assertFalse(git.Ref(r, 'refs/heads/bogus').commit ==
- git.Ref(r, 'refs/heads/other_bogus').commit)
-
- def testTo(self):
- r = self.mkRepo()
- A = git.Ref(r, 'refs/heads/root_A')
- O = git.Ref(r, 'refs/heads/branch_O')
- self.assertEqual(
- list(c.hsh for c in A.to(O)),
- [self.repo[c] for c in 'BCDLMNO']
- )
-
- def testNonFastForward(self):
- r = self.mkRepo()
- O = git.Ref(r, 'refs/heads/branch_O')
- D = r.get_commit(self.repo['D'])
- with self.assertRaises(git.CalledProcessError):
- O.fast_forward_push(D)
- self.assertEqual(
- self.repo.git('rev-parse', 'branch_O').stdout.strip(),
- self.repo['O'])
-
- def testFastForward(self):
- r = self.mkRepo()
- O = git.Ref(r, 'refs/heads/branch_O')
- S = r.get_commit(self.repo['S'])
- self.capture_stdio(O.fast_forward_push, S)
- self.assertEqual(O.commit.hsh, self.repo['S'])
- self.assertEqual(
- self.repo.git('rev-parse', 'branch_O').stdout.strip(),
- self.repo['S'])
-
-
-class TestCommit(TestBasis):
- def testComparison(self):
- r = self.mkRepo()
- c = git.Ref(r, 'refs/heads/branch_O').commit
- self.assertEqual(c, c)
- self.assertEqual(c, git.Ref(r, 'refs/heads/branch_O').commit)
- self.assertNotEqual(c, git.Ref(r, 'refs/heads/branch_S').commit)
- self.assertIs(c.repo, r)
-
- def testRepr(self):
- r = self.mkRepo()
- c = git.Ref(r, 'refs/heads/branch_O').commit
- self.assertEqual("Commit(%r, %r)" % (r, self.repo['O']), repr(c))
-
- def testData(self):
- r = self.mkRepo()
- d = git.Ref(r, 'refs/heads/branch_O').commit.data
- self.assertEqual(d.committer.email, 'commitish@example.com')
-
- def testBogus(self):
- r = self.mkRepo()
- d = git.Commit(r, 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeef').data
- self.assertIs(d, git.INVALID)
- self.assertIs(d.committer, git.INVALID)
- self.assertIs(d.committer.alter(user='tom'), git.INVALID)
-
- def testParent(self):
- r = self.mkRepo()
- c = git.Ref(r, 'refs/heads/branch_O').commit
- self.assertEqual(c.parent.hsh, self.repo['N'])
-
- a = git.Ref(r, 'refs/heads/root_A').commit
- self.assertIsNone(a.parent)
-
- z = git.Ref(r, 'refs/heads/branch_Z').commit
- self.assertIs(z.parent, git.INVALID)
-
- def testAlter(self):
- r = self.mkRepo()
- c = git.Ref(r, 'refs/heads/branch_O').commit
- d = c.data
-
- a = c.alter(committer=d.committer.alter(email='bob@dude.example.com'))
- self.assertEqual(a.hsh, 'fadfbe63d40f60f5313a71a1c9d72a741ee91770')
-
- with self.assertRaises(Exception):
- c.alter(tree='failbeef')
-

Powered by Google App Engine
This is Rietveld 408576698