blob: 4190f358dba92b882d048232c17ae6c4c8d21248 [file] [log] [blame]
#!/usr/bin/env python3
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
import unittest
from unittest.mock import patch
from pathlib import Path
import unittest_coverage
class AnyStringWith(str):
def __eq__(self, other):
return self in other
class TestUnit(unittest.TestCase):
@patch("unittest_coverage.BAZEL", "<bazel>")
@patch("unittest_coverage.DEVICE_LIBS_QUERY", "<device libs query>")
@patch("unittest_coverage.run")
def test_handle_libs(self, mock_run):
device_libs_all = ["//foo/a", "//foo/b", "//foo/c", "//foo/d"]
device_libs_incompat = ["//foo/b", "//foo/c"]
device_libs = ["//foo/a", "//foo/d"]
mock_run.side_effect = (device_libs_incompat, )
self.assertEqual(unittest_coverage.handle_libs(device_libs_all),
device_libs)
mock_run.assert_called_once_with(
"<bazel>", "cquery", "<device libs query>", "--output=starlark",
AnyStringWith("IncompatiblePlatformProvider"))
@patch("unittest_coverage.LLD_HOST", "<lld_host>")
@patch("unittest_coverage.run")
def test_handle_objs(self, mock_run):
merged_library = Path("/foo/merged.so")
obj_files = ["//foo/a.o", "//foo/mock_a.o", "//foo/d.o"]
unittest_coverage.handle_objs(merged_library, obj_files)
mock_run.assert_called_once_with("<lld_host>", "--shared", "-o",
str(merged_library), "//foo/a.o",
"//foo/d.o")
def test_handle_test_targets(self):
test_targets = ["//foo", "//bar"]
res = unittest_coverage.handle_test_targets(test_targets)
self.assertTrue(set(res) > set(test_targets))
self.assertTrue(len([test for test in res if "unittest" in test]) > 0)
def test_handle_test_log_dirs(self):
test_log_dirs = [Path("/testlogs/foo"), Path("/testlogs/bar")]
profiles = [
Path("/testlogs/foo/coverage.dat"),
Path("/testlogs/bar/coverage.dat")
]
self.assertEqual(unittest_coverage.handle_test_log_dirs(test_log_dirs),
profiles)
def test_params(self):
self.assertEqual(unittest_coverage.PARAMS.bazel_test_type,
AnyStringWith("cc_test"))
self.assertEqual(unittest_coverage.PARAMS.config,
"ot_coverage_off_target")
self.assertEqual(unittest_coverage.PARAMS.libs_fn,
unittest_coverage.handle_libs)
self.assertEqual(unittest_coverage.PARAMS.objs_fn,
unittest_coverage.handle_objs)
self.assertEqual(unittest_coverage.PARAMS.test_targets_fn,
unittest_coverage.handle_test_targets)
self.assertEqual(unittest_coverage.PARAMS.test_log_dirs_fn,
unittest_coverage.handle_test_log_dirs)
self.assertEqual(unittest_coverage.PARAMS.report_title,
AnyStringWith("Unit Test"))
if __name__ == "__main__":
unittest.main()