Skip to content

Commit f176ede

Browse files
authored
Merge pull request #24 from JnyJny/features/update-github-workflows
feat: modernize GitHub workflows with busylight-core patterns
2 parents 18d16af + b4f725c commit f176ede

File tree

12 files changed

+323
-92
lines changed

12 files changed

+323
-92
lines changed

tests/test_build_validation.py

Lines changed: 61 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@ def test_package_builds_successfully(
1919
) -> None:
2020
"""Test that package builds without errors."""
2121
result = subprocess.run(
22-
["uv", "build"], cwd=generated_template_path, capture_output=True, text=True
22+
["uv", "build"],
23+
cwd=generated_template_path,
24+
capture_output=True,
25+
text=True,
26+
check=False,
2327
)
2428
assert result.returncode == 0, f"Package build failed: {result.stderr}"
2529

@@ -38,7 +42,11 @@ def test_wheel_package_structure(
3842
"""Test that built wheel has correct structure."""
3943
# Build the package
4044
result = subprocess.run(
41-
["uv", "build"], cwd=generated_template_path, capture_output=True, text=True
45+
["uv", "build"],
46+
cwd=generated_template_path,
47+
capture_output=True,
48+
text=True,
49+
check=False,
4250
)
4351
assert result.returncode == 0, f"Build failed: {result.stderr}"
4452

@@ -85,7 +93,11 @@ def test_source_distribution_structure(
8593
"""Test that built source distribution has correct structure."""
8694
# Build the package
8795
result = subprocess.run(
88-
["uv", "build"], cwd=generated_template_path, capture_output=True, text=True
96+
["uv", "build"],
97+
cwd=generated_template_path,
98+
capture_output=True,
99+
text=True,
100+
check=False,
89101
)
90102
assert result.returncode == 0, f"Build failed: {result.stderr}"
91103

@@ -123,7 +135,11 @@ def test_package_metadata_validity(
123135
"""Test that package metadata is valid."""
124136
# Build the package
125137
result = subprocess.run(
126-
["uv", "build"], cwd=generated_template_path, capture_output=True, text=True
138+
["uv", "build"],
139+
cwd=generated_template_path,
140+
capture_output=True,
141+
text=True,
142+
check=False,
127143
)
128144
assert result.returncode == 0, f"Build failed: {result.stderr}"
129145

@@ -158,15 +174,22 @@ def test_package_installation_from_wheel(
158174
"""Test that built wheel can be installed and used."""
159175
# Build the package
160176
result = subprocess.run(
161-
["uv", "build"], cwd=generated_template_path, capture_output=True, text=True
177+
["uv", "build"],
178+
cwd=generated_template_path,
179+
capture_output=True,
180+
text=True,
181+
check=False,
162182
)
163183
assert result.returncode == 0, f"Build failed: {result.stderr}"
164184

165185
# Create a test environment
166186
test_env = tmp_path_factory.mktemp("install_test")
167187

168188
result = subprocess.run(
169-
["uv", "venv", str(test_env / "venv")], capture_output=True, text=True
189+
["uv", "venv", str(test_env / "venv")],
190+
capture_output=True,
191+
text=True,
192+
check=False,
170193
)
171194
assert result.returncode == 0, (
172195
f"Virtual environment creation failed: {result.stderr}"
@@ -184,6 +207,7 @@ def test_package_installation_from_wheel(
184207
env=env,
185208
capture_output=True,
186209
text=True,
210+
check=False,
187211
)
188212
assert result.returncode == 0, f"Wheel installation failed: {result.stderr}"
189213

@@ -197,6 +221,7 @@ def test_package_installation_from_wheel(
197221
[str(venv_python), "-c", "import thing; print('Import successful')"],
198222
capture_output=True,
199223
text=True,
224+
check=False,
200225
)
201226
assert result.returncode == 0, (
202227
f"Installed package import failed: {result.stderr}"
@@ -210,7 +235,11 @@ def test_build_reproducibility(
210235
"""Test that builds are reproducible."""
211236
# Build once
212237
result1 = subprocess.run(
213-
["uv", "build"], cwd=generated_template_path, capture_output=True, text=True
238+
["uv", "build"],
239+
cwd=generated_template_path,
240+
capture_output=True,
241+
text=True,
242+
check=False,
214243
)
215244
assert result1.returncode == 0, f"First build failed: {result1.stderr}"
216245

@@ -222,7 +251,11 @@ def test_build_reproducibility(
222251
subprocess.run(["rm", "-rf", str(dist_dir)], check=True)
223252

224253
result2 = subprocess.run(
225-
["uv", "build"], cwd=generated_template_path, capture_output=True, text=True
254+
["uv", "build"],
255+
cwd=generated_template_path,
256+
capture_output=True,
257+
text=True,
258+
check=False,
226259
)
227260
assert result2.returncode == 0, f"Second build failed: {result2.stderr}"
228261

@@ -265,7 +298,11 @@ def test_build_with_different_backends(
265298

266299
# Test build
267300
result = subprocess.run(
268-
["uv", "build"], cwd=project_path, capture_output=True, text=True
301+
["uv", "build"],
302+
cwd=project_path,
303+
capture_output=True,
304+
text=True,
305+
check=False,
269306
)
270307
assert result.returncode == 0, (
271308
f"Build with {backend} backend failed: {result.stderr}"
@@ -286,7 +323,11 @@ def test_package_size_reasonable(
286323
"""Test that built packages are reasonably sized."""
287324
# Build the package
288325
result = subprocess.run(
289-
["uv", "build"], cwd=generated_template_path, capture_output=True, text=True
326+
["uv", "build"],
327+
cwd=generated_template_path,
328+
capture_output=True,
329+
text=True,
330+
check=False,
290331
)
291332
assert result.returncode == 0, f"Build failed: {result.stderr}"
292333

@@ -330,7 +371,11 @@ def test_clean_build_environment(
330371

331372
# Build in clean state
332373
result = subprocess.run(
333-
["uv", "build"], cwd=generated_template_path, capture_output=True, text=True
374+
["uv", "build"],
375+
cwd=generated_template_path,
376+
capture_output=True,
377+
text=True,
378+
check=False,
334379
)
335380
assert result.returncode == 0, f"Clean build failed: {result.stderr}"
336381

@@ -357,7 +402,11 @@ def test_version_consistency(
357402

358403
# Build and check wheel metadata version
359404
result = subprocess.run(
360-
["uv", "build"], cwd=generated_template_path, capture_output=True, text=True
405+
["uv", "build"],
406+
cwd=generated_template_path,
407+
capture_output=True,
408+
text=True,
409+
check=False,
361410
)
362411
assert result.returncode == 0, f"Build failed: {result.stderr}"
363412

tests/test_cli_integration.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
"""Advanced CLI integration tests for generated projects."""
22

3-
import json
43
import os
54
import subprocess
6-
import tempfile
75
from pathlib import Path
86

97
import pytest
@@ -32,7 +30,11 @@ def test_cli_help_system_comprehensive(
3230

3331
for cmd, description in cli_tests:
3432
result = subprocess.run(
35-
cmd, cwd=generated_template_path, capture_output=True, text=True
33+
cmd,
34+
cwd=generated_template_path,
35+
capture_output=True,
36+
text=True,
37+
check=False,
3638
)
3739
assert result.returncode == 0, f"Failed {description}: {result.stderr}"
3840

@@ -66,7 +68,11 @@ def test_cli_error_handling(
6668

6769
for cmd, expected_exit_code, description in error_tests:
6870
result = subprocess.run(
69-
cmd, cwd=generated_template_path, capture_output=True, text=True
71+
cmd,
72+
cwd=generated_template_path,
73+
capture_output=True,
74+
text=True,
75+
check=False,
7076
)
7177
# Allow some flexibility in exit codes (different versions may use different codes)
7278
assert result.returncode != 0, (
@@ -84,6 +90,7 @@ def test_cli_debug_functionality(
8490
cwd=generated_template_path,
8591
capture_output=True,
8692
text=True,
93+
check=False,
8794
)
8895
assert result.returncode == 0, f"Debug command failed: {result.stderr}"
8996

@@ -96,6 +103,7 @@ def test_cli_debug_functionality(
96103
cwd=generated_template_path,
97104
capture_output=True,
98105
text=True,
106+
check=False,
99107
)
100108
assert result.returncode == 0, f"Debug help failed: {result.stderr}"
101109
assert "Usage:" in result.stdout
@@ -111,6 +119,7 @@ def test_cli_as_module_and_script(
111119
cwd=generated_template_path,
112120
capture_output=True,
113121
text=True,
122+
check=False,
114123
)
115124
assert result_module.returncode == 0
116125

@@ -120,6 +129,7 @@ def test_cli_as_module_and_script(
120129
cwd=generated_template_path,
121130
capture_output=True,
122131
text=True,
132+
check=False,
123133
)
124134
# This might fail if not installed, which is OK
125135
if result_script.returncode == 0:
@@ -137,7 +147,6 @@ def test_cli_environment_variables(
137147
pytest.skip("Pydantic settings not enabled")
138148

139149
# Test with environment variable
140-
import os
141150

142151
env = os.environ.copy()
143152
env["THING_DEBUG"] = "true"
@@ -147,5 +156,6 @@ def test_cli_environment_variables(
147156
capture_output=True,
148157
text=True,
149158
env=env,
159+
check=False,
150160
)
151161
assert result.returncode == 0, f"CLI with env var failed: {result.stderr}"

tests/test_configuration_matrix.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ def test_build_backend_combinations(
6464
capture_output=True,
6565
text=True,
6666
timeout=60,
67+
check=False,
6768
)
6869
assert result.returncode == 0, (
6970
f"Build failed for {build_backend}: {result.stderr}"
@@ -325,6 +326,7 @@ def test_maximal_configuration(
325326
capture_output=True,
326327
text=True,
327328
timeout=60,
329+
check=False,
328330
)
329331
assert result.returncode == 0, (
330332
f"Tests failed in maximal config: {result.stderr}"

tests/test_cross_platform.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ def test_environment_variable_handling(
130130
capture_output=True,
131131
text=True,
132132
env=env,
133+
check=False,
133134
)
134135
assert result.returncode == 0, (
135136
f"CLI failed with env vars {env_vars}: {result.stderr}"
@@ -189,6 +190,7 @@ def test_unix_specific_features(
189190
cwd=generated_template_path,
190191
capture_output=True,
191192
text=True,
193+
check=False,
192194
)
193195
assert result.returncode == 0, "Basic shell commands should work"
194196

@@ -204,6 +206,7 @@ def test_windows_specific_features(
204206
cwd=generated_template_path,
205207
capture_output=True,
206208
text=True,
209+
check=False,
207210
)
208211
assert result.returncode == 0, "Basic Windows commands should work"
209212

@@ -235,6 +238,7 @@ def test_unicode_filenames_support(
235238
cwd=project_path,
236239
capture_output=True,
237240
text=True,
241+
check=False,
238242
)
239243
assert result.returncode == 0, f"Unicode path test failed: {result.stderr}"
240244

@@ -275,6 +279,7 @@ def test_long_path_support(
275279
cwd=project_path,
276280
capture_output=True,
277281
text=True,
282+
check=False,
278283
)
279284
assert result.returncode == 0, f"Long path test failed: {result.stderr}"
280285

@@ -328,6 +333,7 @@ def test_dependency_compatibility(
328333
cwd=generated_template_path,
329334
capture_output=True,
330335
text=True,
336+
check=False,
331337
)
332338

333339
# If lock file exists and is up to date, this should succeed
@@ -339,6 +345,7 @@ def test_dependency_compatibility(
339345
cwd=generated_template_path,
340346
capture_output=True,
341347
text=True,
348+
check=False,
342349
)
343350
assert result.returncode == 0, (
344351
f"Dependency resolution failed: {result.stderr}"

tests/test_edge_cases.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ def test_generated_project_imports_work(generated_template_path: Path) -> None:
8686
cwd=generated_template_path,
8787
capture_output=True,
8888
text=True,
89+
check=False,
8990
)
9091
assert result.returncode == 0, f"Module imports failed: {result.stderr}"
9192

@@ -97,6 +98,7 @@ def test_generated_project_cli_runs(generated_template_path: Path) -> None:
9798
cwd=generated_template_path,
9899
capture_output=True,
99100
text=True,
101+
check=False,
100102
)
101103
assert result.returncode == 0, f"CLI execution failed: {result.stderr}"
102104
assert "Usage:" in result.stdout, "CLI help should show usage information"
@@ -109,6 +111,7 @@ def test_generated_project_cli_version(generated_template_path: Path) -> None:
109111
cwd=generated_template_path,
110112
capture_output=True,
111113
text=True,
114+
check=False,
112115
)
113116
assert result.returncode == 0, f"CLI version command failed: {result.stderr}"
114117
assert "0.1.0" in result.stdout, "Version command should output project version"
@@ -117,7 +120,11 @@ def test_generated_project_cli_version(generated_template_path: Path) -> None:
117120
def test_generated_project_can_be_built(generated_template_path: Path) -> None:
118121
"""Test that generated project can be built as a package."""
119122
result = subprocess.run(
120-
["uv", "build"], cwd=generated_template_path, capture_output=True, text=True
123+
["uv", "build"],
124+
cwd=generated_template_path,
125+
capture_output=True,
126+
text=True,
127+
check=False,
121128
)
122129
assert result.returncode == 0, f"Package build failed: {result.stderr}"
123130

@@ -143,6 +150,7 @@ def test_generated_project_handles_debug_flag(generated_template_path: Path) ->
143150
cwd=generated_template_path,
144151
capture_output=True,
145152
text=True,
153+
check=False,
146154
)
147155
assert result.returncode == 0, f"CLI with debug flag failed: {result.stderr}"
148156

tests/test_generate_projects.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
""" """
22

3-
import pytest
4-
from pathlib import Path
53
import json
4+
from pathlib import Path
65

6+
import pytest
77
from cookiecutter.main import cookiecutter as bake
88

99
from .conftest import check_project_contents

0 commit comments

Comments
 (0)