@@ -621,6 +621,7 @@ unsetenv_var TESTSUITE_SPIDER_MODPATH2
621621if {$is_symlink_supported && $os_name ne {msys}} {
622622
623623setenv_var MODULES_TERM_WIDTH 200
624+ setenv_var MODULES_ADVANCED_VERSION_SPEC 1
624625set mp $modpath.provide
625626
626627file mkdir $mp
@@ -798,13 +799,138 @@ testouterr_cmd sh {spider} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/
798799testouterr_cmd sh {spider provide} OK {provide/1 provide/2(foo) provide/3 }
799800
800801
802+ setenv_var MODULES_SPIDER_OUTPUT sym:tag:provided-alias
803+
804+ setenv_var TESTSUITE_PROVIDE multiple_and_forbidden
805+
806+ testouterr_cmd sh {spider} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 <F> provide/2 provide/3 }
807+ testouterr_cmd sh {spider provide} OK {provide/1 <F> provide/2 provide/3 }
808+ testouterr_cmd sh {spider provide/1} OK {provide/1 <F> }
809+ testouterr_cmd sh {spider unk} OK {}
810+ testouterr_cmd sh {spider quux/1} OK {}
811+
812+ testouterr_cmd sh {spider envvar:FOO} OK {}
813+ testouterr_cmd sh {spider provide envvar:FOO} OK {}
814+ testouterr_cmd sh {spider unk envvar:FOO} OK {}
815+ testouterr_cmd sh {spider quux/1 envvar:FOO} OK {}
816+
817+
818+ setenv_var TESTSUITE_PROVIDE multiple_and_alias_forbidden
819+
820+ testouterr_cmd sh {spider} 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(@) <F> qux/1(@) }
821+ testouterr_cmd sh {spider provide} OK {provide/1 provide/2 provide/3 }
822+ testouterr_cmd sh {spider provide/1} OK {provide/1 }
823+ testouterr_cmd sh {spider unk} OK {}
824+ testouterr_cmd sh {spider quux/1} OK {quux/1(@) <F> }
825+
826+ testouterr_cmd sh {spider envvar:FOO} OK {provide/1 }
827+ testouterr_cmd sh {spider provide envvar:FOO} OK {provide/1 }
828+ testouterr_cmd sh {spider unk envvar:FOO} OK {}
829+ testouterr_cmd sh {spider quux/1 envvar:FOO} OK {}
830+
831+
832+ setenv_var TESTSUITE_PROVIDE multiple_and_family_forbidden
833+
834+ testouterr_cmd sh {spider} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 quux(@) <F> }
835+ testouterr_cmd sh {spider provide/1} OK {provide/1 }
836+ testouterr_cmd sh {spider unk} OK {}
837+ testouterr_cmd sh {spider quux} OK {quux(@) <F> }
838+
839+ testouterr_cmd sh {spider envvar:FOO} OK {provide/1 }
840+ testouterr_cmd sh {spider provide envvar:FOO} OK {provide/1 }
841+ testouterr_cmd sh {spider unk envvar:FOO} OK {}
842+ testouterr_cmd sh {spider quux envvar:FOO} OK {}
843+
844+
845+ setenv_var TESTSUITE_PROVIDE multiple_and_expired
846+
847+ testouterr_cmd sh {spider} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 <F> provide/2 provide/3 }
848+ testouterr_cmd sh {spider provide} OK {provide/1 <F> provide/2 provide/3 }
849+ testouterr_cmd sh {spider provide/1} OK {provide/1 <F> }
850+ testouterr_cmd sh {spider unk} OK {}
851+ testouterr_cmd sh {spider quux/1} OK {}
852+
853+ testouterr_cmd sh {spider envvar:FOO} OK {}
854+ testouterr_cmd sh {spider provide envvar:FOO} OK {}
855+ testouterr_cmd sh {spider unk envvar:FOO} OK {}
856+ testouterr_cmd sh {spider quux envvar:FOO} OK {}
857+
858+
859+ setenv_var TESTSUITE_PROVIDE multiple_and_alias_expired
860+
861+ testouterr_cmd sh {spider} 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(@) <F> qux/1(@) }
862+ testouterr_cmd sh {spider provide} OK {provide/1 provide/2 provide/3 }
863+ testouterr_cmd sh {spider provide/1} OK {provide/1 }
864+ testouterr_cmd sh {spider unk} OK {}
865+ testouterr_cmd sh {spider quux/1} OK {quux/1(@) <F> }
866+
867+ testouterr_cmd sh {spider envvar:FOO} OK {provide/1 }
868+ testouterr_cmd sh {spider provide envvar:FOO} OK {provide/1 }
869+ testouterr_cmd sh {spider unk envvar:FOO} OK {}
870+ testouterr_cmd sh {spider quux/1 envvar:FOO} OK {}
871+
872+
873+ setenv_var TESTSUITE_PROVIDE multiple_and_family_expired
874+
875+ testouterr_cmd sh {spider} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 quux(@) <F> }
876+ testouterr_cmd sh {spider provide/1} OK {provide/1 }
877+ testouterr_cmd sh {spider unk} OK {}
878+ testouterr_cmd sh {spider quux} OK {quux(@) <F> }
879+
880+ testouterr_cmd sh {spider envvar:FOO} OK {provide/1 }
881+ testouterr_cmd sh {spider provide envvar:FOO} OK {provide/1 }
882+ testouterr_cmd sh {spider unk envvar:FOO} OK {}
883+ testouterr_cmd sh {spider quux envvar:FOO} OK {}
884+
885+
886+ setenv_var TESTSUITE_PROVIDE multiple_and_hidden
887+
888+ testouterr_cmd sh {spider} OK {bar/1 bar/2 baz/1(@) foo/1(@) foo/1.0 foo/2.0 foo/9.0 provide/2 provide/3 quux/1(@) qux/1(@) }
889+ testouterr_cmd sh {spider provide} OK {provide/2 provide/3 }
890+ testouterr_cmd sh {spider provide/1} OK {provide/1 <H> }
891+ testouterr_cmd sh {spider unk} OK {}
892+ testouterr_cmd sh {spider quux/1} OK {quux/1(@) }
893+
894+ testouterr_cmd sh {spider envvar:FOO} OK {}
895+ testouterr_cmd sh {spider provide envvar:FOO} OK {}
896+ testouterr_cmd sh {spider unk envvar:FOO} OK {}
897+ testouterr_cmd sh {spider quux envvar:FOO} OK {}
898+
899+
900+ setenv_var TESTSUITE_PROVIDE multiple_and_alias_hidden
901+
902+ testouterr_cmd sh {spider} OK {bar/1 bar/2 baz/1(@) foo/1(@) foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 qux/1(@) }
903+ testouterr_cmd sh {spider provide} OK {provide/1 provide/2 provide/3 }
904+ testouterr_cmd sh {spider provide/1} OK {provide/1 }
905+ testouterr_cmd sh {spider unk} OK {}
906+ testouterr_cmd sh {spider quux/1} OK {quux/1(@) <H> }
907+
908+ testouterr_cmd sh {spider envvar:FOO} OK {provide/1 }
909+ testouterr_cmd sh {spider provide envvar:FOO} OK {provide/1 }
910+ testouterr_cmd sh {spider unk envvar:FOO} OK {}
911+ testouterr_cmd sh {spider quux/1 envvar:FOO} OK {}
912+
913+
914+ setenv_var TESTSUITE_PROVIDE multiple_and_family_hidden
915+
916+ testouterr_cmd sh {spider} OK {bar/1 bar/2 foo/1.0 foo/2.0 foo/9.0 provide/1 provide/2 provide/3 }
917+ testouterr_cmd sh {spider provide/1} OK {provide/1 }
918+ testouterr_cmd sh {spider unk} OK {}
919+ testouterr_cmd sh {spider quux} OK {quux(@) <H> }
920+
921+ testouterr_cmd sh {spider envvar:FOO} OK {provide/1 }
922+ testouterr_cmd sh {spider provide envvar:FOO} OK {provide/1 }
923+ testouterr_cmd sh {spider unk envvar:FOO} OK {}
924+ testouterr_cmd sh {spider quux envvar:FOO} OK {}
925+
801926file delete $mp/foo
802927file delete $mp/bar
803928file delete $mp/provide
804929file delete $mp/.modulerc
805930file delete $mp
806931
807932unsetenv_var MODULES_TERM_WIDTH
933+ setenv_var MODULES_ADVANCED_VERSION_SPEC 0
808934
809935} else {
810936 send_user "\tskipping provided-alias tests as specific test setup cannot be built\n"
0 commit comments