@@ -499,21 +499,83 @@ public void testModuleExtensions_good() throws Exception {
499
499
}
500
500
501
501
@ 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 {
503
541
FakeRegistry registry =
504
542
registryFactory
505
543
.newFakeRegistry ("/foo" )
506
544
.addModule (
507
545
createModuleKey ("mymod" , "1.0" ),
508
546
"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')" );
511
555
ModuleFileFunction .REGISTRIES .set (differencer , ImmutableList .of (registry .getUrl ()));
512
556
513
557
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 ());
517
579
}
518
580
519
581
@ Test
0 commit comments