@@ -318,6 +318,8 @@ def test_make_module_req(self):
318318 open (os .path .join (eb .installdir , 'foo.jar' ), 'w' ).write ('foo.jar' )
319319 open (os .path .join (eb .installdir , 'bla.jar' ), 'w' ).write ('bla.jar' )
320320 os .mkdir (os .path .join (eb .installdir , 'bin' ))
321+ os .mkdir (os .path .join (eb .installdir , 'bin' , 'testdir' ))
322+ os .mkdir (os .path .join (eb .installdir , 'sbin' ))
321323 os .mkdir (os .path .join (eb .installdir , 'share' ))
322324 os .mkdir (os .path .join (eb .installdir , 'share' , 'man' ))
323325 # this is not a path that should be picked up
@@ -329,17 +331,35 @@ def test_make_module_req(self):
329331 self .assertTrue (re .search (r"^prepend-path\s+CLASSPATH\s+\$root/bla.jar$" , guess , re .M ))
330332 self .assertTrue (re .search (r"^prepend-path\s+CLASSPATH\s+\$root/foo.jar$" , guess , re .M ))
331333 self .assertTrue (re .search (r"^prepend-path\s+MANPATH\s+\$root/share/man$" , guess , re .M ))
332- self .assertTrue (re .search (r"^prepend-path\s+PATH\s+\$root/bin$" , guess , re .M ))
334+ # bin/ is not added to $PATH if it doesn't include files
335+ self .assertFalse (re .search (r"^prepend-path\s+PATH\s+\$root/bin$" , guess , re .M ))
336+ self .assertFalse (re .search (r"^prepend-path\s+PATH\s+\$root/sbin$" , guess , re .M ))
337+ # no include/ subdirectory, so no $CPATH update statement
333338 self .assertFalse (re .search (r"^prepend-path\s+CPATH\s+.*$" , guess , re .M ))
334339 elif get_module_syntax () == 'Lua' :
335340 self .assertTrue (re .search (r'^prepend_path\("CLASSPATH", pathJoin\(root, "bla.jar"\)\)$' , guess , re .M ))
336341 self .assertTrue (re .search (r'^prepend_path\("CLASSPATH", pathJoin\(root, "foo.jar"\)\)$' , guess , re .M ))
337342 self .assertTrue (re .search (r'^prepend_path\("MANPATH", pathJoin\(root, "share/man"\)\)$' , guess , re .M ))
338- self .assertTrue (re .search (r'^prepend_path\("PATH", pathJoin\(root, "bin"\)\)$' , guess , re .M ))
343+ # bin/ is not added to $PATH if it doesn't include files
344+ self .assertFalse (re .search (r'^prepend_path\("PATH", pathJoin\(root, "bin"\)\)$' , guess , re .M ))
345+ self .assertFalse (re .search (r'^prepend_path\("PATH", pathJoin\(root, "sbin"\)\)$' , guess , re .M ))
346+ # no include/ subdirectory, so no $CPATH update statement
339347 self .assertFalse (re .search (r'^prepend_path\("CPATH", .*\)$' , guess , re .M ))
340348 else :
341349 self .assertTrue (False , "Unknown module syntax: %s" % get_module_syntax ())
342350
351+ # check that bin is only added to PATH if there are files in there
352+ open (os .path .join (eb .installdir , 'bin' , 'test' ), 'w' ).write ('test' )
353+ guess = eb .make_module_req ()
354+ if get_module_syntax () == 'Tcl' :
355+ self .assertTrue (re .search (r"^prepend-path\s+PATH\s+\$root/bin$" , guess , re .M ))
356+ self .assertFalse (re .search (r"^prepend-path\s+PATH\s+\$root/sbin$" , guess , re .M ))
357+ elif get_module_syntax () == 'Lua' :
358+ self .assertTrue (re .search (r'^prepend_path\("PATH", pathJoin\(root, "bin"\)\)$' , guess , re .M ))
359+ self .assertFalse (re .search (r'^prepend_path\("PATH", pathJoin\(root, "sbin"\)\)$' , guess , re .M ))
360+ else :
361+ self .assertTrue (False , "Unknown module syntax: %s" % get_module_syntax ())
362+
343363 # check for behavior when a string value is used as dict value by make_module_req_guesses
344364 eb .make_module_req_guess = lambda : {'PATH' : 'bin' }
345365 txt = eb .make_module_req ()
0 commit comments