@@ -591,6 +591,204 @@ unsetenv_var TESTSUITE_SPIDER_MODPATH2
591591unsetenv_var TESTSUITE_USE_MODULEPATH
592592
593593
594+ #
595+ # provided-alias test
596+ #
597+
598+ # skip test on MSYS platform or if symlink creation is not supported
599+ if {$is_symlink_supported && $os_name ne {msys}} {
600+
601+ setenv_var MODULES_TERM_WIDTH 200
602+ set mp $modpath.provide
603+
604+ file mkdir $mp
605+ file link -symbolic $mp/foo ../modulefiles.4/foo
606+ file link -symbolic $mp/bar ../modulefiles.4/bar
607+ file link -symbolic $mp/provide ../modulefiles.4/provide
608+ file link -symbolic $mp/.modulerc ../modulefiles.4/.modulerc
609+
610+ setenv_path_var MODULEPATH $mp
611+
612+ setenv_var TESTSUITE_PROVIDE multiple
613+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:alias
614+ setenv_var MODULES_AVAIL_TERSE_OUTPUT sym:tag:alias
615+
616+ testouterr_cmd sh {avail foo} OK {foo/1.0 foo/2.0 foo/9.0 }
617+ testouterr_cmd sh {avail foo/1} OK {foo/1.0 }
618+ testouterr_cmd sh {avail quux} OK {}
619+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 }
620+ testouterr_cmd sh {avail provide} OK {provide/1 provide/2 provide/3 }
621+
622+ setenv_var MODULES_AVAIL_TERSE_OUTPUT sym:tag:alias
623+
624+ testouterr_cmd sh {avail -t foo} OK "foo/1.0\nfoo/2.0\nfoo/9.0"
625+ testouterr_cmd sh {avail -t foo/1} OK "foo/1.0"
626+ testouterr_cmd sh {avail -t quux} OK {}
627+ testouterr_cmd sh {avail -t} OK "bar/1\nbar/2\nfoo/1.0\nfoo/2.0\nfoo/9.0\nprovide/1\nprovide/2\nprovide/3"
628+ testouterr_cmd sh {avail -t provide} OK "provide/1\nprovide/2\nprovide/3"
629+
630+ # Extra Match Search enabled with variant in output, but it does not trigger provided-alias insertion
631+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:alias:variant
632+
633+ testouterr_cmd sh {avail -t foo} OK "foo/1.0\nfoo/2.0\nfoo/9.0"
634+ testouterr_cmd sh {avail -t foo/1} OK "foo/1.0"
635+ testouterr_cmd sh {avail -t quux} OK {}
636+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 }
637+ testouterr_cmd sh {avail -t provide} OK "provide/1\nprovide/2\nprovide/3"
638+
639+ # Extra Match Search enabled with extra specifier set, but it does not trigger provided-alias insertion
640+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:alias
641+
642+ testouterr_cmd sh {avail -t foo not:tag:loaded} OK "foo/1.0\nfoo/2.0\nfoo/9.0"
643+ testouterr_cmd sh {avail -t foo/1 not:tag:loaded} OK "foo/1.0"
644+ testouterr_cmd sh {avail -t quux not:tag:loaded} OK {}
645+ testouterr_cmd sh {avail * not:tag:loaded} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 }
646+ testouterr_cmd sh {avail -t provide not:tag:loaded} OK "provide/1\nprovide/2\nprovide/3"
647+
648+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:alias:provided-alias
649+
650+ testouterr_cmd sh {avail foo} OK {foo/1(@) foo/1.0 foo/2.0 foo/9.0 }
651+ testouterr_cmd sh {avail foo/1} OK {foo/1(@) foo/1.0 }
652+ testouterr_cmd sh {avail quux} OK {quux/1(@) }
653+ testouterr_cmd sh {avail} OK {bar/1 bar/2 baz/1(@) foo/1(@) foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 quux/1(@) qux/1(@) }
654+ testouterr_cmd sh {avail provide} OK {provide/1 provide/2 provide/3 }
655+
656+ setenv_var MODULES_AVAIL_TERSE_OUTPUT sym:tag:alias:provided-alias
657+
658+ testouterr_cmd sh {avail -t foo} OK "foo/1(@)\nfoo/1.0\nfoo/2.0\nfoo/9.0"
659+ testouterr_cmd sh {avail -t foo/1} OK "foo/1(@)\nfoo/1.0"
660+ testouterr_cmd sh {avail -t quux} OK {quux/1(@)}
661+ testouterr_cmd sh {avail -t} OK "bar/1\nbar/2\nbaz/1(@)\nfoo/1(@)\nfoo/1.0\nfoo/2.0\nfoo/9.0\nprovide/1\nprovide/2\nprovide/3\nquux/1(@)\nqux/1(@)"
662+ testouterr_cmd sh {avail -t provide} OK "provide/1\nprovide/2\nprovide/3"
663+
664+ setenv_var MODULES_AVAIL_TERSE_OUTPUT sym:tag:alias:variant
665+
666+ setenv_var TESTSUITE_PROVIDE duplicate_with_family
667+
668+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:provided-alias
669+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 }
670+ testouterr_cmd sh {avail foo} OK {foo/1.0 foo/2.0 foo/9.0 }
671+
672+ setenv_var TESTSUITE_PROVIDE duplicate_with_ext_family
673+
674+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:provided-alias
675+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 }
676+ testouterr_cmd sh {avail foo} OK {foo/1.0 foo/2.0 foo/9.0 }
677+
678+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:alias
679+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 }
680+ testouterr_cmd sh {avail foo} OK {foo/1.0 foo/2.0 foo/9.0 }
681+
682+ setenv_var MODULES_AVAIL_OUTPUT sym:tag
683+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 }
684+ testouterr_cmd sh {avail foo} OK {foo/1.0 foo/2.0 foo/9.0 }
685+
686+ setenv_var TESTSUITE_PROVIDE duplicate_with_family3
687+
688+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:provided-alias
689+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 quux(@) }
690+ testouterr_cmd sh {avail quux} OK {quux(@) }
691+
692+ setenv_var TESTSUITE_PROVIDE duplicate_with_ext_family2
693+
694+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:provided-alias
695+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 quux(@) }
696+ testouterr_cmd sh {avail quux} OK {quux(@) }
697+
698+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:alias
699+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 }
700+ testouterr_cmd sh {avail quux} OK {}
701+
702+ setenv_var MODULES_AVAIL_OUTPUT sym:tag
703+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 }
704+ testouterr_cmd sh {avail quux} OK {}
705+
706+
707+ setenv_var TESTSUITE_PROVIDE duplicate_with_alias
708+
709+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 }
710+ testouterr_cmd sh {avail foo} OK {foo/1.0 foo/2.0 foo/9.0 }
711+
712+ setenv_var TESTSUITE_PROVIDE duplicate_with_ext_same_alias
713+
714+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:provided-alias
715+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 }
716+ testouterr_cmd sh {avail foo} OK {foo/1.0 foo/2.0 foo/9.0 }
717+
718+ setenv_var MODULES_AVAIL_OUTPUT sym:tag
719+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 }
720+ testouterr_cmd sh {avail foo} OK {foo/1.0 foo/2.0 foo/9.0 }
721+
722+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:alias
723+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo(@) foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 }
724+ testouterr_cmd sh {avail foo} OK {foo(@) foo/1.0 foo/2.0 foo/9.0 }
725+
726+ setenv_var TESTSUITE_PROVIDE duplicate_with_ext_diff_alias
727+
728+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:provided-alias
729+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 }
730+ testouterr_cmd sh {avail foo} OK {foo/1.0 foo/2.0 foo/9.0 }
731+
732+ setenv_var TESTSUITE_PROVIDE duplicate_with_alias3
733+
734+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 quux(@) }
735+ testouterr_cmd sh {avail quux} OK {quux(@) }
736+
737+ setenv_var TESTSUITE_PROVIDE duplicate_with_ext_same_alias2
738+
739+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:provided-alias
740+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 quux(@) }
741+ testouterr_cmd sh {avail quux} OK {quux(@) }
742+
743+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:alias
744+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 quux(@) }
745+ testouterr_cmd sh {avail quux} OK {quux(@) }
746+
747+ setenv_var MODULES_AVAIL_OUTPUT sym:tag
748+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 }
749+ testouterr_cmd sh {avail quux} OK {}
750+
751+ setenv_var TESTSUITE_PROVIDE duplicate_with_ext_diff_alias2
752+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:provided-alias
753+
754+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 quux(@) }
755+ testouterr_cmd sh {avail quux} OK {quux(@) }
756+
757+
758+ setenv_var TESTSUITE_PROVIDE duplicate_with_version
759+
760+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:provided-alias
761+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 provide/foo(@) }
762+ testouterr_cmd sh {avail provide} OK {provide/1 provide/2 provide/3 provide/foo(@) }
763+
764+ setenv_var MODULES_AVAIL_OUTPUT sym:tag
765+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 }
766+ testouterr_cmd sh {avail provide} OK {provide/1 provide/2 provide/3 }
767+
768+ setenv_var TESTSUITE_PROVIDE duplicate_with_ext_diff_version
769+
770+ setenv_var MODULES_AVAIL_OUTPUT sym:tag:provided-alias
771+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2(foo) provide/3 }
772+ testouterr_cmd sh {avail provide} OK {provide/1 provide/2(foo) provide/3 }
773+
774+ setenv_var MODULES_AVAIL_OUTPUT sym:tag
775+ testouterr_cmd sh {avail} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2(foo) provide/3 }
776+ testouterr_cmd sh {avail provide} OK {provide/1 provide/2(foo) provide/3 }
777+
778+
779+ file delete $mp/foo
780+ file delete $mp/bar
781+ file delete $mp/provide
782+ file delete $mp/.modulerc
783+ file delete $mp
784+
785+ unsetenv_var MODULES_TERM_WIDTH
786+
787+ } else {
788+ send_user "\tskipping provided-alias tests as specific test setup cannot be built\n"
789+ }
790+
791+
594792#
595793# hidden test
596794#
0 commit comments