| Index: chrome/browser/web_dev_style/html_checker_test.py
|
| diff --git a/chrome/browser/web_dev_style/html_checker_test.py b/chrome/browser/web_dev_style/html_checker_test.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..0421ba50788482fcb177980fee9e46d06d2ce6ba
|
| --- /dev/null
|
| +++ b/chrome/browser/web_dev_style/html_checker_test.py
|
| @@ -0,0 +1,169 @@
|
| +#!/usr/bin/env python
|
| +# Copyright 2015 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 html_checker
|
| +from os import path as os_path
|
| +import re
|
| +from sys import path as sys_path
|
| +import test_util
|
| +import unittest
|
| +
|
| +_HERE = os_path.dirname(os_path.abspath(__file__))
|
| +sys_path.append(os_path.join(_HERE, '..', '..', '..', 'tools'))
|
| +
|
| +import find_depot_tools # pylint: disable=W0611
|
| +from testing_support.super_mox import SuperMoxTestBase
|
| +
|
| +
|
| +class HtmlCheckerTest(SuperMoxTestBase):
|
| + def setUp(self):
|
| + SuperMoxTestBase.setUp(self)
|
| +
|
| + input_api = self.mox.CreateMockAnything()
|
| + input_api.re = re
|
| + output_api = self.mox.CreateMockAnything()
|
| + self.checker = html_checker.HtmlChecker(input_api, output_api)
|
| +
|
| + def ShouldFailCheck(self, line, checker):
|
| + """Checks that the |checker| flags |line| as a style error."""
|
| + error = checker(1, line)
|
| + self.assertNotEqual('', error, 'Should be flagged as style error: ' + line)
|
| + highlight = test_util.GetHighlight(line, error).strip()
|
| +
|
| + def ShouldPassCheck(self, line, checker):
|
| + """Checks that the |checker| doesn't flag |line| as a style error."""
|
| + error = checker(1, line)
|
| + self.assertEqual('', error, 'Should not be flagged as style error: ' + line)
|
| +
|
| + def testClassesUseDashFormCheckFails(self):
|
| + lines = [
|
| + ' <a class="Foo-bar" href="classBar"> ',
|
| + '<b class="foo-Bar"> ',
|
| + '<i class="foo_bar" >',
|
| + ' <hr class="fooBar"> ',
|
| + ]
|
| + for line in lines:
|
| + self.ShouldFailCheck(line, self.checker.ClassesUseDashFormCheck)
|
| +
|
| + def testClassesUseDashFormCheckPasses(self):
|
| + lines = [
|
| + ' class="abc" ',
|
| + 'class="foo-bar"',
|
| + '<div class="foo-bar" id="classBar"',
|
| + ]
|
| + for line in lines:
|
| + self.ShouldPassCheck(line, self.checker.ClassesUseDashFormCheck)
|
| +
|
| + def testDoNotCloseSingleTagsCheckFails(self):
|
| + lines = [
|
| + "<input/>",
|
| + ' <input id="a" /> ',
|
| + "<div/>",
|
| + "<br/>",
|
| + "<br />",
|
| + ]
|
| + for line in lines:
|
| + self.ShouldFailCheck(line, self.checker.DoNotCloseSingleTagsCheck)
|
| +
|
| + def testDoNotCloseSingleTagsCheckPasses(self):
|
| + lines = [
|
| + "<input>",
|
| + "<link>",
|
| + "<div></div>",
|
| + '<input text="/">',
|
| + ]
|
| + for line in lines:
|
| + self.ShouldPassCheck(line, self.checker.DoNotCloseSingleTagsCheck)
|
| +
|
| + def testDoNotUseBrElementCheckFails(self):
|
| + lines = [
|
| + " <br>",
|
| + "<br > ",
|
| + "<br\>",
|
| + '<br name="a">',
|
| + ]
|
| + for line in lines:
|
| + self.ShouldFailCheck(
|
| + line, self.checker.DoNotUseBrElementCheck)
|
| +
|
| + def testDoNotUseBrElementCheckPasses(self):
|
| + lines = [
|
| + "br",
|
| + "br>",
|
| + "give me a break"
|
| + ]
|
| + for line in lines:
|
| + self.ShouldPassCheck(
|
| + line, self.checker.DoNotUseBrElementCheck)
|
| +
|
| + def testDoNotUseInputTypeButtonCheckFails(self):
|
| + lines = [
|
| + '<input type="button">',
|
| + ' <input id="a" type="button" >',
|
| + '<input type="button" id="a"> ',
|
| + ]
|
| + for line in lines:
|
| + self.ShouldFailCheck(line, self.checker.DoNotUseInputTypeButtonCheck)
|
| +
|
| + def testDoNotUseInputTypeButtonCheckPasses(self):
|
| + lines = [
|
| + "<input>",
|
| + '<input type="text">',
|
| + '<input type="result">',
|
| + '<input type="submit">',
|
| + "<button>",
|
| + '<button type="button">',
|
| + '<button type="reset">',
|
| + '<button type="submit">',
|
| +
|
| + ]
|
| + for line in lines:
|
| + self.ShouldPassCheck(line, self.checker.DoNotUseInputTypeButtonCheck)
|
| +
|
| + def testI18nContentJavaScriptCaseCheckFails(self):
|
| + lines = [
|
| + ' i18n-content="foo-bar" ',
|
| + 'i18n-content="foo_bar"',
|
| + 'i18n-content="FooBar"',
|
| + 'i18n-content="_foo"',
|
| + 'i18n-content="foo_"',
|
| + 'i18n-content="-foo"',
|
| + 'i18n-content="foo-"',
|
| + 'i18n-content="Foo"',
|
| + ]
|
| + for line in lines:
|
| + self.ShouldFailCheck(line, self.checker.I18nContentJavaScriptCaseCheck)
|
| +
|
| + def testI18nContentJavaScriptCaseCheckPasses(self):
|
| + lines = [
|
| + ' i18n-content="abc" ',
|
| + 'i18n-content="fooBar"',
|
| + '<div i18n-content="exampleTitle"',
|
| + ]
|
| + for line in lines:
|
| + self.ShouldPassCheck(line, self.checker.I18nContentJavaScriptCaseCheck)
|
| +
|
| + def testLabelCheckFails(self):
|
| + lines = [
|
| + ' for="abc"',
|
| + "for= ",
|
| + " \tfor= ",
|
| + " for="
|
| + ]
|
| + for line in lines:
|
| + self.ShouldFailCheck(line, self.checker.LabelCheck)
|
| +
|
| + def testLabelCheckPass(self):
|
| + lines = [
|
| + ' my-for="abc" ',
|
| + ' myfor="abc" ',
|
| + " <for",
|
| + ]
|
| + for line in lines:
|
| + self.ShouldPassCheck(line, self.checker.LabelCheck)
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + unittest.main()
|
|
|