Skip to content

Commit 25ee2b8

Browse files
committed
Tests
1 parent 63f1fc8 commit 25ee2b8

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

tests/unit/plugins/conan/test_builder.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,3 +171,55 @@ def test_inheritance_chain(self, builder: Builder, tmp_path: Path) -> None:
171171
assert 'class TestProjectPackage(CPPythonBase):' in user_content
172172
assert 'super().requirements()' in user_content
173173
assert 'super().build_requirements()' in user_content
174+
175+
def test_cmake_binary_configure(self, builder: Builder, tmp_path: Path) -> None:
176+
"""Test that cmake_binary generates configure() with forward slashes."""
177+
base_file = tmp_path / 'conanfile_base.py'
178+
cmake_path = Path('C:/Program Files/CMake/bin/cmake.exe')
179+
180+
builder._create_base_conanfile(base_file, [], {}, cmake_binary=cmake_path)
181+
182+
content = base_file.read_text(encoding='utf-8')
183+
assert 'def configure(self):' in content
184+
assert 'self.conf.define("tools.cmake:cmake_program"' in content
185+
assert 'C:/Program Files/CMake/bin/cmake.exe' in content
186+
assert '\\' not in content.split('tools.cmake:cmake_program')[1].split('"')[1]
187+
188+
def test_no_cmake_binary(self, builder: Builder, tmp_path: Path) -> None:
189+
"""Test that no cmake_binary means no configure() method."""
190+
base_file = tmp_path / 'conanfile_base.py'
191+
192+
builder._create_base_conanfile(base_file, [], {}, cmake_binary=None)
193+
194+
content = base_file.read_text(encoding='utf-8')
195+
assert 'def configure(self):' not in content
196+
197+
@pytest.mark.parametrize(
198+
('venv_cmake', 'expect_configure'),
199+
[
200+
('/path/to/venv/bin/cmake', True),
201+
(None, False),
202+
],
203+
)
204+
def test_cmake_binary_venv_fallback(
205+
self,
206+
builder: Builder,
207+
tmp_path: Path,
208+
monkeypatch: pytest.MonkeyPatch,
209+
venv_cmake: str | None,
210+
expect_configure: bool,
211+
) -> None:
212+
"""Test venv cmake fallback when cmake_binary is default."""
213+
monkeypatch.setattr('cppython.plugins.conan.builder.shutil.which', lambda _: venv_cmake)
214+
215+
data = ConanfileGenerationData(
216+
dependencies=[],
217+
dependency_groups={},
218+
name='test-project',
219+
version='1.0.0',
220+
cmake_binary='cmake',
221+
)
222+
builder.generate_conanfile(directory=tmp_path, data=data)
223+
224+
content = (tmp_path / 'conanfile_base.py').read_text(encoding='utf-8')
225+
assert ('def configure(self):' in content) == expect_configure

0 commit comments

Comments
 (0)