From ca5dc31ec1c798a1b337c8da78347f73f72b0c4d Mon Sep 17 00:00:00 2001 From: John Pennycook Date: Fri, 11 Oct 2024 09:26:14 +0100 Subject: [PATCH] Add regression test for symlink handling Signed-off-by: John Pennycook --- tests/duplicates/cpu2 | 1 + tests/duplicates/test_duplicates.py | 34 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 120000 tests/duplicates/cpu2 diff --git a/tests/duplicates/cpu2 b/tests/duplicates/cpu2 new file mode 120000 index 0000000..840a958 --- /dev/null +++ b/tests/duplicates/cpu2 @@ -0,0 +1 @@ +cpu/ \ No newline at end of file diff --git a/tests/duplicates/test_duplicates.py b/tests/duplicates/test_duplicates.py index 459f29e..ee5a940 100644 --- a/tests/duplicates/test_duplicates.py +++ b/tests/duplicates/test_duplicates.py @@ -52,6 +52,40 @@ def test_duplicates(self): setmap = mapper.walk(state) self.assertDictEqual(setmap, expected_setmap, "Mismatch in setmap") + def test_symlinks(self): + """Check that symlinks do not count towards divergence.""" + + cpufile = str(self.rootdir / "cpu/foo.cpp") + cpu2file = str(self.rootdir / "cpu2/foo.cpp") + + codebase = CodeBase(self.rootdir, exclude_patterns=["gpu/"]) + + configuration = { + "cpu": [ + { + "file": cpufile, + "defines": [], + "include_paths": [], + "include_files": [], + }, + ], + "cpu2": [ + { + "file": cpu2file, + "defines": [], + "include_paths": [], + "include_files": [], + }, + ], + } + + expected_setmap = {frozenset(["cpu", "cpu2"]): 1} + + state = finder.find(self.rootdir, codebase, configuration) + mapper = PlatformMapper(codebase) + setmap = mapper.walk(state) + self.assertDictEqual(setmap, expected_setmap, "Mismatch in setmap") + if __name__ == "__main__": unittest.main()