44Contents may be updated in future template updates.
55"""
66
7- import json
87import subprocess
8+ import tomllib
99from pathlib import Path
1010
1111import pytest
1212from clio_tools .data_module import ModuleInterface
1313
1414
1515@pytest .fixture (scope = "module" )
16- def pixi_environments (module_path ) -> dict :
17- """Pixi environments defined for this project."""
18- process = subprocess .run (
19- ["pixi" , "info" , "--json" ],
20- check = True ,
21- cwd = module_path ,
22- capture_output = True ,
23- text = True ,
24- )
25- return {
26- environment ["name" ]: environment
27- for environment in json .loads (process .stdout )["environments_info" ]
28- }
16+ def pixi_platforms (module_path ) -> list [str ]:
17+ """Pixi platforms defined for this project."""
18+ with (module_path / "pixi.toml" ).open ("rb" ) as pixi_config :
19+ return tomllib .load (pixi_config )["workspace" ]["platforms" ]
2920
3021
31- def test_snakemake_environments (module_path , pixi_environments , tmp_path ):
22+ def test_snakemake_environments (module_path , pixi_platforms , tmp_path ):
3223 """All Snakemake environment files should be based on pixi counterparts."""
3324 env_dir = module_path / "workflow/envs"
3425 env_files = sorted (env_dir .glob ("*.yaml" ))
@@ -47,7 +38,7 @@ def test_snakemake_environments(module_path, pixi_environments, tmp_path):
4738 generated_yaml = output_dir / env_file .name
4839 assert generated_yaml .read_text () == env_file .read_text ()
4940
50- for platform in pixi_environments [ env_name ][ "platforms" ] :
41+ for platform in pixi_platforms :
5142 pin_file = env_dir / f"{ env_name } .{ platform } .pin.txt"
5243 assert pin_file .exists (), f"{ env_name } has no conda pins for { platform } "
5344
0 commit comments