| #!/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. |
| """Tests for java_test_utils.""" |
| |
| import pathlib |
| import sys |
| import unittest |
| |
| import java_test_utils |
| |
| _TOOLS_ANDROID_PATH = pathlib.Path(__file__).resolve( |
| strict=True).parents[1].resolve(strict=True) |
| if str(_TOOLS_ANDROID_PATH) not in sys.path: |
| sys.path.append(str(_TOOLS_ANDROID_PATH)) |
| from python_utils import git_metadata_utils |
| |
| _CHROMIUM_SRC_PATH = git_metadata_utils.get_chromium_src_path() |
| |
| _TEST_FILES_PATH = (pathlib.Path(__file__).parents[0] / 'testdata' / |
| 'javatests' / 'org' / 'chromium' / 'chrome' / 'browser' / |
| 'test_health').resolve(strict=True) |
| |
| _HEALTHY_TEST_PATH = _TEST_FILES_PATH / 'healthy_tests' / 'SampleTest.java' |
| _HEALTHY_NO_PKG_TEST_PATH = (_TEST_FILES_PATH / 'healthy_tests' / |
| 'SampleNoPackageTest.java') |
| _UNHEALTHY_TEST_PATH = (_TEST_FILES_PATH / 'unhealthy_tests' / |
| 'SampleTest.java') |
| _INVALID_SYNTAX_TEST_PATH = (_TEST_FILES_PATH / 'unhealthy_tests' / |
| 'InvalidSyntaxTest.java') |
| _DISABLED_TEST_PATH = (_TEST_FILES_PATH / 'disabled_tests' / |
| 'SampleDisabledTest.java') |
| _DISABLE_IF_TEST_PATH = (_TEST_FILES_PATH / 'disabled_tests' / |
| 'SampleDisableIfTest.java') |
| |
| _BASE_JAVA_PACKAGE = 'org.chromium.chrome.browser.test_health' |
| _JAVA_PACKAGE_HEALTHY_TESTS = _BASE_JAVA_PACKAGE + '.healthy_tests' |
| _JAVA_PACKAGE_UNHEALTHY_TESTS = _BASE_JAVA_PACKAGE + '.unhealthy_tests' |
| _JAVA_PACKAGE_DISABLED_TESTS = _BASE_JAVA_PACKAGE + '.disabled_tests' |
| |
| |
| class TestJavaTestHealthStats(unittest.TestCase): |
| """Tests for the get_java_test_health_stats function.""" |
| |
| def test_get_java_test_health_stats_healthy_tests(self): |
| test_health = java_test_utils.get_java_test_health(_HEALTHY_TEST_PATH) |
| |
| self.assertEqual(_JAVA_PACKAGE_HEALTHY_TESTS, test_health.java_package) |
| self.assertEqual(0, test_health.disabled_tests_count) |
| self.assertEqual(0, test_health.disable_if_tests_count) |
| def test_get_java_test_health_stats_healthy_tests_no_java_package(self): |
| test_health = java_test_utils.get_java_test_health( |
| _HEALTHY_NO_PKG_TEST_PATH) |
| |
| self.assertIsNone(test_health.java_package) |
| self.assertEqual(0, test_health.disabled_tests_count) |
| self.assertEqual(0, test_health.disable_if_tests_count) |
| |
| def test_get_java_test_health_stats_unhealthy_tests(self): |
| test_health = java_test_utils.get_java_test_health( |
| _UNHEALTHY_TEST_PATH) |
| |
| self.assertEqual(_JAVA_PACKAGE_UNHEALTHY_TESTS, |
| test_health.java_package) |
| self.assertEqual(1, test_health.disabled_tests_count) |
| self.assertEqual(1, test_health.disable_if_tests_count) |
| |
| def test_get_java_test_health_stats_disabled_tests(self): |
| test_health = java_test_utils.get_java_test_health(_DISABLED_TEST_PATH) |
| |
| self.assertEqual(_JAVA_PACKAGE_DISABLED_TESTS, |
| test_health.java_package) |
| self.assertEqual(2, test_health.disabled_tests_count) |
| self.assertEqual(0, test_health.disable_if_tests_count) |
| |
| def test_get_java_test_health_stats_disable_if_tests(self): |
| test_health = java_test_utils.get_java_test_health( |
| _DISABLE_IF_TEST_PATH) |
| |
| self.assertEqual(_JAVA_PACKAGE_DISABLED_TESTS, |
| test_health.java_package) |
| self.assertEqual(0, test_health.disabled_tests_count) |
| self.assertEqual(2, test_health.disable_if_tests_count) |
| |
| def test_get_java_test_health_invalid_test_syntax(self): |
| expected_filename = str( |
| _INVALID_SYNTAX_TEST_PATH.relative_to(_CHROMIUM_SRC_PATH)) |
| expected_text = (' values = Arrays.stream(STRING_ARRAY_2D)' |
| '.map(String[] ::clone).toArray(String[][] ::new);') |
| |
| with self.assertRaises(java_test_utils.JavaSyntaxError) as error_cm: |
| java_test_utils.get_java_test_health(_INVALID_SYNTAX_TEST_PATH) |
| |
| self.assertEqual("Expected '.'", error_cm.exception.msg) |
| self.assertEqual(expected_filename, error_cm.exception.filename) |
| self.assertEqual(30, error_cm.exception.lineno) |
| self.assertEqual(64, error_cm.exception.offset) |
| self.assertEqual(expected_text, error_cm.exception.text) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |