diff options
author | Henrique Nakashima <hnakashima@chromium.org> | 2017-08-03 13:29:22 -0400 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-08-03 22:00:23 +0000 |
commit | f24fc1e69d77db16527de99bff192693878f4080 (patch) | |
tree | be79d47e1367cdee5ea7eef363addb5233d3b514 /testing/tools/githelper.py | |
parent | b35dbadce21f684619377ce545e066de6494a441 (diff) | |
download | pdfium-f24fc1e69d77db16527de99bff192693878f4080.tar.xz |
Add script to compare performance of two versions of pdfium.
Run from the pdfium root:
$ testing/tools/safetynet_compare.py testing
This compares the current branch with and without local changes.
$ testing/tools/safetynet_compare.py testing/corpus --branch-before x
This compares the current branch + local changes against branch x.
It runs only the corpus tests.
$ testing/tools/safetynet_compare.py testing --branch-before x
--branch-after y --build-dir=~/output_compare
This compares branch x and branch y. x and y can be revision hashes.
The callgrind.out files of cases with significant changes will be
created in ~/output_compare.
$ testing/tools/safetynet_compare.py -h
Print all options.
Change-Id: I43aaf5fe890745db611fb3bc00a656ef799fdfef
Reviewed-on: https://pdfium-review.googlesource.com/7390
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
Diffstat (limited to 'testing/tools/githelper.py')
-rw-r--r-- | testing/tools/githelper.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/testing/tools/githelper.py b/testing/tools/githelper.py new file mode 100644 index 0000000000..42cc57d304 --- /dev/null +++ b/testing/tools/githelper.py @@ -0,0 +1,50 @@ +# Copyright 2017 The PDFium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Classes for dealing with git.""" + +import subprocess + + +class GitHelper(object): + """Issues git commands. Stateful.""" + + def __init__(self): + self.stashed = 0 + + def Checkout(self, branch): + """Checks out a branch.""" + subprocess.check_output(['git', 'checkout', branch]) + + def StashPush(self): + """Stashes uncommitted changes.""" + output = subprocess.check_output(['git', 'stash', '--include-untracked']) + if 'No local changes to save' in output: + return False + + self.stashed += 1 + return True + + def StashPopAll(self): + """Pops as many changes as this instance stashed.""" + while self.stashed > 0: + subprocess.check_output(['git', 'stash', 'pop']) + self.stashed -= 1 + + def GetCurrentBranchName(self): + """Returns a string with the current branch name.""" + return subprocess.check_output( + ['git', 'rev-parse', '--abbrev-ref', 'HEAD']).strip() + + def BranchExists(self, branch_name): + """Return whether a branch with the given name exists.""" + try: + subprocess.check_output(['git', 'rev-parse', '--verify', + branch_name]) + return True + except subprocess.CalledProcessError: + return False + + def CloneLocal(self, source_repo, new_repo): + subprocess.check_call(['git', 'clone', source_repo, new_repo]) |