@@ -115,13 +115,7 @@ def __build_ts_test_package(base_path, script_contents=''):
115
115
116
116
def test_module_dependency_resolver ():
117
117
with __test_base_path () as temp_directory :
118
- module_script = os .path .join (temp_directory , "modulecmd" )
119
- __write_script (module_script , '''#!/bin/sh
120
- cat %s/example_output 1>&2;
121
- ''' % temp_directory )
122
- with open (os .path .join (temp_directory , "example_output" ), "w" ) as f :
123
- # Subset of module avail from MSI cluster.
124
- f .write ('''
118
+ module_script = _setup_module_command (temp_directory , '''
125
119
-------------------------- /soft/modules/modulefiles ---------------------------
126
120
JAGS/3.2.0-gcc45
127
121
JAGS/3.3.0-gcc4.7.2
@@ -141,7 +135,7 @@ def test_module_dependency_resolver():
141
135
advisor/2013/update2 intel/11.1.080 mkl/10.2.5.035
142
136
advisor/2013/update3 intel/12.0 mkl/10.2.7.041
143
137
''' )
144
- resolver = ModuleDependencyResolver (None , modulecmd = module_script )
138
+ resolver = ModuleDependencyResolver (_SimpleDependencyManager () , modulecmd = module_script )
145
139
module = resolver .resolve ( ToolRequirement ( name = "R" , version = None , type = "package" ) )
146
140
assert module .module_name == "R"
147
141
assert module .module_version is None
@@ -154,6 +148,74 @@ def test_module_dependency_resolver():
154
148
assert isinstance (module , NullDependency )
155
149
156
150
151
+ def test_module_resolver_with_mapping ():
152
+ with __test_base_path () as temp_directory :
153
+ module_script = _setup_module_command (temp_directory , '''
154
+ -------------------------- /soft/modules/modulefiles ---------------------------
155
+ blast/2.24
156
+ ''' )
157
+ mapping_file = os .path .join (temp_directory , "mapping" )
158
+ with open (mapping_file , "w" ) as f :
159
+ f .write ('''
160
+ - from: blast+
161
+ to: blast
162
+ ''' )
163
+
164
+ resolver = ModuleDependencyResolver (_SimpleDependencyManager (), modulecmd = module_script , mapping_file = mapping_file )
165
+ module = resolver .resolve ( ToolRequirement ( name = "blast+" , version = "2.24" , type = "package" ) )
166
+ assert module .module_name == "blast"
167
+ assert module .module_version == "2.24" , module .module_version
168
+
169
+
170
+ def test_module_resolver_with_mapping_versions ():
171
+ with __test_base_path () as temp_directory :
172
+ module_script = _setup_module_command (temp_directory , '''
173
+ -------------------------- /soft/modules/modulefiles ---------------------------
174
+ blast/2.22.0-mpi
175
+ blast/2.23
176
+ blast/2.24.0-mpi
177
+ ''' )
178
+ mapping_file = os .path .join (temp_directory , "mapping" )
179
+ with open (mapping_file , "w" ) as f :
180
+ f .write ('''
181
+ - from:
182
+ name: blast+
183
+ version: 2.24
184
+ to:
185
+ name: blast
186
+ version: 2.24.0-mpi
187
+ - from:
188
+ name: blast
189
+ version: 2.22
190
+ to:
191
+ version: 2.22.0-mpi
192
+ ''' )
193
+
194
+ resolver = ModuleDependencyResolver (_SimpleDependencyManager (), modulecmd = module_script , mapping_file = mapping_file )
195
+ module = resolver .resolve ( ToolRequirement ( name = "blast+" , version = "2.24" , type = "package" ) )
196
+ assert module .module_name == "blast"
197
+ assert module .module_version == "2.24.0-mpi" , module .module_version
198
+
199
+ resolver = ModuleDependencyResolver (_SimpleDependencyManager (), modulecmd = module_script , mapping_file = mapping_file )
200
+ module = resolver .resolve ( ToolRequirement ( name = "blast+" , version = "2.23" , type = "package" ) )
201
+ assert isinstance (module , NullDependency )
202
+
203
+ module = resolver .resolve ( ToolRequirement ( name = "blast" , version = "2.22" , type = "package" ) )
204
+ assert module .module_name == "blast"
205
+ assert module .module_version == "2.22.0-mpi" , module .module_version
206
+
207
+
208
+ def _setup_module_command (temp_directory , contents ):
209
+ module_script = os .path .join (temp_directory , "modulecmd" )
210
+ __write_script (module_script , '''#!/bin/sh
211
+ cat %s/example_output 1>&2;
212
+ ''' % temp_directory )
213
+ with open (os .path .join (temp_directory , "example_output" ), "w" ) as f :
214
+ # Subset of module avail from MSI cluster.
215
+ f .write (contents )
216
+ return module_script
217
+
218
+
157
219
def test_module_dependency ():
158
220
with __test_base_path () as temp_directory :
159
221
# Create mock modulecmd script that just exports a variable
@@ -386,3 +448,9 @@ def __dependency_manager(xml_content):
386
448
f .flush ()
387
449
dm = DependencyManager ( default_base_path = base_path , conf_file = f .name )
388
450
yield dm
451
+
452
+
453
+ class _SimpleDependencyManager (object ):
454
+
455
+ def get_resolver_option (self , resolver , key , explicit_resolver_options = {}):
456
+ return explicit_resolver_options .get (key )
0 commit comments