Index: tools/auto_bisect/bisect_perf_regression_test.py |
diff --git a/tools/auto_bisect/bisect_perf_regression_test.py b/tools/auto_bisect/bisect_perf_regression_test.py |
index b8bd98c445086f0e62970612d8133a0cab0ea7a6..f45516a27a3ae6c7774f91f8a36d9621ba3668d2 100644 |
--- a/tools/auto_bisect/bisect_perf_regression_test.py |
+++ b/tools/auto_bisect/bisect_perf_regression_test.py |
@@ -152,10 +152,12 @@ def _GenericDryRun(options, print_results=False): |
Returns: |
The results dictionary as returned by the bisect Run method. |
""" |
+ _AbortIfThereAreStagedChanges() |
# Disable rmtree to avoid deleting local trees. |
old_rmtree = shutil.rmtree |
+ shutil.rmtree = lambda path, on_error: None |
+ # git reset HEAD may be run during the dry run, which removes staged changes. |
try: |
- shutil.rmtree = lambda path, onerror: None |
bisect_instance = _GetBisectPerformanceMetricsInstance(options) |
results = bisect_instance.Run( |
bisect_instance.opts.command, bisect_instance.opts.bad_revision, |
@@ -169,6 +171,21 @@ def _GenericDryRun(options, print_results=False): |
shutil.rmtree = old_rmtree |
+def _AbortIfThereAreStagedChanges(): |
+ """Exits the test prematurely if there are staged changes.""" |
+ # The output of "git status --short" will be an empty string if there are |
+ # no staged changes in the current branch. Untracked files are ignored |
+ # because when running the presubmit on the trybot there are sometimes |
+ # untracked changes to the run-perf-test.cfg and bisect.cfg files. |
+ status_output = bisect_utils.CheckRunGit( |
+ ['status', '--short', '--untracked-files=no']) |
+ if status_output: |
+ print 'There are un-committed changes in the current branch.' |
+ print 'Aborting the tests to avoid destroying local changes. Changes:' |
+ print status_output |
+ sys.exit(1) |
+ |
+ |
class BisectPerfRegressionTest(unittest.TestCase): |
"""Test case for other functions and classes in bisect-perf-regression.py.""" |