123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #!/usr/bin/env python3
- # Copyright 2022 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.
- """Tests for test_health_exporter."""
- import datetime as dt
- import json
- import pathlib
- import tempfile
- import unittest
- from java_test_utils import JavaTestHealth
- import test_health_exporter
- from test_health_extractor import GitRepoInfo, TestHealthInfo
- _TEST_TYPE = 'JAVA'
- _JAVA_PACKAGE = 'org.chromium.foo_pkg'
- _GIT_HEAD_HASH = 'fcd260583cb6d2c739b91f53363fcf0ad3eb3216'
- _GIT_HEAD_TIME = '2022-01-18T22:45:48.000000+00:00'
- _GIT_REPO_INFO = GitRepoInfo(
- git_head=_GIT_HEAD_HASH,
- git_head_time=dt.datetime.fromisoformat(_GIT_HEAD_TIME))
- _JAVA_TEST_NAME = 'FooTest'
- _JAVA_TEST_FILENAME = _JAVA_TEST_NAME + '.java'
- _JAVA_TEST_DIR = 'javatests/org/chromium/foo_pkg'
- _JAVA_TEST_HEALTH = JavaTestHealth(java_package=_JAVA_PACKAGE,
- disabled_tests_count=1,
- disable_if_tests_count=2,
- flaky_tests_count=3)
- _TEST_HEALTH_INFO = TestHealthInfo(_JAVA_TEST_NAME,
- test_dir=pathlib.Path(_JAVA_TEST_DIR),
- test_filename=_JAVA_TEST_FILENAME,
- java_test_health=_JAVA_TEST_HEALTH,
- git_repo_info=_GIT_REPO_INFO)
- _TEST_HEALTH_JSON_DICT = dict(test_name=_JAVA_TEST_NAME,
- test_path=_JAVA_TEST_DIR,
- test_filename=_JAVA_TEST_FILENAME,
- test_type=_TEST_TYPE,
- java_package=_JAVA_PACKAGE,
- disabled_tests_count=1,
- disable_if_tests_count=2,
- flaky_tests_count=3,
- git_head_hash=_GIT_HEAD_HASH,
- git_head_timestamp=_GIT_HEAD_TIME)
- class ToJsonFile(unittest.TestCase):
- """Tests for the to_json_file function."""
- def test_to_json_file_single_java_test(self):
- with tempfile.TemporaryDirectory() as tmpdir:
- json_file = pathlib.Path(tmpdir) / 'test_output'
- test_health_exporter.to_json_file([_TEST_HEALTH_INFO], json_file)
- with open(json_file) as output_file:
- json_lines = output_file.readlines()
- self.assertEqual(1, len(json_lines))
- result = json.loads(json_lines[0])
- self.assertDictEqual(_TEST_HEALTH_JSON_DICT, result)
- def test_to_json_file_multiple_java_tests(self):
- with tempfile.TemporaryDirectory() as tmpdir:
- json_file = pathlib.Path(tmpdir) / 'test_output'
- test_health_exporter.to_json_file(
- [_TEST_HEALTH_INFO, _TEST_HEALTH_INFO, _TEST_HEALTH_INFO],
- json_file)
- with open(json_file) as output_file:
- json_lines = output_file.readlines()
- self.assertEqual(3, len(json_lines))
- result1 = json.loads(json_lines[0])
- result2 = json.loads(json_lines[1])
- result3 = json.loads(json_lines[2])
- self.assertDictEqual(_TEST_HEALTH_JSON_DICT, result1)
- self.assertDictEqual(_TEST_HEALTH_JSON_DICT, result2)
- self.assertDictEqual(_TEST_HEALTH_JSON_DICT, result3)
- def test_to_json_file_java_package_omitted(self):
- java_test_health = JavaTestHealth(java_package=None,
- disabled_tests_count=1,
- disable_if_tests_count=2,
- flaky_tests_count=3)
- test_health_info = TestHealthInfo(
- _JAVA_TEST_NAME,
- test_dir=pathlib.Path(_JAVA_TEST_DIR),
- test_filename=_JAVA_TEST_FILENAME,
- java_test_health=java_test_health,
- git_repo_info=_GIT_REPO_INFO)
- test_health_json_dict = _TEST_HEALTH_JSON_DICT.copy()
- del test_health_json_dict['java_package']
- with tempfile.TemporaryDirectory() as tmpdir:
- json_file = pathlib.Path(tmpdir) / 'test_output'
- test_health_exporter.to_json_file([test_health_info], json_file)
- with open(json_file) as output_file:
- json_lines = output_file.readlines()
- self.assertEqual(1, len(json_lines))
- result = json.loads(json_lines[0])
- self.assertDictEqual(test_health_json_dict, result)
- if __name__ == '__main__':
- unittest.main()
|