forked from conan-io/examples2
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathci_test_example.py
More file actions
82 lines (69 loc) · 3.34 KB
/
ci_test_example.py
File metadata and controls
82 lines (69 loc) · 3.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import platform
import os
import shutil
from conan import conan_version
from test.examples_tools import run, chdir, replace
print("- Editable packages -")
# FIXME: remove once 2.0-beta10 is out
prefix_preset_name = "" if "beta9" in str(conan_version) else "conan-"
editable_add_argument = "say/1.0" if "beta9" in str(conan_version) else "--name=say --version=1.0"
editable_remove_argument = "say/1.0" if "beta9" in str(conan_version) else "--refs=say/1.0"
run(f"conan editable add say {editable_add_argument}")
with chdir("say"):
if platform.system() == "Windows":
run("conan install . -s build_type=Release")
run("conan install . -s build_type=Debug")
run(f"cmake --preset {prefix_preset_name}default")
run(f"cmake --build --preset {prefix_preset_name}release")
run(f"cmake --build --preset {prefix_preset_name}debug")
else:
run("conan install . -s build_type=Release")
run(f"cmake --preset {prefix_preset_name}release")
run(f"cmake --build --preset {prefix_preset_name}release")
with chdir("hello"):
if platform.system() == "Windows":
run("conan install . -s build_type=Release")
run("conan install . -s build_type=Debug")
run(f"cmake --preset {prefix_preset_name}default")
run(f"cmake --build --preset {prefix_preset_name}release")
run(f"cmake --build --preset {prefix_preset_name}debug")
cmd_out = run("build\Release\hello.exe")
assert "say/1.0: Hello World Release!" in cmd_out
cmd_out = run("build\Debug\hello.exe")
assert "say/1.0: Hello World Debug!" in cmd_out
else:
run("conan install . -s build_type=Release")
run(f"cmake --preset {prefix_preset_name}release")
run(f"cmake --build --preset {prefix_preset_name}release")
cmd_out = run("./build/Release/hello")
assert "say/1.0: Hello World Release!" in cmd_out
with chdir("say"):
replace(os.path.join("src", "say.cpp"), "Hello World", "Bye World")
if platform.system() == "Windows":
run(f"cmake --build --preset {prefix_preset_name}release")
run(f"cmake --build --preset {prefix_preset_name}debug")
else:
run(f"cmake --build --preset {prefix_preset_name}release")
with chdir("hello"):
# Clean hello build to ensure it uses the updated say library
hello_build_path = "build"
if os.path.exists(hello_build_path):
shutil.rmtree(hello_build_path)
# Reconfigure CMake after cleaning the build directory
if platform.system() == "Windows":
run("conan install . -s build_type=Release")
run("conan install . -s build_type=Debug")
run(f"cmake --preset {prefix_preset_name}default")
run(f"cmake --build --preset {prefix_preset_name}release")
run(f"cmake --build --preset {prefix_preset_name}debug")
cmd_out = run("build\Release\hello.exe")
assert "say/1.0: Bye World Release!" in cmd_out
cmd_out = run("build\Debug\hello.exe")
assert "say/1.0: Bye World Debug!" in cmd_out
else:
run("conan install . -s build_type=Release")
run(f"cmake --preset {prefix_preset_name}release")
run(f"cmake --build --preset {prefix_preset_name}release")
cmd_out = run("./build/Release/hello")
assert "say/1.0: Bye World Release!" in cmd_out
run(f"conan editable remove {editable_remove_argument}")