| Index: extensions/browser/PRESUBMIT_test.py
|
| diff --git a/extensions/browser/PRESUBMIT_test.py b/extensions/browser/PRESUBMIT_test.py
|
| deleted file mode 100755
|
| index 99cabf53c82b172083ab0c3350443d9fa4edc418..0000000000000000000000000000000000000000
|
| --- a/extensions/browser/PRESUBMIT_test.py
|
| +++ /dev/null
|
| @@ -1,236 +0,0 @@
|
| -#!/usr/bin/env python
|
| -# Copyright 2014 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -import difflib
|
| -import os
|
| -import re
|
| -import unittest
|
| -
|
| -import PRESUBMIT
|
| -
|
| -class MockLogging(object):
|
| - def __init__(self):
|
| - self.lines = []
|
| -
|
| - def info(self, message):
|
| - self.lines.append(message)
|
| -
|
| - def debug(self, message):
|
| - self.lines.append(message)
|
| -
|
| -class MockInputApi(object):
|
| - def __init__(self):
|
| - self.re = re
|
| - self.os_path = os.path
|
| - self.files = []
|
| - self.is_committing = False
|
| - self.logging = MockLogging()
|
| -
|
| - def AffectedFiles(self, include_deletes=None):
|
| - return self.files
|
| -
|
| -
|
| -class MockOutputApi(object):
|
| - class PresubmitResult(object):
|
| - def __init__(self, message, items=None, long_text=''):
|
| - self.message = message
|
| - self.items = items
|
| - self.long_text = long_text
|
| -
|
| - class PresubmitError(PresubmitResult):
|
| - def __init__(self, message, items, long_text=''):
|
| - MockOutputApi.PresubmitResult.__init__(self, message, items, long_text)
|
| - self.type = 'error'
|
| -
|
| - class PresubmitPromptWarning(PresubmitResult):
|
| - def __init__(self, message, items, long_text=''):
|
| - MockOutputApi.PresubmitResult.__init__(self, message, items, long_text)
|
| - self.type = 'warning'
|
| -
|
| - class PresubmitNotifyResult(PresubmitResult):
|
| - def __init__(self, message, items, long_text=''):
|
| - MockOutputApi.PresubmitResult.__init__(self, message, items, long_text)
|
| - self.type = 'notify'
|
| -
|
| -
|
| -class MockFile(object):
|
| - def __init__(self, local_path, old_contents, new_contents):
|
| - self._local_path = local_path
|
| - self._new_contents = new_contents
|
| - self._old_contents = old_contents
|
| - self._cached_changed_contents = None
|
| -
|
| - def ChangedContents(self):
|
| - return self._changed_contents
|
| -
|
| - def NewContents(self):
|
| - return self._new_contents
|
| -
|
| - def LocalPath(self):
|
| - return self._local_path
|
| -
|
| - def IsDirectory(self):
|
| - return False
|
| -
|
| - def GenerateScmDiff(self):
|
| - result = ""
|
| - for line in difflib.unified_diff(self._old_contents, self._new_contents,
|
| - self._local_path, self._local_path):
|
| - result += line
|
| - return result
|
| -
|
| - # NOTE: This method is a copy of ChangeContents method of AffectedFile in
|
| - # presubmit_support.py
|
| - def ChangedContents(self):
|
| - """Returns a list of tuples (line number, line text) of all new lines.
|
| -
|
| - This relies on the scm diff output describing each changed code section
|
| - with a line of the form
|
| -
|
| - ^@@ <old line num>,<old size> <new line num>,<new size> @@$
|
| - """
|
| - if self._cached_changed_contents is not None:
|
| - return self._cached_changed_contents[:]
|
| - self._cached_changed_contents = []
|
| - line_num = 0
|
| -
|
| - if self.IsDirectory():
|
| - return []
|
| -
|
| - for line in self.GenerateScmDiff().splitlines():
|
| - m = re.match(r'^@@ [0-9\,\+\-]+ \+([0-9]+)\,[0-9]+ @@', line)
|
| - if m:
|
| - line_num = int(m.groups(1)[0])
|
| - continue
|
| - if line.startswith('+') and not line.startswith('++'):
|
| - self._cached_changed_contents.append((line_num, line[1:]))
|
| - if not line.startswith('-'):
|
| - line_num += 1
|
| - return self._cached_changed_contents[:]
|
| -
|
| -
|
| -class MockChange(object):
|
| - def __init__(self, changed_files):
|
| - self._changed_files = changed_files
|
| -
|
| - def LocalPaths(self):
|
| - return self._changed_files
|
| -
|
| -
|
| -class HistogramValueCheckerTest(unittest.TestCase):
|
| - TEST_FILE_PATTERN = "PRESUBMIT_test_new_file_%s.txt"
|
| -
|
| - def _ReadTextFileContents(self, path):
|
| - """Given a path, returns a list of strings corresponding to the text lines
|
| - in the file. Reads files in text format.
|
| -
|
| - """
|
| - fo = open(path, 'r')
|
| - try:
|
| - contents = fo.readlines()
|
| - finally:
|
| - fo.close()
|
| - return contents
|
| -
|
| - def _ReadInputFile(self):
|
| - return self._ReadTextFileContents("PRESUBMIT_test_old_file.txt")
|
| -
|
| - def _PrepareTest(self, new_file_path):
|
| - old_contents = self._ReadInputFile()
|
| - if not new_file_path:
|
| - new_contents = []
|
| - else:
|
| - new_contents = self._ReadTextFileContents(new_file_path)
|
| - input_api = MockInputApi()
|
| - mock_file = MockFile(PRESUBMIT.HistogramValueChecker.LOCAL_PATH,
|
| - old_contents,
|
| - new_contents)
|
| - input_api.files.append(mock_file)
|
| - output_api = MockOutputApi()
|
| - return input_api, output_api
|
| -
|
| - def _RunTest(self, new_file_path):
|
| - input_api, output_api = self._PrepareTest(new_file_path)
|
| - checker = PRESUBMIT.HistogramValueChecker(input_api, output_api)
|
| - results = checker.Run()
|
| - return results
|
| -
|
| - def testDeleteFile(self):
|
| - results = self._RunTest(new_file_path=None)
|
| - # TODO(rpaquay) How to check it's the expected warning?'
|
| - self.assertEquals(1, len(results),
|
| - "We hould get a single warning about file deletion.")
|
| -
|
| - def testSimpleValidEdit(self):
|
| - results = self._RunTest(self.TEST_FILE_PATTERN % "1")
|
| - # TODO(rpaquay) How to check it's the expected warning?'
|
| - self.assertEquals(0, len(results),
|
| - "We should get no warning for simple edits.")
|
| -
|
| - def testSingleDeletionOfEntry(self):
|
| - results = self._RunTest(self.TEST_FILE_PATTERN % "2")
|
| - # TODO(rpaquay) How to check it's the expected warning?'
|
| - self.assertEquals(1, len(results),
|
| - "We should get a warning for an entry deletion.")
|
| -
|
| - def testSingleRenameOfEntry(self):
|
| - results = self._RunTest(self.TEST_FILE_PATTERN % "3")
|
| - # TODO(rpaquay) How to check it's the expected warning?'
|
| - self.assertEquals(1, len(results),
|
| - "We should get a warning for an entry rename, even "
|
| - "though it is not optimal.")
|
| -
|
| - def testMissingEnumStartOfEntry(self):
|
| - results = self._RunTest(self.TEST_FILE_PATTERN % "4")
|
| - # TODO(rpaquay) How to check it's the expected warning?'
|
| - self.assertEquals(1, len(results),
|
| - "We should get a warning for a missing enum marker.")
|
| -
|
| - def testMissingEnumEndOfEntry(self):
|
| - results = self._RunTest(self.TEST_FILE_PATTERN % "5")
|
| - # TODO(rpaquay) How to check it's the expected warning?'
|
| - self.assertEquals(1, len(results),
|
| - "We should get a warning for a missing enum marker.")
|
| -
|
| - def testInvertedEnumMarkersOfEntry(self):
|
| - results = self._RunTest(self.TEST_FILE_PATTERN % "6")
|
| - # TODO(rpaquay) How to check it's the expected warning?'
|
| - self.assertEquals(1, len(results),
|
| - "We should get a warning for inverted enum markers.")
|
| -
|
| - def testMultipleInvalidEdits(self):
|
| - results = self._RunTest(self.TEST_FILE_PATTERN % "7")
|
| - # TODO(rpaquay) How to check it's the expected warning?'
|
| - self.assertEquals(3, len(results),
|
| - "We should get 3 warnings (one per edit).")
|
| -
|
| - def testSingleInvalidInserts(self):
|
| - results = self._RunTest(self.TEST_FILE_PATTERN % "8")
|
| - # TODO(rpaquay) How to check it's the expected warning?'
|
| - self.assertEquals(1, len(results),
|
| - "We should get a warning for a single invalid "
|
| - "insertion inside the enum.")
|
| -
|
| - def testMulitpleValidInserts(self):
|
| - results = self._RunTest(self.TEST_FILE_PATTERN % "9")
|
| - # TODO(rpaquay) How to check it's the expected warning?'
|
| - self.assertEquals(0, len(results),
|
| - "We should not get a warning mulitple valid edits")
|
| -
|
| - def testSingleValidDeleteOutsideOfEnum(self):
|
| - results = self._RunTest(self.TEST_FILE_PATTERN % "10")
|
| - # TODO(rpaquay) How to check it's the expected warning?'
|
| - self.assertEquals(0, len(results),
|
| - "We should not get a warning for a deletion outside of "
|
| - "the enum")
|
| -
|
| - def testCommentIsNotEnumEndMarker(self):
|
| - results = self._RunTest(self.TEST_FILE_PATTERN % "11")
|
| - self.assertEquals(1, len(results),
|
| - "We should get a warning if '// Last Entry' is not the "
|
| - "enum end marker")
|
| -
|
| -if __name__ == '__main__':
|
| - unittest.main()
|
|
|