Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* wip * improving test conf * fixing some tests * wip * wip * docs * wip * wip * wip * wip * fixing test * remove unused markers * enable meson * removing meson version check * test to see if we break something * fix visual_studio tests * wip * wip
- Loading branch information
1 parent
fd24dea
commit 7c4c9ce
Showing
3 changed files
with
113 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
102 changes: 102 additions & 0 deletions
102
conans/test/functional/toolchains/cmake/test_cmake_toolchain_win_clang.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
import platform | ||
import textwrap | ||
|
||
import pytest | ||
|
||
from conans.test.assets.cmake import gen_cmakelists | ||
from conans.test.assets.sources import gen_function_cpp | ||
from conans.test.utils.tools import TestClient | ||
from conans.util.files import save | ||
|
||
|
||
@pytest.fixture | ||
def client(): | ||
c = TestClient() | ||
save(c.cache.new_config_path, "tools.env.virtualenv:auto_use=True") | ||
clang_profile = textwrap.dedent(""" | ||
[settings] | ||
os=Windows | ||
arch=x86_64 | ||
build_type=Release | ||
compiler=clang | ||
compiler.version=12 | ||
[buildenv] | ||
CC=clang | ||
CXX=clang++ | ||
RC=clang | ||
""") | ||
conanfile = textwrap.dedent(""" | ||
import os | ||
from conans import ConanFile | ||
from conan.tools.cmake import CMake | ||
from conan.tools.layout import cmake_layout | ||
class Pkg(ConanFile): | ||
settings = "os", "compiler", "build_type", "arch" | ||
exports_sources = "*" | ||
generators = "CMakeToolchain" | ||
def layout(self): | ||
cmake_layout(self) | ||
def build(self): | ||
cmake = CMake(self) | ||
cmake.configure() | ||
cmake.build() | ||
cmd = os.path.join(self.cpp.build.bindirs[0], "my_app") | ||
self.run(cmd, env=["conanrunenv"]) | ||
""") | ||
c.save({"conanfile.py": conanfile, | ||
"clang": clang_profile, | ||
"src/CMakeLists.txt": gen_cmakelists(appname="my_app", appsources=["main.cpp"]), | ||
"src/main.cpp": gen_function_cpp(name="main")}) | ||
return c | ||
|
||
|
||
@pytest.mark.tool_cmake | ||
@pytest.mark.tool_mingw64 | ||
@pytest.mark.tool_clang(version="12") | ||
@pytest.mark.skipif(platform.system() != "Windows", reason="requires Win") | ||
def test_clang(client): | ||
client.run("create . pkg/0.1@ -pr=clang") | ||
# clang compilations in Windows will use MinGW Makefiles by default | ||
assert 'cmake -G "MinGW Makefiles"' in client.out | ||
assert "main __clang_major__12" in client.out | ||
# Check this! Clang compiler in Windows is reporting MSC_VER and MSVC_LANG! | ||
assert "main _MSC_VER19" in client.out | ||
assert "main _MSVC_LANG2014" in client.out | ||
|
||
|
||
@pytest.mark.tool_cmake | ||
@pytest.mark.tool_clang(version="12") | ||
@pytest.mark.skipif(platform.system() != "Windows", reason="requires Win") | ||
def test_clang_cmake_ninja(client): | ||
client.run("create . pkg/0.1@ -pr=clang -c tools.cmake.cmaketoolchain:generator=Ninja") | ||
assert 'cmake -G "Ninja"' in client.out | ||
assert "main __clang_major__12" in client.out | ||
# Check this! Clang compiler in Windows is reporting MSC_VER and MSVC_LANG! | ||
assert "main _MSC_VER19" in client.out | ||
assert "main _MSVC_LANG2014" in client.out | ||
|
||
|
||
@pytest.mark.tool_cmake | ||
@pytest.mark.tool_visual_studio(version="16") # With Clang distributed in VS! | ||
@pytest.mark.skipif(platform.system() != "Windows", reason="requires Win") | ||
def test_clang_cmake_visual(client): | ||
clang_profile = textwrap.dedent(""" | ||
[settings] | ||
os=Windows | ||
arch=x86_64 | ||
build_type=Release | ||
compiler=clang | ||
compiler.version=11 | ||
""") | ||
# TODO: Clang version is unused, it can change, still 11 from inside VS is used | ||
client.save({"clang": clang_profile}) | ||
client.run("create . pkg/0.1@ -pr=clang " | ||
'-c tools.cmake.cmaketoolchain:generator="Visual Studio 16"') | ||
assert 'cmake -G "Visual Studio 16"' in client.out | ||
assert "main __clang_major__11" in client.out | ||
# Check this! Clang compiler in Windows is reporting MSC_VER and MSVC_LANG! | ||
assert "main _MSC_VER19" in client.out | ||
assert "main _MSVC_LANG2014" in client.out |