@@ -499,21 +499,83 @@ public void testModuleExtensions_good() throws Exception {
499499 }
500500
501501 @ Test
502- public void testModuleExtensions_duplicateProxy () throws Exception {
502+ public void testModuleExtensions_duplicateProxy_asRoot () throws Exception {
503+ scratch .file (
504+ rootDirectory .getRelative ("MODULE.bazel" ).getPathString (),
505+ "myext1 = use_extension('//:defs.bzl','myext',dev_dependency=True)" ,
506+ "use_repo(myext1, 'alpha')" ,
507+ "myext2 = use_extension('//:defs.bzl','myext')" ,
508+ "use_repo(myext2, 'beta')" ,
509+ "myext3 = use_extension('//:defs.bzl','myext',dev_dependency=True)" ,
510+ "use_repo(myext3, 'gamma')" ,
511+ "myext4 = use_extension('//:defs.bzl','myext')" ,
512+ "use_repo(myext4, 'delta')" );
513+ ModuleFileFunction .REGISTRIES .set (differencer , ImmutableList .of ());
514+
515+ SkyKey skyKey = ModuleFileValue .KEY_FOR_ROOT_MODULE ;
516+ EvaluationResult <ModuleFileValue > result =
517+ driver .evaluate (ImmutableList .of (skyKey ), evaluationContext );
518+ if (result .hasError ()) {
519+ throw result .getError ().getException ();
520+ }
521+ ModuleFileValue moduleFileValue = result .get (skyKey );
522+ assertThat (moduleFileValue .getModule ())
523+ .isEqualTo (
524+ Module .builder ()
525+ .setKey (ModuleKey .ROOT )
526+ .addExtensionUsage (
527+ ModuleExtensionUsage .builder ()
528+ .setExtensionBzlFile ("//:defs.bzl" )
529+ .setExtensionName ("myext" )
530+ .setLocation (Location .fromFileLineColumn ("<root>/MODULE.bazel" , 1 , 23 ))
531+ .setImports (
532+ ImmutableBiMap .of (
533+ "alpha" , "alpha" , "beta" , "beta" , "gamma" , "gamma" , "delta" ,
534+ "delta" ))
535+ .build ())
536+ .build ());
537+ }
538+
539+ @ Test
540+ public void testModuleExtensions_duplicateProxy_asDep () throws Exception {
503541 FakeRegistry registry =
504542 registryFactory
505543 .newFakeRegistry ("/foo" )
506544 .addModule (
507545 createModuleKey ("mymod" , "1.0" ),
508546 "module(name='mymod',version='1.0')" ,
509- "myext1 = use_extension('//:defs.bzl','myext')" ,
510- "myext2 = use_extension('//:defs.bzl','myext')" );
547+ "myext1 = use_extension('//:defs.bzl','myext',dev_dependency=True)" ,
548+ "use_repo(myext1, 'alpha')" ,
549+ "myext2 = use_extension('//:defs.bzl','myext')" ,
550+ "use_repo(myext2, 'beta')" ,
551+ "myext3 = use_extension('//:defs.bzl','myext',dev_dependency=True)" ,
552+ "use_repo(myext3, 'gamma')" ,
553+ "myext4 = use_extension('//:defs.bzl','myext')" ,
554+ "use_repo(myext4, 'delta')" );
511555 ModuleFileFunction .REGISTRIES .set (differencer , ImmutableList .of (registry .getUrl ()));
512556
513557 SkyKey skyKey = ModuleFileValue .key (createModuleKey ("mymod" , "1.0" ), null );
514- reporter .removeHandler (failFastHandler ); // expect failures
515- driver .evaluate (ImmutableList .of (skyKey ), evaluationContext );
516- assertContainsEvent ("this extension is already being used at" );
558+ EvaluationResult <ModuleFileValue > result =
559+ driver .evaluate (ImmutableList .of (skyKey ), evaluationContext );
560+ if (result .hasError ()) {
561+ throw result .getError ().getException ();
562+ }
563+ ModuleFileValue moduleFileValue = result .get (skyKey );
564+ assertThat (moduleFileValue .getModule ())
565+ .isEqualTo (
566+ Module .builder ()
567+ .setName ("mymod" )
568+ .setVersion (Version .parse ("1.0" ))
569+ .setKey (createModuleKey ("mymod" , "1.0" ))
570+ .setRegistry (registry )
571+ .addExtensionUsage (
572+ ModuleExtensionUsage .builder ()
573+ .setExtensionBzlFile ("//:defs.bzl" )
574+ .setExtensionName ("myext" )
575+ .
setLocation (
Location .
fromFileLineColumn (
"[email protected] /MODULE.bazel" ,
4 ,
23 ))
576+ .setImports (ImmutableBiMap .of ("beta" , "beta" , "delta" , "delta" ))
577+ .build ())
578+ .build ());
517579 }
518580
519581 @ Test
0 commit comments