@@ -43,72 +43,84 @@ def _make_compose(
4343def patched_resources (monkeypatch ):
4444 """Patch machine resource detection with standard mock values.
4545
46- Returns a list that captures all log_warning calls .
46+ Returns a tuple of (warnings, errors) lists .
4747 """
4848 warnings = []
49+ errors = []
4950 monkeypatch .setattr ("oss_crs.src.crs_compose.os.cpu_count" , lambda : MOCK_CPU_COUNT )
5051 monkeypatch .setattr ("oss_crs.src.crs_compose.get_host_memory" , lambda : MOCK_MEMORY )
5152 monkeypatch .setattr (
5253 "oss_crs.src.crs_compose.log_warning" , lambda msg : warnings .append (msg )
5354 )
54- return warnings
55+ monkeypatch .setattr (
56+ "oss_crs.src.crs_compose.log_error" , lambda msg : errors .append (msg )
57+ )
58+ return warnings , errors
5559
5660
5761## CPU and memory checks
5862
5963
6064def test_cpu_within_bounds_no_warning (patched_resources ):
65+ warnings , errors = patched_resources
6166 compose = _make_compose (f"0-{ MOCK_CPU_COUNT - 2 } " )
62- compose ._validate_machine_resources ()
63- assert len (patched_resources ) == 0
67+ assert compose ._validate_machine_resources () is True
68+ assert len (errors ) == 0
6469
6570
6671def test_cpu_at_max_valid_id_no_warning (patched_resources ):
72+ warnings , errors = patched_resources
6773 compose = _make_compose (f"0-{ MOCK_CPU_COUNT - 1 } " )
68- compose ._validate_machine_resources ()
69- assert len (patched_resources ) == 0
74+ assert compose ._validate_machine_resources () is True
75+ assert len (errors ) == 0
7076
7177
72- def test_cpu_equals_machine_count_warns (patched_resources ):
78+ def test_cpu_equals_machine_count_errors (patched_resources ):
79+ warnings , errors = patched_resources
7380 compose = _make_compose (f"0-{ MOCK_CPU_COUNT } " )
74- compose ._validate_machine_resources ()
75- assert len (patched_resources ) == 1
76- assert "does not have adequate resources" in patched_resources [0 ]
81+ assert compose ._validate_machine_resources () is False
82+ assert len (errors ) == 1
83+ assert "does not have adequate resources" in errors [0 ]
7784
7885
79- def test_cpu_exceeds_machine_count_warns (patched_resources ):
86+ def test_cpu_exceeds_machine_count_errors (patched_resources ):
87+ warnings , errors = patched_resources
8088 compose = _make_compose (f"0-{ MOCK_CPU_COUNT + 1 } " )
81- compose ._validate_machine_resources ()
82- assert len (patched_resources ) == 1
83- assert "does not have adequate resources" in patched_resources [0 ]
89+ assert compose ._validate_machine_resources () is False
90+ assert len (errors ) == 1
91+ assert "does not have adequate resources" in errors [0 ]
8492
8593
8694def test_memory_at_exact_limit_no_warning (patched_resources ):
95+ warnings , errors = patched_resources
8796 exact_memory = f"{ MOCK_MEMORY // (1024 ** 3 )} G"
8897 compose = _make_compose ("0-3" , exact_memory )
89- compose ._validate_machine_resources ()
90- assert len (patched_resources ) == 0
98+ assert compose ._validate_machine_resources () is True
99+ assert len (errors ) == 0
91100
92101
93- def test_memory_over_limit_warns (patched_resources ):
102+ def test_memory_over_limit_errors (patched_resources ):
103+ warnings , errors = patched_resources
94104 over_memory = f"{ (MOCK_MEMORY // (1024 ** 3 )) + 1 } G"
95105 compose = _make_compose ("0-3" , over_memory )
96- compose ._validate_machine_resources ()
97- assert len (patched_resources ) == 1
98- assert "does not have adequate resources" in patched_resources [0 ]
106+ assert compose ._validate_machine_resources () is False
107+ assert len (errors ) == 1
108+ assert "does not have adequate resources" in errors [0 ]
99109
100110
101- def test_crs_entry_exceeds_cpu_count_warns (patched_resources ):
111+ def test_crs_entry_exceeds_cpu_count_errors (patched_resources ):
112+ warnings , errors = patched_resources
102113 compose = _make_compose (
103114 "0-3" ,
104115 crs_entries = {"crs-a" : _FakeResource (f"0-{ MOCK_CPU_COUNT } " , "4G" )},
105116 )
106- compose ._validate_machine_resources ()
107- assert len (patched_resources ) == 1
108- assert "does not have adequate resources" in patched_resources [0 ]
117+ assert compose ._validate_machine_resources () is False
118+ assert len (errors ) == 1
119+ assert "does not have adequate resources" in errors [0 ]
109120
110121
111- def test_combined_memory_across_entries_warns (patched_resources ):
122+ def test_combined_memory_across_entries_errors (patched_resources ):
123+ warnings , errors = patched_resources
112124 half_memory = f"{ MOCK_MEMORY // (1024 ** 3 ) // 2 + 1 } G"
113125 compose = _make_compose (
114126 "0-3" ,
@@ -117,58 +129,71 @@ def test_combined_memory_across_entries_warns(patched_resources):
117129 "crs-a" : _FakeResource ("0-3" , half_memory ),
118130 },
119131 )
120- compose ._validate_machine_resources ()
121- assert len (patched_resources ) == 1
122- assert "does not have adequate resources" in patched_resources [0 ]
132+ assert compose ._validate_machine_resources () is False
133+ assert len (errors ) == 1
134+ assert "does not have adequate resources" in errors [0 ]
123135
124136
125137def test_both_adequate_no_warning (patched_resources ):
138+ warnings , errors = patched_resources
126139 compose = _make_compose ("0-3" , "4G" )
127- compose ._validate_machine_resources ()
128- assert len (patched_resources ) == 0
140+ assert compose ._validate_machine_resources () is True
141+ assert len (errors ) == 0
129142
130143
131144## undetectable machine resources checks
132145
133146
134147def test_undetectable_cpu_skips_check (monkeypatch ):
135148 warnings = []
149+ errors = []
136150 monkeypatch .setattr ("oss_crs.src.crs_compose.os.cpu_count" , lambda : None )
137151 monkeypatch .setattr ("oss_crs.src.crs_compose.get_host_memory" , lambda : MOCK_MEMORY )
138152 monkeypatch .setattr (
139153 "oss_crs.src.crs_compose.log_warning" , lambda msg : warnings .append (msg )
140154 )
155+ monkeypatch .setattr (
156+ "oss_crs.src.crs_compose.log_error" , lambda msg : errors .append (msg )
157+ )
141158
142159 compose = _make_compose ("0-3" )
143- compose ._validate_machine_resources ()
160+ assert compose ._validate_machine_resources () is True
144161 assert len (warnings ) == 1
145162 assert "Could not determine machine resources" in warnings [0 ]
163+ assert len (errors ) == 0
146164
147165
148166def test_undetectable_memory_skips_check (monkeypatch ):
149167 warnings = []
168+ errors = []
150169 monkeypatch .setattr ("oss_crs.src.crs_compose.os.cpu_count" , lambda : MOCK_CPU_COUNT )
151170 monkeypatch .setattr ("oss_crs.src.crs_compose.get_host_memory" , lambda : None )
152171 monkeypatch .setattr (
153172 "oss_crs.src.crs_compose.log_warning" , lambda msg : warnings .append (msg )
154173 )
174+ monkeypatch .setattr (
175+ "oss_crs.src.crs_compose.log_error" , lambda msg : errors .append (msg )
176+ )
155177
156178 compose = _make_compose ("0-3" )
157- compose ._validate_machine_resources ()
179+ assert compose ._validate_machine_resources () is True
158180 assert len (warnings ) == 1
159181 assert "Could not determine machine resources" in warnings [0 ]
182+ assert len (errors ) == 0
160183
161184
162185# parsing error checks
163186
164187
165188def test_invalid_cpuset_warns (patched_resources ):
189+ warnings , errors = patched_resources
166190 compose = _make_compose ("not-a-cpuset" , "4G" )
167191 compose ._validate_machine_resources ()
168- assert any ("Failed to validate cpuset" in w for w in patched_resources )
192+ assert any ("Failed to validate cpuset" in w for w in warnings )
169193
170194
171195def test_invalid_memory_string_warns (patched_resources ):
196+ warnings , errors = patched_resources
172197 compose = _make_compose ("0-3" , "notmemory" )
173198 compose ._validate_machine_resources ()
174- assert any ("Failed to parse memory" in w for w in patched_resources )
199+ assert any ("Failed to parse memory" in w for w in warnings )
0 commit comments