def setup(ui): " Setup the project " lib = ui.add_library("lib") file_name = str(Path(tempdir) / "tb_filter.vhd") create_vhdl_test_bench_file( "tb_filter", file_name, tests=["Test 1", "Test 2", "Test 3", "Test 4"], test_attributes={ "Test 1": [".attr0"], "Test 2": [".attr0", ".attr1"], "Test 3": [".attr1"], "Test 4": [], }, ) lib.add_source_file(file_name) lib.test_bench("tb_filter").test("Test 4").set_attribute(".attr2", None)
def test_export_json(self, tempdir): tdir = Path(tempdir) json_file = str(tdir / "export.json") ui = self._create_ui("--export-json", json_file) lib1 = ui.add_library("lib1") lib2 = ui.add_library("lib2") file_name1 = str(tdir / "tb_foo.vhd") create_vhdl_test_bench_file("tb_foo", file_name1) lib1.add_source_file(file_name1) file_name2 = str(tdir / "tb_bar.vhd") create_vhdl_test_bench_file( "tb_bar", file_name2, tests=["Test one", "Test two"], test_attributes={"Test one": [".attr0"]}, ) lib2.add_source_file(file_name2) lib2.test_bench("tb_bar").set_attribute(".attr1", "bar") self._run_main(ui) with open(json_file, "r") as fptr: data = json.load(fptr) # Check known keys self.assertEqual(set(data.keys()), set(["export_format_version", "files", "tests"])) # Check that export format is semantic version with integer values self.assertEqual(set(data["export_format_version"].keys()), set(("major", "minor", "patch"))) assert all( isinstance(value, int) for value in data["export_format_version"].values()) # Check the contents of the files section self.assertEqual( set((item["library_name"], item["file_name"]) for item in data["files"]), set([ ("lib1", str(Path(file_name1).resolve())), ("lib2", str(Path(file_name2).resolve())), ]), ) # Check the contents of the tests section self.assertEqual( { item["name"]: (item["location"], item["attributes"]) for item in data["tests"] }, { "lib1.tb_foo.all": ( { "file_name": file_name1, "offset": 180, "length": 18 }, {}, ), "lib2.tb_bar.Test one": ( { "file_name": file_name2, "offset": 235, "length": 8 }, { ".attr0": None, ".attr1": "bar" }, ), "lib2.tb_bar.Test two": ( { "file_name": file_name2, "offset": 283, "length": 8 }, { ".attr1": "bar" }, ), }, )