diff --git a/git_hyper_blame.py b/git_hyper_blame.py index 246ccb21d4..b24df5f6b5 100755 --- a/git_hyper_blame.py +++ b/git_hyper_blame.py @@ -345,6 +345,7 @@ def main(args, stdout=sys.stdout, stderr=sys.stderr): type=argparse.FileType('r'), dest='ignore_file', help='a file containing a list of revisions to ignore') parser.add_argument('--no-default-ignores', dest='no_default_ignores', + action='store_true', help='Do not ignore commits from .git-blame-ignore-revs.') parser.add_argument('revision', nargs='?', default='HEAD', metavar='REVISION', help='revision to look at') diff --git a/tests/git_hyper_blame_test.py b/tests/git_hyper_blame_test.py index e646edcbb3..17c4d3bb18 100755 --- a/tests/git_hyper_blame_test.py +++ b/tests/git_hyper_blame_test.py @@ -217,6 +217,26 @@ class GitHyperBlameMainTest(GitHyperBlameTestBase): self.assertEqual(expected_output, stdout.getvalue().rstrip().split('\n')) self.assertEqual('', stderr.getvalue()) + def testNoDefaultIgnores(self): + """Tests the --no-default-ignores switch.""" + # Check out revision D. This has a .git-blame-ignore-revs file, which we + # expect to be ignored due to --no-default-ignores. + self.repo.git('checkout', '-f', 'tag_D') + + expected_output = [self.blame_line('C', '1) line 1.1'), + self.blame_line('B', '2) line 2.1')] + stdout = StringIO.StringIO() + stderr = StringIO.StringIO() + + retval = self.repo.run( + self.git_hyper_blame.main, + args=['tag_D', 'some/files/file', '--no-default-ignores'], + stdout=stdout, stderr=stderr) + + self.assertEqual(0, retval) + self.assertEqual(expected_output, stdout.getvalue().rstrip().split('\n')) + self.assertEqual('', stderr.getvalue()) + class GitHyperBlameSimpleTest(GitHyperBlameTestBase): REPO_SCHEMA = """ A B D E F G H