From e2e679a9c1e9600699c227ec91f3489fdb686d1f Mon Sep 17 00:00:00 2001 From: Scott K Logan Date: Fri, 22 Nov 2024 13:34:24 -0600 Subject: [PATCH] Port environment hook tests from colcon_core (#148) --- test/spell_check.words | 2 + test/test_environment_cmake_module_path.py | 41 ++++++++++++++++++ test/test_environment_cmake_prefix_path.py | 50 ++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 test/test_environment_cmake_module_path.py create mode 100644 test/test_environment_cmake_prefix_path.py diff --git a/test/spell_check.words b/test/spell_check.words index 34a26ec..22fc3f0 100644 --- a/test/spell_check.words +++ b/test/spell_check.words @@ -8,6 +8,7 @@ cmake cmakelists colcon completers +configs contextlib ctest ctests @@ -53,5 +54,6 @@ tagname tempfile thomas tmpdir +unittest vcxproj xcode diff --git a/test/test_environment_cmake_module_path.py b/test/test_environment_cmake_module_path.py new file mode 100644 index 0000000..386d6db --- /dev/null +++ b/test/test_environment_cmake_module_path.py @@ -0,0 +1,41 @@ +# Copyright 2016-2018 Dirk Thomas +# Copyright 2024 Open Source Robotics Foundation, Inc. +# Licensed under the Apache License, Version 2.0 + +from pathlib import Path +from tempfile import TemporaryDirectory +from unittest.mock import patch + +from colcon_cmake.environment.cmake_module_path \ + import CmakeModulePathEnvironment + + +def test_cmake_module_path(): + extension = CmakeModulePathEnvironment() + + with TemporaryDirectory(prefix='test_colcon_') as prefix_path: + prefix_path = Path(prefix_path) + with patch( + 'colcon_cmake.environment.cmake_module_path.' + 'create_environment_hook', + return_value=['/some/hook', '/other/hook'] + ): + # No CMake configs exist + hooks = extension.create_environment_hooks(prefix_path, 'pkg_name') + assert len(hooks) == 0 + + pkg_share_path = prefix_path / 'share' / 'pkg_name' + + # Unrelated file + unrelated_file = pkg_share_path / 'cmake' / 'README.md' + unrelated_file.parent.mkdir(parents=True, exist_ok=True) + unrelated_file.touch() + hooks = extension.create_environment_hooks(prefix_path, 'pkg_name') + assert len(hooks) == 0 + + # FindPkgName.cmake exists + cmake_module = pkg_share_path / 'cmake' / 'FindPkgName.cmake' + cmake_module.parent.mkdir(parents=True, exist_ok=True) + cmake_module.touch() + hooks = extension.create_environment_hooks(prefix_path, 'pkg_name') + assert len(hooks) == 2 diff --git a/test/test_environment_cmake_prefix_path.py b/test/test_environment_cmake_prefix_path.py new file mode 100644 index 0000000..c19061f --- /dev/null +++ b/test/test_environment_cmake_prefix_path.py @@ -0,0 +1,50 @@ +# Copyright 2016-2018 Dirk Thomas +# Copyright 2024 Open Source Robotics Foundation, Inc. +# Licensed under the Apache License, Version 2.0 + +from pathlib import Path +from tempfile import TemporaryDirectory +from unittest.mock import patch + +from colcon_cmake.environment.cmake_prefix_path \ + import CmakePrefixPathEnvironment + + +def test_cmake_prefix_path(): + extension = CmakePrefixPathEnvironment() + + with TemporaryDirectory(prefix='test_colcon_') as prefix_path: + prefix_path = Path(prefix_path) + with patch( + 'colcon_cmake.environment.cmake_prefix_path' + '.create_environment_hook', + return_value=['/some/hook', '/other/hook'] + ): + # No CMake configs exist + hooks = extension.create_environment_hooks(prefix_path, 'pkg_name') + assert len(hooks) == 0 + + pkg_share_path = prefix_path / 'share' / 'pkg_name' + + # Unrelated file + unrelated_file = pkg_share_path / 'cmake' / 'README.md' + unrelated_file.parent.mkdir(parents=True, exist_ok=True) + unrelated_file.touch() + hooks = extension.create_environment_hooks(prefix_path, 'pkg_name') + assert len(hooks) == 0 + + # PkgNameConfig.cmake exists + cmake_config = pkg_share_path / 'cmake' / 'PkgNameConfig.cmake' + cmake_config.parent.mkdir(parents=True, exist_ok=True) + cmake_config.touch() + hooks = extension.create_environment_hooks(prefix_path, 'pkg_name') + assert len(hooks) == 2 + cmake_config.unlink() + + # pkg_name-config.cmake exists + cmake_config = pkg_share_path / 'cmake' / 'pkg_name-config.cmake' + cmake_config.parent.mkdir(parents=True, exist_ok=True) + cmake_config.touch() + hooks = extension.create_environment_hooks(prefix_path, 'pkg_name') + assert len(hooks) == 2 + cmake_config.unlink()