1+ import os
12from typing import Dict , Optional , Set
23from unittest .mock import sentinel , patch
34
1314from tests .adaptors .modulefinder import BaseFakeModuleFinder
1415from tests .config import override_settings
1516
17+ SOME_CPU_COUNT = 8
18+
1619
1720class TestBuildGraph :
1821 @pytest .mark .parametrize ("include_external_packages" , (True , False ))
@@ -135,17 +138,49 @@ def write(
135138 usecases .build_graph ("mypackage" , ** kwargs )
136139
137140 @patch .object (usecases , "_scan_chunks" , return_value = {})
138- @patch .object (joblib , "cpu_count" , return_value = 8 )
141+ @patch .object (joblib , "cpu_count" , return_value = SOME_CPU_COUNT )
139142 @pytest .mark .parametrize (
140- "number_of_modules, expected_number_of_chunks" ,
143+ "number_of_modules, fake_environ, expected_number_of_chunks" ,
141144 [
142- (49 , 1 ), # Below threshold - just use one.
143- (50 , 8 ), # At threshold - use number of CPUs.
144- (1000 , 8 ), # Above threshold - use number of CPUs.
145+ (
146+ usecases .DEFAULT_MIN_NUMBER_OF_MODULES_TO_SCAN_USING_MULTIPROCESSING - 1 ,
147+ {},
148+ 1 ,
149+ ),
150+ (
151+ usecases .DEFAULT_MIN_NUMBER_OF_MODULES_TO_SCAN_USING_MULTIPROCESSING ,
152+ {},
153+ SOME_CPU_COUNT ,
154+ ),
155+ (
156+ usecases .DEFAULT_MIN_NUMBER_OF_MODULES_TO_SCAN_USING_MULTIPROCESSING + 1 ,
157+ {},
158+ SOME_CPU_COUNT ,
159+ ),
160+ (
161+ 149 ,
162+ {usecases .MIN_NUMBER_OF_MODULES_TO_SCAN_USING_MULTIPROCESSING_ENV_NAME : 150 },
163+ 1 ,
164+ ),
165+ (
166+ 150 ,
167+ {usecases .MIN_NUMBER_OF_MODULES_TO_SCAN_USING_MULTIPROCESSING_ENV_NAME : 150 },
168+ SOME_CPU_COUNT ,
169+ ),
170+ (
171+ 151 ,
172+ {usecases .MIN_NUMBER_OF_MODULES_TO_SCAN_USING_MULTIPROCESSING_ENV_NAME : 150 },
173+ SOME_CPU_COUNT ,
174+ ),
145175 ],
146176 )
147177 def test_scanning_multiprocessing_respects_min_number_of_modules (
148- self , mock_cpu_count , mock_scan_chunks , number_of_modules , expected_number_of_chunks
178+ self ,
179+ mock_cpu_count ,
180+ mock_scan_chunks ,
181+ number_of_modules ,
182+ fake_environ ,
183+ expected_number_of_chunks ,
149184 ):
150185 class FakePackageFinder (BaseFakePackageFinder ):
151186 directory_map = {"mypackage" : "/path/to/mypackage" }
@@ -167,7 +202,7 @@ class FakeModuleFinder(BaseFakeModuleFinder):
167202 FILE_SYSTEM = FakeFileSystem (),
168203 PACKAGE_FINDER = FakePackageFinder (),
169204 MODULE_FINDER = FakeModuleFinder (),
170- ):
205+ ), patch . object ( os , "environ" , fake_environ ) :
171206 usecases .build_graph ("mypackage" , cache_dir = None )
172207
173208 [call ] = mock_scan_chunks .call_args_list
0 commit comments