Index: tools/push-to-trunk/test_scripts.py |
diff --git a/tools/push-to-trunk/test_scripts.py b/tools/push-to-trunk/test_scripts.py |
index 2df45300197a4c7b120123fbb2db983ded565fc3..34f4c9326d84167ed966efbd321078ecd52b7710 100644 |
--- a/tools/push-to-trunk/test_scripts.py |
+++ b/tools/push-to-trunk/test_scripts.py |
@@ -45,6 +45,8 @@ import chromium_roll |
from chromium_roll import CHROMIUM |
from chromium_roll import DEPS_FILE |
from chromium_roll import ChromiumRoll |
+import releases |
+from releases import Releases |
TEST_CONFIG = { |
@@ -75,6 +77,38 @@ AUTO_PUSH_ARGS = [ |
class ToplevelTest(unittest.TestCase): |
+ def testSortBranches(self): |
+ S = releases.SortBranches |
+ self.assertEquals(["3.1", "2.25"], S(["2.25", "3.1"])[0:2]) |
+ self.assertEquals(["3.0", "2.25"], S(["2.25", "3.0", "2.24"])[0:2]) |
+ self.assertEquals(["3.11", "3.2"], S(["3.11", "3.2", "2.24"])[0:2]) |
+ |
+ def testFilterDuplicatesAndReverse(self): |
+ F = releases.FilterDuplicatesAndReverse |
+ self.assertEquals([], F([])) |
+ self.assertEquals([["100", "10"]], F([["100", "10"]])) |
+ self.assertEquals([["99", "9"], ["100", "10"]], |
+ F([["100", "10"], ["99", "9"]])) |
+ self.assertEquals([["98", "9"], ["100", "10"]], |
+ F([["100", "10"], ["99", "9"], ["98", "9"]])) |
+ self.assertEquals([["98", "9"], ["99", "10"]], |
+ F([["100", "10"], ["99", "10"], ["98", "9"]])) |
+ |
+ def testBuildRevisionRanges(self): |
+ B = releases.BuildRevisionRanges |
+ self.assertEquals({}, B([])) |
+ self.assertEquals({"10": "100"}, B([["100", "10"]])) |
+ self.assertEquals({"10": "100", "9": "99:99"}, |
+ B([["100", "10"], ["99", "9"]])) |
+ self.assertEquals({"10": "100", "9": "97:99"}, |
+ B([["100", "10"], ["98", "9"], ["97", "9"]])) |
+ self.assertEquals({"10": "100", "9": "99:99", "3": "91:98"}, |
+ B([["100", "10"], ["99", "9"], ["91", "3"]])) |
+ self.assertEquals({"13": "101", "12": "100:100", "9": "94:97", |
+ "3": "91:93,98:99"}, |
+ B([["101", "13"], ["100", "12"], ["98", "3"], |
+ ["94", "9"], ["91", "3"]])) |
+ |
def testMakeComment(self): |
self.assertEquals("# Line 1\n# Line 2\n#", |
MakeComment(" Line 1\n Line 2\n")) |
@@ -297,14 +331,14 @@ class ScriptTest(unittest.TestCase): |
self._tmp_files.append(name) |
return name |
- def WriteFakeVersionFile(self, build=4): |
+ def WriteFakeVersionFile(self, minor=22, build=4, patch=0): |
with open(TEST_CONFIG[VERSION_FILE], "w") as f: |
f.write(" // Some line...\n") |
f.write("\n") |
f.write("#define MAJOR_VERSION 3\n") |
- f.write("#define MINOR_VERSION 22\n") |
+ f.write("#define MINOR_VERSION %s\n" % minor) |
f.write("#define BUILD_NUMBER %s\n" % build) |
- f.write("#define PATCH_LEVEL 0\n") |
+ f.write("#define PATCH_LEVEL %s\n" % patch) |
f.write(" // Some line...\n") |
f.write("#define IS_CANDIDATE_VERSION 0\n") |
@@ -1116,6 +1150,107 @@ LOG=N |
args += ["-s", "3"] |
MergeToBranch(TEST_CONFIG, self).Run(args) |
+ def testReleases(self): |
+ json_output = self.MakeEmptyTempFile() |
+ csv_output = self.MakeEmptyTempFile() |
+ TEST_CONFIG[VERSION_FILE] = self.MakeEmptyTempFile() |
+ self.WriteFakeVersionFile() |
+ |
+ TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile() |
+ if not os.path.exists(TEST_CONFIG[CHROMIUM]): |
+ os.makedirs(TEST_CONFIG[CHROMIUM]) |
+ def WriteDEPS(revision): |
+ TextToFile("Line\n \"v8_revision\": \"%s\",\n line\n" % revision, |
+ TEST_CONFIG[DEPS_FILE]) |
+ WriteDEPS(567) |
+ |
+ def ResetVersion(minor, build, patch=0): |
+ return lambda: self.WriteFakeVersionFile(minor=minor, |
+ build=build, |
+ patch=patch) |
+ |
+ def ResetDEPS(revision): |
+ return lambda: WriteDEPS(revision) |
+ |
+ self.ExpectGit([ |
+ Git("status -s -uno", ""), |
+ Git("status -s -b -uno", "## some_branch\n"), |
+ Git("svn fetch", ""), |
+ Git("branch", " branch1\n* branch2\n"), |
+ Git("checkout -b %s" % TEST_CONFIG[TEMP_BRANCH], ""), |
+ Git("branch", " branch1\n* branch2\n"), |
+ Git("checkout -b %s" % TEST_CONFIG[BRANCHNAME], ""), |
+ Git("branch -r", " svn/3.21\n svn/3.3\n"), |
+ Git("reset --hard svn/3.3", ""), |
+ Git("log --format=%H", "hash1\nhash2"), |
+ Git("diff --name-only hash1 hash1^", ""), |
+ Git("diff --name-only hash2 hash2^", TEST_CONFIG[VERSION_FILE]), |
+ Git("checkout -f hash2 -- %s" % TEST_CONFIG[VERSION_FILE], "", |
+ cb=ResetVersion(3, 1, 1)), |
+ Git("log -1 --format=%B hash2", "Version 3.3.1.1 (merged 12)"), |
+ Git("log -1 --format=%s hash2", ""), |
+ Git("svn find-rev hash2", "234"), |
+ Git("checkout -f HEAD -- %s" % TEST_CONFIG[VERSION_FILE], "", |
+ cb=ResetVersion(22, 5)), |
+ Git("reset --hard svn/3.21", ""), |
+ Git("log --format=%H", "hash3\nhash4\nhash5\n"), |
+ Git("diff --name-only hash3 hash3^", TEST_CONFIG[VERSION_FILE]), |
+ Git("checkout -f hash3 -- %s" % TEST_CONFIG[VERSION_FILE], "", |
+ cb=ResetVersion(21, 2)), |
+ Git("log -1 --format=%s hash3", ""), |
+ Git("svn find-rev hash3", "123"), |
+ Git("checkout -f HEAD -- %s" % TEST_CONFIG[VERSION_FILE], "", |
+ cb=ResetVersion(22, 5)), |
+ Git("reset --hard svn/trunk", ""), |
+ Git("log --format=%H", "hash6\n"), |
+ Git("diff --name-only hash6 hash6^", TEST_CONFIG[VERSION_FILE]), |
+ Git("checkout -f hash6 -- %s" % TEST_CONFIG[VERSION_FILE], "", |
+ cb=ResetVersion(22, 3)), |
+ Git("log -1 --format=%s hash6", ""), |
+ Git("svn find-rev hash6", "345"), |
+ Git("checkout -f HEAD -- %s" % TEST_CONFIG[VERSION_FILE], "", |
+ cb=ResetVersion(22, 5)), |
+ Git("status -s -uno", ""), |
+ Git("checkout -f master", ""), |
+ Git("pull", ""), |
+ Git("checkout -b %s" % TEST_CONFIG[BRANCHNAME], ""), |
+ Git("log --format=%H --grep=\"V8\"", "c_hash1\nc_hash2\n"), |
+ Git("diff --name-only c_hash1 c_hash1^", ""), |
+ Git("diff --name-only c_hash2 c_hash2^", TEST_CONFIG[DEPS_FILE]), |
+ Git("checkout -f c_hash2 -- %s" % TEST_CONFIG[DEPS_FILE], "", |
+ cb=ResetDEPS(345)), |
+ Git("svn find-rev c_hash2", "4567"), |
+ Git("checkout -f HEAD -- %s" % TEST_CONFIG[DEPS_FILE], "", |
+ cb=ResetDEPS(567)), |
+ Git("checkout -f master", ""), |
+ Git("branch -D %s" % TEST_CONFIG[BRANCHNAME], ""), |
+ Git("checkout -f some_branch", ""), |
+ Git("branch -D %s" % TEST_CONFIG[TEMP_BRANCH], ""), |
+ Git("branch -D %s" % TEST_CONFIG[BRANCHNAME], ""), |
+ ]) |
+ |
+ args = ["-c", TEST_CONFIG[CHROMIUM], |
+ "--json", json_output, |
+ "--csv", csv_output, |
+ "--max-releases", "1"] |
+ Releases(TEST_CONFIG, self).Run(args) |
+ |
+ # Check expected output. |
+ csv = ("3.22.3,trunk,345,4567,\r\n" |
+ "3.21.2,3.21,123,,\r\n" |
+ "3.3.1.1,3.3,234,,12\r\n") |
+ self.assertEquals(csv, FileToText(csv_output)) |
+ |
+ expected_json = [ |
+ {"bleeding_edge": "", "patches_merged": "", "version": "3.22.3", |
+ "chromium_revision": "4567", "branch": "trunk", "revision": "345"}, |
+ {"patches_merged": "", "bleeding_edge": "", "version": "3.21.2", |
+ "branch": "3.21", "revision": "123"}, |
+ {"patches_merged": "12", "bleeding_edge": "", "version": "3.3.1.1", |
+ "branch": "3.3", "revision": "234"} |
+ ] |
+ self.assertEquals(expected_json, json.loads(FileToText(json_output))) |
+ |
class SystemTest(unittest.TestCase): |
def testReload(self): |