"""Tests for the get_test_health script."""
import pathlib
import subprocess
import sys
import tempfile
import unittest
_TOOLS_ANDROID_PATH = pathlib.Path(__file__).resolve(strict=True).parents[1]
if str(_TOOLS_ANDROID_PATH) not in sys.path:
sys.path.append(str(_TOOLS_ANDROID_PATH))
from python_utils import git_metadata_utils
from python_utils import subprocess_utils
_GET_TEST_HEALTH_PATH = (pathlib.Path(__file__).parent /
'get_test_health.py').resolve(strict=True)
_CHROMIUM_SRC_PATH = git_metadata_utils.get_chromium_src_path()
_TEST_FILES_PATH = (_CHROMIUM_SRC_PATH / 'tools' / 'android' / 'test_health' /
'testdata' / 'javatests').relative_to(_CHROMIUM_SRC_PATH)
class GetTestHealthTests(unittest.TestCase):
def test_gettesthealth_writes_to_output_file(self):
with tempfile.TemporaryDirectory() as tmpdir:
json_file = pathlib.Path(tmpdir) / 'test_output'
subprocess_utils.run_command([
str(_GET_TEST_HEALTH_PATH), '--output-file',
str(json_file), '--test-dir',
str(_TEST_FILES_PATH)
])
self.assertTrue(json_file.exists())
with open(json_file) as f:
json_lines = f.readlines()
self.assertGreater(len(json_lines), 0)
def test_gettesthealth_output_file_not_specified(self):
with self.assertRaises(subprocess.CalledProcessError) as error_cm:
subprocess_utils.run_command([
str(_GET_TEST_HEALTH_PATH), '--test-dir',
str(_TEST_FILES_PATH)
])
self.assertGreater(error_cm.exception.returncode, 0)
self.assertIn('the following arguments are required: -o/--output-file',
error_cm.exception.stderr)
if __name__ == '__main__':
unittest.main()