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

Unified Diff: tests/gclient_smoketest.py

Issue 743083002: Make gclient ready for the Blink (DEPS to main project) transition (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Fix tests Created 6 years 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
« no previous file with comments | « tests/gclient_scm_test.py ('k') | tests/scm_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/gclient_smoketest.py
diff --git a/tests/gclient_smoketest.py b/tests/gclient_smoketest.py
index eb2275e059782a0e28837d438f3e266f8278127a..71b5aba96a7d1436af4cf5022bb77f2c2ef65f9d 100755
--- a/tests/gclient_smoketest.py
+++ b/tests/gclient_smoketest.py
@@ -22,7 +22,7 @@ sys.path.insert(0, ROOT_DIR)
from testing_support.fake_repos import join, write
from testing_support.fake_repos import FakeReposTestBase, FakeRepoTransitive, \
- FakeRepoSkiaDEPS
+ FakeRepoSkiaDEPS, FakeRepoBlinkDEPS
import gclient_utils
import scm as gclient_scm
@@ -1538,6 +1538,136 @@ class SkiaDEPSTransitionSmokeTest(GClientSmokeBase):
skia_src), src_git_url)
+class BlinkDEPSTransitionSmokeTest(GClientSmokeBase):
+ """Simulate the behavior of bisect bots as they transition across the Blink
+ DEPS change."""
+
+ FAKE_REPOS_CLASS = FakeRepoBlinkDEPS
+
+ def setUp(self):
+ super(BlinkDEPSTransitionSmokeTest, self).setUp()
+ self.enabled = self.FAKE_REPOS.set_up_git()
+ self.checkout_path = os.path.join(self.root_dir, 'src')
+ self.blink = os.path.join(self.checkout_path, 'third_party', 'WebKit')
+ self.blink_git_url = self.FAKE_REPOS.git_base + 'repo_2'
+ self.pre_merge_sha = self.githash('repo_1', 1)
+ self.post_merge_sha = self.githash('repo_1', 2)
+
+ def CheckStatusPreMergePoint(self):
+ self.assertEqual(gclient_scm.GIT.Capture(['config', 'remote.origin.url'],
+ self.blink), self.blink_git_url)
+ self.assertTrue(os.path.exists(join(self.blink, '.git')))
+ self.assertTrue(os.path.exists(join(self.blink, 'OWNERS')))
+ with open(join(self.blink, 'OWNERS')) as f:
+ owners_content = f.read()
+ self.assertEqual('OWNERS-pre', owners_content, 'OWNERS not updated')
+ self.assertTrue(os.path.exists(join(self.blink, 'Source', 'exists_always')))
+ self.assertTrue(os.path.exists(
+ join(self.blink, 'Source', 'exists_before_but_not_after')))
+ self.assertFalse(os.path.exists(
+ join(self.blink, 'Source', 'exists_after_but_not_before')))
+
+ def CheckStatusPostMergePoint(self):
+ # Check that the contents still exists
+ self.assertTrue(os.path.exists(join(self.blink, 'OWNERS')))
+ with open(join(self.blink, 'OWNERS')) as f:
+ owners_content = f.read()
+ self.assertEqual('OWNERS-post', owners_content, 'OWNERS not updated')
+ self.assertTrue(os.path.exists(join(self.blink, 'Source', 'exists_always')))
+ # Check that file removed between the branch point are actually deleted.
+ self.assertTrue(os.path.exists(
+ join(self.blink, 'Source', 'exists_after_but_not_before')))
+ self.assertFalse(os.path.exists(
+ join(self.blink, 'Source', 'exists_before_but_not_after')))
+ # But not the .git folder
+ self.assertFalse(os.path.exists(join(self.blink, '.git')))
+
+ def testBlinkDEPSChangeUsingGclient(self):
+ """Checks that {src,blink} repos are consistent when syncing going back and
+ forth using gclient sync src@revision."""
+ if not self.enabled:
+ return
+
+ self.gclient(['config', '--spec',
+ 'solutions=['
+ '{"name": "src",'
+ ' "url": "' + self.git_base + 'repo_1",'
+ '}]'])
+
+ # Go back and forth two times.
+ for _ in xrange(2):
+ res = self.gclient(['sync', '--revision', 'src@%s' % self.pre_merge_sha])
+ self.assertEqual(res[2], 0, 'DEPS change sync failed.')
+ self.CheckStatusPreMergePoint()
+
+ res = self.gclient(['sync', '--revision', 'src@%s' % self.post_merge_sha])
+ self.assertEqual(res[2], 0, 'DEPS change sync failed.')
+ self.CheckStatusPostMergePoint()
+
+
+ def testBlinkDEPSChangeUsingGit(self):
+ """Like testBlinkDEPSChangeGit, but move the main project using directly
+ git and not gclient sync."""
+ if not self.enabled:
+ return
+
+ self.gclient(['config', '--spec',
+ 'solutions=['
+ '{"name": "src",'
+ ' "url": "' + self.git_base + 'repo_1",'
+ ' "managed": False,'
+ '}]'])
+
+ # Perform an initial sync to bootstrap the repo.
+ res = self.gclient(['sync'])
+ self.assertEqual(res[2], 0, 'Initial gclient sync failed.')
+
+ # Go back and forth two times.
+ for _ in xrange(2):
+ subprocess2.check_call(['git', 'checkout', '-q', self.pre_merge_sha],
+ cwd=self.checkout_path)
+ res = self.gclient(['sync'])
+ self.assertEqual(res[2], 0, 'gclient sync failed.')
+ self.CheckStatusPreMergePoint()
+
+ subprocess2.check_call(['git', 'checkout', '-q', self.post_merge_sha],
+ cwd=self.checkout_path)
+ res = self.gclient(['sync'])
+ self.assertEqual(res[2], 0, 'DEPS change sync failed.')
+ self.CheckStatusPostMergePoint()
+
+
+ def testBlinkLocalBranchesArePreserved(self):
+ """Checks that the state of local git branches are effectively preserved
+ when going back and forth."""
+ if not self.enabled:
+ return
+
+ self.gclient(['config', '--spec',
+ 'solutions=['
+ '{"name": "src",'
+ ' "url": "' + self.git_base + 'repo_1",'
+ '}]'])
+
+ # Initialize to pre-merge point.
+ self.gclient(['sync', '--revision', 'src@%s' % self.pre_merge_sha])
+ self.CheckStatusPreMergePoint()
+
+ # Create a branch named "foo".
+ subprocess2.check_call(['git', 'checkout', '-qB', 'foo'],
+ cwd=self.blink)
+
+ # Cross the pre-merge point.
+ self.gclient(['sync', '--revision', 'src@%s' % self.post_merge_sha])
+ self.CheckStatusPostMergePoint()
+
+ # Go backwards and check that we still have the foo branch.
+ self.gclient(['sync', '--revision', 'src@%s' % self.pre_merge_sha])
+ self.CheckStatusPreMergePoint()
+ subprocess2.check_call(
+ ['git', 'show-ref', '-q', '--verify', 'refs/heads/foo'], cwd=self.blink)
+
+
class GClientSmokeFromCheckout(GClientSmokeBase):
# WebKit abuses this. It has a .gclient and a DEPS from a checkout.
def setUp(self):
« no previous file with comments | « tests/gclient_scm_test.py ('k') | tests/scm_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698