Index: chrome/browser/resources/PRESUBMIT_test.py |
diff --git a/chrome/browser/resources/PRESUBMIT_test.py b/chrome/browser/resources/PRESUBMIT_test.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..eccd5c9f29d78ae6df6464d16b95c1315eb816e2 |
--- /dev/null |
+++ b/chrome/browser/resources/PRESUBMIT_test.py |
@@ -0,0 +1,100 @@ |
+# 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 os |
+import sys |
+import imp |
+import tempfile |
+import unittest |
+import PRESUBMIT |
+ |
+sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname( |
+ os.path.abspath(__file__)))))) |
+from PRESUBMIT_test_mocks import MockFile, MockInputApi, MockOutputApi |
+ |
+class HTMLActionAdditionTest(unittest.TestCase): |
+ |
+ def testActionXMLChanged(self): |
+ mock_input_api = MockInputApi() |
+ mock_input_api.files = [ |
+ MockFile('path/valid.html', ''), |
+ MockFile('actions.xml', '') ] |
+ |
+ action_xml_path = self._createActionXMLFile() |
+ self.assertEqual([], PRESUBMIT.CheckUserActionUpdate(mock_input_api, |
+ MockOutputApi(), |
+ action_xml_path)) |
+ |
+ def testValidChange_StartOfLine(self): |
+ lines = ['<input id="testinput" pref="testpref"', |
+ 'metric="validaction" type="checkbox" dialog-pref>'] |
+ self.assertEqual([], self._testChange(lines)) |
+ |
+ def testValidChange_StartsWithSpace(self): |
+ lines = ['<input id="testinput" pref="testpref"', |
+ ' metric="validaction" type="checkbox" dialog-pref>'] |
+ self.assertEqual([], self._testChange(lines)) |
+ |
+ def testValidChange_Radio(self): |
+ lines = ['<input id="testinput" pref="testpref"', |
+ ' metric="validaction" type="radio" dialog-pref value="true">'] |
+ self.assertEqual([], self._testChange(lines)) |
+ |
+ def testValidChange_UsingDatatype(self): |
+ lines = ['<input id="testinput" pref="testpref"', |
+ ' metric="validaction" datatype="boolean" dialog-pref>'] |
+ self.assertEqual([], self._testChange(lines)) |
+ |
+ def testValidChange_NotBoolean(self): |
+ lines = ['<input id="testinput" pref="testpref"', |
+ ' metric="notboolean_validaction" dialog-pref>'] |
+ self.assertEqual([], self._testChange(lines)) |
+ |
+ def testInvalidChange(self): |
+ lines = ['<input id="testinput" pref="testpref"', |
+ 'metric="invalidaction" type="checkbox" dialog-pref>'] |
+ warnings = self._testChange(lines) |
+ self.assertEqual(1, len(warnings)) |
+ |
+ def testInValidChange_Radio(self): |
+ lines = ['<input id="testinput" pref="testpref"', |
+ ' metric="validaction" type="radio" dialog-pref value="string">'] |
+ warnings = self._testChange(lines) |
+ self.assertEqual(1, len(warnings)) |
+ |
+ def _testChange(self, lines): |
+ mock_input_api = MockInputApi() |
+ mock_input_api.files = [MockFile('path/test.html', lines)] |
+ |
+ action_xml_path = self._createActionXMLFile() |
+ return PRESUBMIT.CheckUserActionUpdate(mock_input_api, |
+ MockOutputApi(), |
+ action_xml_path) |
+ |
+ def _createActionXMLFile(self): |
+ content = ('<actions>' |
+ '<action name="validaction_Disabled">' |
+ ' <owner>Please list the metric\'s owners.</owner>' |
+ ' <description>Enter the description of this user action.</description>' |
+ '</action>' |
+ '<action name="validaction_Enabled">' |
+ ' <owner>Please list the metric\'s owners. </owner>' |
+ ' <description>Enter the description of this user action.</description>' |
+ '</action>' |
+ '<action name="notboolean_validaction">' |
+ ' <owner>Please list the metric\'s owners.</owner>' |
+ ' <description>Enter the description of this user action.</description>' |
+ '</action>' |
+ '</actions>') |
+ sys_temp = tempfile.gettempdir() |
+ action_xml_path = os.path.join(sys_temp, 'actions_test.xml') |
+ if not os.path.exists(action_xml_path): |
+ with open(action_xml_path, 'w+') as action_file: |
+ action_file.write(content) |
+ |
+ return action_xml_path |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |