[no-sync] Add method to check for diffs between the current checkout and another commit.
Bug: 1339472
Change-Id: If97d2fad7e5c61ec907e15a00db225b653a62bef
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/3738365
Reviewed-by: Gavin Mak <gavinmak@google.com>
Commit-Queue: Joanna Wang <jojwang@chromium.org>
diff --git a/tests/gclient_scm_test.py b/tests/gclient_scm_test.py
index 8185b41..6774f96 100755
--- a/tests/gclient_scm_test.py
+++ b/tests/gclient_scm_test.py
@@ -1482,6 +1482,54 @@
self.assertEqual(self.githash('repo_1', 5), self.gitrevparse(self.root_dir))
+class DepsChangesFakeRepo(fake_repos.FakeReposBase):
+ def populateGit(self):
+ self._commit_git('repo_1', {'DEPS': 'versionA', 'doesnotmatter': 'B'})
+ self._commit_git('repo_1', {'DEPS': 'versionA', 'doesnotmatter': 'C'})
+
+ self._commit_git('repo_1', {'DEPS': 'versionB'})
+ self._commit_git('repo_1', {'DEPS': 'versionA', 'doesnotmatter': 'C'})
+ self._create_ref('repo_1', 'refs/heads/main', 4)
+
+
+class CheckDiffTest(fake_repos.FakeReposTestBase):
+ FAKE_REPOS_CLASS = DepsChangesFakeRepo
+
+ def setUp(self):
+ super(CheckDiffTest, self).setUp()
+ self.enabled = self.FAKE_REPOS.set_up_git()
+ self.options = BaseGitWrapperTestCase.OptionsObject()
+ self.url = self.git_base + 'repo_1'
+ self.mirror = None
+ mock.patch('sys.stdout', StringIO()).start()
+ self.addCleanup(mock.patch.stopall)
+
+ def setUpMirror(self):
+ self.mirror = tempfile.mkdtemp()
+ git_cache.Mirror.SetCachePath(self.mirror)
+ self.addCleanup(gclient_utils.rmtree, self.mirror)
+ self.addCleanup(git_cache.Mirror.SetCachePath, None)
+
+ def testCheckDiff(self):
+ """Correctly check for diffs."""
+ scm = gclient_scm.GitWrapper(self.url, self.root_dir, '.')
+ file_list = []
+
+ # Make sure we don't specify a revision.
+ self.options.revision = None
+ scm.update(self.options, None, file_list)
+ self.assertEqual(self.githash('repo_1', 4), self.gitrevparse(self.root_dir))
+
+ self.assertFalse(scm.check_diff(self.githash('repo_1', 1), files=['DEPS']))
+ self.assertTrue(scm.check_diff(self.githash('repo_1', 1)))
+ self.assertTrue(scm.check_diff(self.githash('repo_1', 3), files=['DEPS']))
+
+ self.assertFalse(
+ scm.check_diff(self.githash('repo_1', 2),
+ files=['DEPS', 'doesnotmatter']))
+ self.assertFalse(scm.check_diff(self.githash('repo_1', 2)))
+
+
if 'unittest.util' in __import__('sys').modules:
# Show full diff in self.assertEqual.
__import__('sys').modules['unittest.util']._MAX_LENGTH = 999999999