| #!/usr/bin/env python3 |
| # Copyright 2021 The Chromium Authors |
| # 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 unittest |
| |
| from semantic_css_checker import SemanticCssChecker |
| |
| # Update system path to src/ so we can access src/PRESUBMIT_test_mocks.py. |
| sys.path.append( |
| os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..', |
| '..')) |
| |
| from PRESUBMIT_test_mocks import (MockInputApi, MockOutputApi, MockFile, |
| MockChange, MockAffectedFile) |
| |
| |
| class SemanticCssCheckerTest(unittest.TestCase): |
| def testNonSemanticColors(self): |
| mock_input_api = MockInputApi() |
| lines = [ |
| 'color: var(--google-grey-500);', |
| 'color: rgba(var(--google-blue-300-rgb), 0.2);', |
| 'color: rgb(255, 99, 71);', |
| 'fill: rgba(255, 99, 71, 0.5);', |
| 'fill: #00FFFF;', |
| 'background-color: hsla(9, 100%, 64%, 0.5);', |
| 'color: hsl(0, 100%, 50%);', |
| 'background-color: var(--paper-tab-ink);', |
| ] |
| mock_input_api.files = [ |
| MockAffectedFile('chrome/test.html', lines), |
| MockAffectedFile('chrome/test.css', lines), |
| ] |
| |
| mock_output_api = MockOutputApi() |
| |
| errors = SemanticCssChecker.RunChecks( |
| mock_input_api, mock_output_api) |
| self.assertEqual(len(lines) * len(mock_input_api.files), len(errors)) |
| |
| def testSemanticColors(self): |
| mock_input_api = MockInputApi() |
| mock_input_api.files = [ |
| MockAffectedFile('chrome/test.html', [ |
| 'color: var(--cros-icon-color-prominent);', |
| ]), |
| ] |
| |
| mock_output_api = MockOutputApi() |
| |
| errors = SemanticCssChecker.RunChecks( |
| mock_input_api, mock_output_api) |
| self.assertEqual(0, len(errors)) |
| |
| def testExcludedFiles(self): |
| """ Only .html and .css files should be processed. """ |
| mock_input_api = MockInputApi() |
| lines = [ |
| 'color: var(--google-grey-500);', |
| ]; |
| mock_input_api.files = [ |
| MockAffectedFile('chrome/test.js', |
| lines), |
| ] |
| |
| mock_output_api = MockOutputApi() |
| |
| errors = SemanticCssChecker.RunChecks( |
| mock_input_api, mock_output_api) |
| self.assertEqual(0, len(errors)) |
| |
| if __name__ == '__main__': |
| unittest.main() |