aboutsummaryrefslogtreecommitdiff
path: root/llvm_tools/git_llvm_rev_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'llvm_tools/git_llvm_rev_test.py')
-rwxr-xr-xllvm_tools/git_llvm_rev_test.py235
1 files changed, 128 insertions, 107 deletions
diff --git a/llvm_tools/git_llvm_rev_test.py b/llvm_tools/git_llvm_rev_test.py
index d05093a8..86a4b202 100755
--- a/llvm_tools/git_llvm_rev_test.py
+++ b/llvm_tools/git_llvm_rev_test.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Copyright 2019 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
@@ -9,122 +9,143 @@
import unittest
import git_llvm_rev
-import llvm_project
from git_llvm_rev import MAIN_BRANCH
+import llvm_project
def get_llvm_config() -> git_llvm_rev.LLVMConfig:
- return git_llvm_rev.LLVMConfig(
- dir=llvm_project.get_location(), remote='origin')
+ return git_llvm_rev.LLVMConfig(
+ dir=llvm_project.get_location(), remote="origin"
+ )
class Test(unittest.TestCase):
- """Test cases for git_llvm_rev."""
-
- def rev_to_sha_with_round_trip(self, rev: git_llvm_rev.Rev) -> str:
- config = get_llvm_config()
- sha = git_llvm_rev.translate_rev_to_sha(config, rev)
- roundtrip_rev = git_llvm_rev.translate_sha_to_rev(config, sha)
- self.assertEqual(roundtrip_rev, rev)
- return sha
-
- def test_sha_to_rev_on_base_sha_works(self) -> None:
- sha = self.rev_to_sha_with_round_trip(
- git_llvm_rev.Rev(
- branch=MAIN_BRANCH, number=git_llvm_rev.base_llvm_revision))
- self.assertEqual(sha, git_llvm_rev.base_llvm_sha)
-
- def test_sha_to_rev_prior_to_base_rev_works(self) -> None:
- sha = self.rev_to_sha_with_round_trip(
- git_llvm_rev.Rev(branch=MAIN_BRANCH, number=375000))
- self.assertEqual(sha, '2f6da767f13b8fd81f840c211d405fea32ac9db7')
-
- def test_sha_to_rev_after_base_rev_works(self) -> None:
- sha = self.rev_to_sha_with_round_trip(
- git_llvm_rev.Rev(branch=MAIN_BRANCH, number=375506))
- self.assertEqual(sha, '3bf7fddeb05655d9baed4cc69e13535c677ed1dd')
-
- def test_llvm_svn_parsing_runs_ignore_reverts(self) -> None:
- # This commit has a revert that mentions the reverted llvm-svn in the
- # commit message.
-
- # Commit which performed the revert
- sha = self.rev_to_sha_with_round_trip(
- git_llvm_rev.Rev(branch=MAIN_BRANCH, number=374895))
- self.assertEqual(sha, '1731fc88d1fa1fa55edd056db73a339b415dd5d6')
-
- # Commit that was reverted
- sha = self.rev_to_sha_with_round_trip(
- git_llvm_rev.Rev(branch=MAIN_BRANCH, number=374841))
- self.assertEqual(sha, '2a1386c81de504b5bda44fbecf3f7b4cdfd748fc')
-
- def test_imaginary_revs_raise(self) -> None:
- with self.assertRaises(ValueError) as r:
- git_llvm_rev.translate_rev_to_sha(
- get_llvm_config(),
- git_llvm_rev.Rev(branch=MAIN_BRANCH, number=9999999))
-
- self.assertIn('Try updating your tree?', str(r.exception))
-
- def test_merge_commits_count_as_one_commit_crbug1041079(self) -> None:
- # This CL merged _a lot_ of commits in. Verify a few hand-computed
- # properties about it.
- merge_sha_rev_number = 4496 + git_llvm_rev.base_llvm_revision
- sha = self.rev_to_sha_with_round_trip(
- git_llvm_rev.Rev(branch=MAIN_BRANCH, number=merge_sha_rev_number))
- self.assertEqual(sha, '0f0d0ed1c78f1a80139a1f2133fad5284691a121')
-
- sha = self.rev_to_sha_with_round_trip(
- git_llvm_rev.Rev(branch=MAIN_BRANCH, number=merge_sha_rev_number - 1))
- self.assertEqual(sha, '6f635f90929da9545dd696071a829a1a42f84b30')
-
- sha = self.rev_to_sha_with_round_trip(
- git_llvm_rev.Rev(branch=MAIN_BRANCH, number=merge_sha_rev_number + 1))
- self.assertEqual(sha, '199700a5cfeedf227619f966aa3125cef18bc958')
-
- # NOTE: The below tests have _zz_ in their name as an optimization. Iterating
- # on a quick test is painful when these larger tests come before it and take
- # 7secs to run. Python's unittest module guarantees tests are run in
- # alphabetical order by their method name, so...
- #
- # If you're wondering, the slow part is `git branch -r --contains`. I imagine
- # it's going to be very cold code, so I'm not inclined to optimize it much.
-
- def test_zz_branch_revs_work_after_merge_points_and_svn_cutoff(self) -> None:
- # Arbitrary 9.x commit without an attached llvm-svn: value.
- sha = self.rev_to_sha_with_round_trip(
- git_llvm_rev.Rev(branch='upstream/release/9.x', number=366670))
- self.assertEqual(sha, '4e858e4ac00b59f064da4e1f7e276916e7d296aa')
-
- def test_zz_branch_revs_work_at_merge_points(self) -> None:
- rev_number = 366426
- backing_sha = 'c89a3d78f43d81b9cff7b9248772ddf14d21b749'
-
- sha = self.rev_to_sha_with_round_trip(
- git_llvm_rev.Rev(branch=MAIN_BRANCH, number=rev_number))
- self.assertEqual(sha, backing_sha)
-
- # Note that this won't round-trip: since this commit is on the main
- # branch, we'll pick main for this. That's fine.
- sha = git_llvm_rev.translate_rev_to_sha(
- get_llvm_config(),
- git_llvm_rev.Rev(branch='upstream/release/9.x', number=rev_number))
- self.assertEqual(sha, backing_sha)
-
- def test_zz_branch_revs_work_after_merge_points(self) -> None:
- # Picking the commit on the 9.x branch after the merge-base for that +
- # main. Note that this is where llvm-svn numbers should diverge from
- # ours, and are therefore untrustworthy. The commit for this *does* have a
- # different `llvm-svn:` string than we should have.
- sha = self.rev_to_sha_with_round_trip(
- git_llvm_rev.Rev(branch='upstream/release/9.x', number=366427))
- self.assertEqual(sha, '2cf681a11aea459b50d712abc7136f7129e4d57f')
+ """Test cases for git_llvm_rev."""
+
+ def rev_to_sha_with_round_trip(self, rev: git_llvm_rev.Rev) -> str:
+ config = get_llvm_config()
+ sha = git_llvm_rev.translate_rev_to_sha(config, rev)
+ roundtrip_rev = git_llvm_rev.translate_sha_to_rev(config, sha)
+ self.assertEqual(roundtrip_rev, rev)
+ return sha
+
+ def test_sha_to_rev_on_base_sha_works(self) -> None:
+ sha = self.rev_to_sha_with_round_trip(
+ git_llvm_rev.Rev(
+ branch=MAIN_BRANCH, number=git_llvm_rev.base_llvm_revision
+ )
+ )
+ self.assertEqual(sha, git_llvm_rev.base_llvm_sha)
+
+ def test_sha_to_rev_prior_to_base_rev_works(self) -> None:
+ sha = self.rev_to_sha_with_round_trip(
+ git_llvm_rev.Rev(branch=MAIN_BRANCH, number=375000)
+ )
+ self.assertEqual(sha, "2f6da767f13b8fd81f840c211d405fea32ac9db7")
+
+ def test_sha_to_rev_after_base_rev_works(self) -> None:
+ sha = self.rev_to_sha_with_round_trip(
+ git_llvm_rev.Rev(branch=MAIN_BRANCH, number=375506)
+ )
+ self.assertEqual(sha, "3bf7fddeb05655d9baed4cc69e13535c677ed1dd")
+
+ def test_llvm_svn_parsing_runs_ignore_reverts(self) -> None:
+ # This commit has a revert that mentions the reverted llvm-svn in the
+ # commit message.
+
+ # Commit which performed the revert
+ sha = self.rev_to_sha_with_round_trip(
+ git_llvm_rev.Rev(branch=MAIN_BRANCH, number=374895)
+ )
+ self.assertEqual(sha, "1731fc88d1fa1fa55edd056db73a339b415dd5d6")
+
+ # Commit that was reverted
+ sha = self.rev_to_sha_with_round_trip(
+ git_llvm_rev.Rev(branch=MAIN_BRANCH, number=374841)
+ )
+ self.assertEqual(sha, "2a1386c81de504b5bda44fbecf3f7b4cdfd748fc")
+
+ def test_imaginary_revs_raise(self) -> None:
+ with self.assertRaises(ValueError) as r:
+ git_llvm_rev.translate_rev_to_sha(
+ get_llvm_config(),
+ git_llvm_rev.Rev(branch=MAIN_BRANCH, number=9999999),
+ )
+
+ self.assertIn("Try updating your tree?", str(r.exception))
+
+ def test_merge_commits_count_as_one_commit_crbug1041079(self) -> None:
+ # This CL merged _a lot_ of commits in. Verify a few hand-computed
+ # properties about it.
+ merge_sha_rev_number = 4496 + git_llvm_rev.base_llvm_revision
+ sha = self.rev_to_sha_with_round_trip(
+ git_llvm_rev.Rev(branch=MAIN_BRANCH, number=merge_sha_rev_number)
+ )
+ self.assertEqual(sha, "0f0d0ed1c78f1a80139a1f2133fad5284691a121")
+
+ sha = self.rev_to_sha_with_round_trip(
+ git_llvm_rev.Rev(
+ branch=MAIN_BRANCH, number=merge_sha_rev_number - 1
+ )
+ )
+ self.assertEqual(sha, "6f635f90929da9545dd696071a829a1a42f84b30")
+
+ sha = self.rev_to_sha_with_round_trip(
+ git_llvm_rev.Rev(
+ branch=MAIN_BRANCH, number=merge_sha_rev_number + 1
+ )
+ )
+ self.assertEqual(sha, "199700a5cfeedf227619f966aa3125cef18bc958")
+
+ # NOTE: The below tests have _zz_ in their name as an optimization. Iterating
+ # on a quick test is painful when these larger tests come before it and take
+ # 7secs to run. Python's unittest module guarantees tests are run in
+ # alphabetical order by their method name, so...
+ #
+ # If you're wondering, the slow part is `git branch -r --contains`. I imagine
+ # it's going to be very cold code, so I'm not inclined to optimize it much.
+
+ def test_zz_branch_revs_work_after_merge_points_and_svn_cutoff(
+ self,
+ ) -> None:
+ # Arbitrary 9.x commit without an attached llvm-svn: value.
+ sha = self.rev_to_sha_with_round_trip(
+ git_llvm_rev.Rev(branch="upstream/release/9.x", number=366670)
+ )
+ self.assertEqual(sha, "4e858e4ac00b59f064da4e1f7e276916e7d296aa")
+
+ def test_zz_branch_revs_work_at_merge_points(self) -> None:
+ rev_number = 366426
+ backing_sha = "c89a3d78f43d81b9cff7b9248772ddf14d21b749"
+
+ sha = self.rev_to_sha_with_round_trip(
+ git_llvm_rev.Rev(branch=MAIN_BRANCH, number=rev_number)
+ )
+ self.assertEqual(sha, backing_sha)
+
+ # Note that this won't round-trip: since this commit is on the main
+ # branch, we'll pick main for this. That's fine.
+ sha = git_llvm_rev.translate_rev_to_sha(
+ get_llvm_config(),
+ git_llvm_rev.Rev(branch="upstream/release/9.x", number=rev_number),
+ )
+ self.assertEqual(sha, backing_sha)
+
+ def test_zz_branch_revs_work_after_merge_points(self) -> None:
+ # Picking the commit on the 9.x branch after the merge-base for that +
+ # main. Note that this is where llvm-svn numbers should diverge from
+ # ours, and are therefore untrustworthy. The commit for this *does* have a
+ # different `llvm-svn:` string than we should have.
+ sha = self.rev_to_sha_with_round_trip(
+ git_llvm_rev.Rev(branch="upstream/release/9.x", number=366427)
+ )
+ self.assertEqual(sha, "2cf681a11aea459b50d712abc7136f7129e4d57f")
# FIXME: When release/10.x happens, it may be nice to have a test-case
# generally covering that, since it's the first branch that we have to travel
# back to the base commit for.
-if __name__ == '__main__':
- llvm_project.ensure_up_to_date()
- unittest.main()
+if __name__ == "__main__":
+ llvm_project.ensure_up_to_date()
+ unittest.main()