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

Unified Diff: tools/push-to-trunk/test_scripts.py

Issue 540973002: Add cwd to all shell commands in auto roll scripts. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 3 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
« no previous file with comments | « tools/push-to-trunk/releases.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 8c69b7a74db0d0090920278cfc2dd3797ca47c27..95fe01a14d107f81a6b7dee23170da2ce313990b 100644
--- a/tools/push-to-trunk/test_scripts.py
+++ b/tools/push-to-trunk/test_scripts.py
@@ -27,6 +27,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import os
+import shutil
import tempfile
import traceback
import unittest
@@ -44,7 +45,6 @@ import push_to_trunk
from push_to_trunk import *
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
@@ -56,6 +56,7 @@ from auto_tag import AutoTag
TEST_CONFIG = {
+ "DEFAULT_CWD": "[DEFAULT_CWD]",
BRANCHNAME: "test-prepare-push",
TRUNKBRANCH: "test-trunk-push",
PERSISTFILE_BASENAME: "/tmp/test-v8-push-to-trunk-tempfile",
@@ -66,7 +67,6 @@ TEST_CONFIG = {
PATCH_FILE: "/tmp/test-v8-push-to-trunk-tempfile-patch",
COMMITMSG_FILE: "/tmp/test-v8-push-to-trunk-tempfile-commitmsg",
CHROMIUM: "/tmp/test-v8-push-to-trunk-tempfile-chromium",
- DEPS_FILE: "/tmp/test-v8-push-to-trunk-tempfile-chromium/DEPS",
SETTINGS_LOCATION: None,
ALREADY_MERGING_SENTINEL_FILE:
"/tmp/test-merge-to-branch-tempfile-already-merging",
@@ -259,12 +259,19 @@ def Cmd(*args, **kwargs):
"args": args,
"ret": args[-1],
"cb": kwargs.get("cb"),
+ "cwd": kwargs.get("cwd", "[DEFAULT_CWD]"),
}
def RL(text, cb=None):
"""Convenience function returning a readline test expectation."""
- return {"name": "readline", "args": [], "ret": text, "cb": cb}
+ return {
+ "name": "readline",
+ "args": [],
+ "ret": text,
+ "cb": cb,
+ "cwd": None,
+ }
def URL(*args, **kwargs):
@@ -274,6 +281,7 @@ def URL(*args, **kwargs):
"args": args[:-1],
"ret": args[-1],
"cb": kwargs.get("cb"),
+ "cwd": None,
}
@@ -285,7 +293,7 @@ class SimpleMock(object):
def Expect(self, recipe):
self._recipe = recipe
- def Call(self, name, *args): # pragma: no cover
+ def Call(self, name, *args, **kwargs): # pragma: no cover
self._index += 1
try:
expected_call = self._recipe[self._index]
@@ -300,6 +308,14 @@ class SimpleMock(object):
raise NoRetryException("Expected action: %s %s - Actual: %s" %
(expected_call["name"], expected_call["args"], name))
+ # Check if the given working directory matches the expected one.
+ if expected_call["cwd"] != kwargs.get("cwd"):
+ raise NoRetryException("Expected cwd: %s in %s %s - Actual: %s" %
+ (expected_call["cwd"],
+ expected_call["name"],
+ expected_call["args"],
+ kwargs.get("cwd")))
+
# The number of arguments in the expectation must match the actual
# arguments.
if len(args) > len(expected_call['args']):
@@ -340,6 +356,12 @@ class ScriptTest(unittest.TestCase):
self._tmp_files.append(name)
return name
+ def MakeEmptyTempDirectory(self):
+ name = tempfile.mkdtemp()
+ self._tmp_files.append(name)
+ return name
+
+
def WriteFakeVersionFile(self, minor=22, build=4, patch=0):
with open(TEST_CONFIG[VERSION_FILE], "w") as f:
f.write(" // Some line...\n")
@@ -366,9 +388,10 @@ class ScriptTest(unittest.TestCase):
def Call(self, fun, *args, **kwargs):
print "Calling %s with %s and %s" % (str(fun), str(args), str(kwargs))
- def Command(self, cmd, args="", prefix="", pipe=True):
+ def Command(self, cmd, args="", prefix="", pipe=True, cwd=None):
print "%s %s" % (cmd, args)
- return self._mock.Call("command", cmd + " " + args)
+ print "in %s" % cwd
+ return self._mock.Call("command", cmd + " " + args, cwd=cwd)
def ReadLine(self):
return self._mock.Call("readline")
@@ -403,18 +426,18 @@ class ScriptTest(unittest.TestCase):
self._state = {}
def tearDown(self):
- Command("rm", "-rf %s*" % TEST_CONFIG[PERSISTFILE_BASENAME])
+ if os.path.exists(TEST_CONFIG[PERSISTFILE_BASENAME]):
+ shutil.rmtree(TEST_CONFIG[PERSISTFILE_BASENAME])
# Clean up temps. Doesn't work automatically.
for name in self._tmp_files:
- if os.path.exists(name):
+ if os.path.isfile(name):
os.remove(name)
+ if os.path.isdir(name):
+ shutil.rmtree(name)
self._mock.AssertFinished()
- def testGitOrig(self):
- self.assertTrue(Command("git", "--version").startswith("git version"))
-
def testGitMock(self):
self.Expect([Cmd("git --version", "git version 1.2.3"),
Cmd("git dummy", "")])
@@ -462,6 +485,9 @@ class ScriptTest(unittest.TestCase):
def testInitialEnvironmentChecks(self):
TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile()
os.environ["EDITOR"] = "vi"
+ self.Expect([
+ Cmd("which vi", "/usr/bin/vi"),
+ ])
self.MakeStep().InitialEnvironmentChecks()
def testReadAndPersistVersion(self):
@@ -711,7 +737,10 @@ Performance and stability improvements on all platforms.""", commit)
change_log)
force_flag = " -f" if not manual else ""
- expectations = [
+ expectations = []
+ if not force:
+ expectations.append(Cmd("which vi", "/usr/bin/vi"))
+ expectations += [
Cmd("git status -s -uno", ""),
Cmd("git status -s -b -uno", "## some_branch\n"),
Cmd("git svn fetch", ""),
@@ -827,16 +856,18 @@ def list_to_dict(entries):
def get_list():
pass""")
+ # Setup fake directory structures.
TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile()
- if not os.path.exists(TEST_CONFIG[CHROMIUM]):
- os.makedirs(TEST_CONFIG[CHROMIUM])
- if not os.path.exists(os.path.join(TEST_CONFIG[CHROMIUM], "v8")):
- os.makedirs(os.path.join(TEST_CONFIG[CHROMIUM], "v8"))
+ TEST_CONFIG[CHROMIUM] = self.MakeEmptyTempDirectory()
+ chrome_dir = TEST_CONFIG[CHROMIUM]
+ os.makedirs(os.path.join(chrome_dir, "v8"))
+
+ # Write fake deps file.
TextToFile("Some line\n \"v8_revision\": \"123444\",\n some line",
- TEST_CONFIG[DEPS_FILE])
+ os.path.join(chrome_dir, "DEPS"))
def WriteDeps():
TextToFile("Some line\n \"v8_revision\": \"22624\",\n some line",
- TEST_CONFIG[DEPS_FILE])
+ os.path.join(chrome_dir, "DEPS"))
expectations = [
Cmd("git fetch origin", ""),
@@ -848,29 +879,30 @@ def get_list():
"Version 3.22.5 (based on bleeding_edge revision r22622)\n"),
URL("https://chromium-build.appspot.com/p/chromium/sheriff_v8.js",
"document.write('g_name')"),
- Cmd("git status -s -uno", ""),
- Cmd("git checkout -f master", ""),
- Cmd("gclient sync --nohooks", "syncing..."),
- Cmd("git pull", ""),
+ Cmd("git status -s -uno", "", cwd=chrome_dir),
+ Cmd("git checkout -f master", "", cwd=chrome_dir),
+ Cmd("gclient sync --nohooks", "syncing...", cwd=chrome_dir),
+ Cmd("git pull", "", cwd=chrome_dir),
Cmd("git fetch origin", ""),
- Cmd("git checkout -b v8-roll-22624", ""),
- Cmd("roll-dep v8 22624", "rolled", cb=WriteDeps),
+ Cmd("git checkout -b v8-roll-22624", "", cwd=chrome_dir),
+ Cmd("roll-dep v8 22624", "rolled", cb=WriteDeps, cwd=chrome_dir),
Cmd(("git commit -am \"Update V8 to version 3.22.5 "
"(based on bleeding_edge revision r22622).\n\n"
"Please reply to the V8 sheriff c_name@chromium.org in "
"case of problems.\n\nTBR=c_name@chromium.org\" "
"--author \"author@chromium.org <author@chromium.org>\""),
- ""),
- Cmd("git cl upload --send-mail --email \"author@chromium.org\" -f", ""),
+ "", cwd=chrome_dir),
+ Cmd("git cl upload --send-mail --email \"author@chromium.org\" -f", "",
+ cwd=chrome_dir),
]
self.Expect(expectations)
- args = ["-a", "author@chromium.org", "-c", TEST_CONFIG[CHROMIUM],
+ args = ["-a", "author@chromium.org", "-c", chrome_dir,
"--sheriff", "--googlers-mapping", googlers_mapping_py,
"-r", "reviewer@chromium.org"]
ChromiumRoll(TEST_CONFIG, self).Run(args)
- deps = FileToText(TEST_CONFIG[DEPS_FILE])
+ deps = FileToText(os.path.join(chrome_dir, "DEPS"))
self.assertTrue(re.search("\"v8_revision\": \"22624\"", deps))
def testCheckLastPushRecently(self):
@@ -955,7 +987,7 @@ def get_list():
result = auto_roll.AutoRoll(TEST_CONFIG, self).Run(
AUTO_PUSH_ARGS + ["-c", TEST_CONFIG[CHROMIUM]])
- self.assertEquals(1, result)
+ self.assertEquals(0, result)
# Snippet from the original DEPS file.
FAKE_DEPS = """
@@ -970,7 +1002,7 @@ deps = {
"""
def testAutoRollUpToDate(self):
- os.makedirs(TEST_CONFIG[CHROMIUM])
+ TEST_CONFIG[CHROMIUM] = self.MakeEmptyTempDirectory()
TextToFile(self.FAKE_DEPS, os.path.join(TEST_CONFIG[CHROMIUM], "DEPS"))
self.Expect([
URL("https://codereview.chromium.org/search",
@@ -985,10 +1017,10 @@ deps = {
result = auto_roll.AutoRoll(TEST_CONFIG, self).Run(
AUTO_PUSH_ARGS + ["-c", TEST_CONFIG[CHROMIUM]])
- self.assertEquals(1, result)
+ self.assertEquals(0, result)
def testAutoRoll(self):
- os.makedirs(TEST_CONFIG[CHROMIUM])
+ TEST_CONFIG[CHROMIUM] = self.MakeEmptyTempDirectory()
TextToFile(self.FAKE_DEPS, os.path.join(TEST_CONFIG[CHROMIUM], "DEPS"))
TEST_CONFIG[CLUSTERFUZZ_API_KEY_FILE] = self.MakeEmptyTempFile()
TextToFile("fake key", TEST_CONFIG[CLUSTERFUZZ_API_KEY_FILE])
@@ -1194,13 +1226,13 @@ git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3456 0039-1c4b
self.WriteFakeVersionFile()
TEST_CONFIG[DOT_GIT_LOCATION] = self.MakeEmptyTempFile()
- if not os.path.exists(TEST_CONFIG[CHROMIUM]):
- os.makedirs(TEST_CONFIG[CHROMIUM])
- if not os.path.exists(os.path.join(TEST_CONFIG[CHROMIUM], "v8")):
- os.makedirs(os.path.join(TEST_CONFIG[CHROMIUM], "v8"))
+ TEST_CONFIG[CHROMIUM] = self.MakeEmptyTempDirectory()
+ chrome_dir = TEST_CONFIG[CHROMIUM]
+ chrome_v8_dir = os.path.join(chrome_dir, "v8")
+ os.makedirs(chrome_v8_dir)
def WriteDEPS(revision):
TextToFile("Line\n \"v8_revision\": \"%s\",\n line\n" % revision,
- TEST_CONFIG[DEPS_FILE])
+ os.path.join(chrome_dir, "DEPS"))
WriteDEPS(567)
def ResetVersion(minor, build, patch=0):
@@ -1262,34 +1294,38 @@ git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3456 0039-1c4b
Cmd("git svn find-rev r22624", "hash_22624"),
Cmd("git svn find-rev hash_22624", "22624"),
Cmd("git log -1 --format=%ci hash_22624", "02:34"),
- Cmd("git status -s -uno", ""),
- Cmd("git checkout -f master", ""),
- Cmd("git pull", ""),
- Cmd("git checkout -b %s" % TEST_CONFIG[BRANCHNAME], ""),
- Cmd("git fetch origin", ""),
- Cmd("git log --format=%H --grep=\"V8\"", "c_hash1\nc_hash2\nc_hash3\n"),
- Cmd("git diff --name-only c_hash1 c_hash1^", ""),
- Cmd("git diff --name-only c_hash2 c_hash2^", TEST_CONFIG[DEPS_FILE]),
- Cmd("git checkout -f c_hash2 -- %s" % TEST_CONFIG[DEPS_FILE], "",
- cb=ResetDEPS("0123456789012345678901234567890123456789")),
- Cmd("git log -1 --format=%B c_hash2", c_hash2_commit_log),
+ Cmd("git status -s -uno", "", cwd=chrome_dir),
+ Cmd("git checkout -f master", "", cwd=chrome_dir),
+ Cmd("git pull", "", cwd=chrome_dir),
+ Cmd("git checkout -b %s" % TEST_CONFIG[BRANCHNAME], "", cwd=chrome_dir),
+ Cmd("git fetch origin", "", cwd=chrome_v8_dir),
+ Cmd("git log --format=%H --grep=\"V8\"", "c_hash1\nc_hash2\nc_hash3\n",
+ cwd=chrome_dir),
+ Cmd("git diff --name-only c_hash1 c_hash1^", "", cwd=chrome_dir),
+ Cmd("git diff --name-only c_hash2 c_hash2^", "DEPS", cwd=chrome_dir),
+ Cmd("git checkout -f c_hash2 -- DEPS", "",
+ cb=ResetDEPS("0123456789012345678901234567890123456789"),
+ cwd=chrome_dir),
+ Cmd("git log -1 --format=%B c_hash2", c_hash2_commit_log,
+ cwd=chrome_dir),
Cmd("git rev-list -n 1 0123456789012345678901234567890123456789",
- "0123456789012345678901234567890123456789"),
+ "0123456789012345678901234567890123456789", cwd=chrome_v8_dir),
Cmd("git log -1 --format=%B 0123456789012345678901234567890123456789",
- self.C_V8_22624_LOG),
- Cmd("git diff --name-only c_hash3 c_hash3^", TEST_CONFIG[DEPS_FILE]),
- Cmd("git checkout -f c_hash3 -- %s" % TEST_CONFIG[DEPS_FILE], "",
- cb=ResetDEPS(345)),
- Cmd("git log -1 --format=%B c_hash3", c_hash3_commit_log),
- Cmd("git checkout -f HEAD -- %s" % TEST_CONFIG[DEPS_FILE], "",
- cb=ResetDEPS(567)),
- Cmd("git branch -r", " weird/123\n branch-heads/7\n"),
- Cmd("git checkout -f branch-heads/7 -- %s" % TEST_CONFIG[DEPS_FILE], "",
- cb=ResetDEPS(345)),
- Cmd("git checkout -f HEAD -- %s" % TEST_CONFIG[DEPS_FILE], "",
- cb=ResetDEPS(567)),
- Cmd("git checkout -f master", ""),
- Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], ""),
+ self.C_V8_22624_LOG, cwd=chrome_v8_dir),
+ Cmd("git diff --name-only c_hash3 c_hash3^", "DEPS", cwd=chrome_dir),
+ Cmd("git checkout -f c_hash3 -- DEPS", "", cb=ResetDEPS(345),
+ cwd=chrome_dir),
+ Cmd("git log -1 --format=%B c_hash3", c_hash3_commit_log,
+ cwd=chrome_dir),
+ Cmd("git checkout -f HEAD -- DEPS", "", cb=ResetDEPS(567),
+ cwd=chrome_dir),
+ Cmd("git branch -r", " weird/123\n branch-heads/7\n", cwd=chrome_dir),
+ Cmd("git checkout -f branch-heads/7 -- DEPS", "", cb=ResetDEPS(345),
+ cwd=chrome_dir),
+ Cmd("git checkout -f HEAD -- DEPS", "", cb=ResetDEPS(567),
+ cwd=chrome_dir),
+ Cmd("git checkout -f master", "", cwd=chrome_dir),
+ Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], "", cwd=chrome_dir),
Cmd("git checkout -f some_branch", ""),
Cmd("git branch -D %s" % TEST_CONFIG[BRANCHNAME], ""),
])
@@ -1439,7 +1475,7 @@ git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3456 0039-1c4b
TEST_CONFIG[VERSION_FILE]),
])
- self.assertEquals(1,
+ self.assertEquals(0,
self.RunStep(BumpUpVersion, LastChangeBailout, ["--dry_run"]))
# Test that we bail out if the lkgr was a version change.
@@ -1452,7 +1488,7 @@ git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3456 0039-1c4b
TEST_CONFIG[VERSION_FILE]),
])
- self.assertEquals(1,
+ self.assertEquals(0,
self.RunStep(BumpUpVersion, LKGRVersionUpToDateBailout, ["--dry_run"]))
# Test that we bail out if the last version is already newer than the lkgr's
@@ -1467,7 +1503,7 @@ git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3456 0039-1c4b
Cmd("git diff --name-only lkgr_hash lkgr_hash^", ""),
])
- self.assertEquals(1,
+ self.assertEquals(0,
self.RunStep(BumpUpVersion, LKGRVersionUpToDateBailout, ["--dry_run"]))
« no previous file with comments | « tools/push-to-trunk/releases.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698