diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/BootClassPathInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/BootClassPathInfo.java index 4c0bc096ace14d..a04ef75f93ecdb 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/BootClassPathInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/BootClassPathInfo.java @@ -15,6 +15,7 @@ import static com.google.common.collect.Iterables.getOnlyElement; +import com.google.auto.value.AutoValue; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.collect.nestedset.NestedSet; @@ -22,7 +23,7 @@ import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.packages.BuiltinProvider; -import com.google.devtools.build.lib.packages.NativeInfo; +import com.google.devtools.build.lib.packages.Info; import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.starlarkbuildapi.FileApi; import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi; @@ -37,12 +38,12 @@ import net.starlark.java.eval.Sequence; import net.starlark.java.eval.Starlark; import net.starlark.java.eval.StarlarkThread; -import net.starlark.java.eval.StarlarkValue; import net.starlark.java.syntax.Location; /** Information about the system APIs for a Java compilation. */ @Immutable -public final class BootClassPathInfo extends NativeInfo implements StarlarkValue { +@AutoValue +public abstract class BootClassPathInfo implements Info { /** Provider singleton constant. */ public static final Provider PROVIDER = new Provider(); @@ -106,7 +107,7 @@ public BootClassPathInfo bootClassPathInfo( throws EvalException { NestedSet systemInputs = getSystemInputs(systemOrNone); Optional systemPath = getSystemPath(systemInputs); - return new BootClassPathInfo( + return new AutoValue_BootClassPathInfo( getBootClassPath(bootClassPathList), getAuxiliary(auxiliaryList), systemInputs, @@ -167,71 +168,52 @@ private static Optional getSystemPath(NestedSet systemIn } } - private final NestedSet bootclasspath; - private final NestedSet auxiliary; - private final NestedSet systemInputs; - private final Optional systemPath; - - private BootClassPathInfo( - NestedSet bootclasspath, - NestedSet auxiliary, - NestedSet systemInputs, - Optional systemPath, - Location creationLocation) { - super(creationLocation); - this.bootclasspath = bootclasspath; - this.auxiliary = auxiliary; - this.systemInputs = systemInputs; - this.systemPath = systemPath; - } - @Override public Provider getProvider() { return PROVIDER; } public static BootClassPathInfo create(NestedSet bootclasspath) { - return new BootClassPathInfo( + return new AutoValue_BootClassPathInfo( bootclasspath, NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER), NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER), Optional.empty(), - null); + Location.BUILTIN); } public static BootClassPathInfo empty() { - return new BootClassPathInfo( + return new AutoValue_BootClassPathInfo( NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER), NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER), NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER), Optional.empty(), - null); + Location.BUILTIN); } /** The jar files containing classes for system APIs, i.e. a Java <= 8 bootclasspath. */ - public NestedSet bootclasspath() { - return bootclasspath; - } + public abstract NestedSet bootclasspath(); /** * The jar files containing extra classes for system APIs that should not be put in the system * image to support split-package compilation scenarios. */ - public NestedSet auxiliary() { - return auxiliary; - } + public abstract NestedSet auxiliary(); + + /** Contents of the directory that is passed to the javac >= 9 {@code --system} flag. */ + public abstract NestedSet systemInputs(); /** An argument to the javac >= 9 {@code --system} flag. */ - public Optional systemPath() { - return systemPath; - } + public abstract Optional systemPath(); - /** Contents of the directory that is passed to the javac >= 9 {@code --system} flag. */ - public NestedSet systemInputs() { - return systemInputs; + public abstract Location creationLocation(); + + @Override + public Location getCreationLocation() { + return creationLocation(); } public boolean isEmpty() { - return bootclasspath.isEmpty(); + return bootclasspath().isEmpty(); } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCcInfoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCcInfoProvider.java index 18b533bc9c9411..4a5cbf1c96bfbd 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCcInfoProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCcInfoProvider.java @@ -16,6 +16,7 @@ import static com.google.common.collect.ImmutableList.toImmutableList; +import com.google.auto.value.AutoValue; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.collect.nestedset.Depset; import com.google.devtools.build.lib.collect.nestedset.NestedSet; @@ -31,28 +32,25 @@ /** Provides information about C++ libraries to be linked into Java targets. */ @Immutable -public final class JavaCcInfoProvider implements JavaInfoInternalProvider { +@AutoValue +public abstract class JavaCcInfoProvider implements JavaInfoInternalProvider { // TODO(b/183579145): Replace CcInfo with only linking information. - private final CcInfo ccInfo; + public abstract CcInfo getCcInfo(); - public CcInfo getCcInfo() { - return ccInfo; - } - - public JavaCcInfoProvider(CcInfo ccInfo) { - this.ccInfo = + public static JavaCcInfoProvider create(CcInfo ccInfo) { + return new AutoValue_JavaCcInfoProvider( CcInfo.builder() .setCcLinkingContext(ccInfo.getCcLinkingContext()) .setCcNativeLibraryInfo(ccInfo.getCcNativeLibraryInfo()) - .build(); + .build()); } /** Merges several JavaCcInfoProvider providers into one. */ public static JavaCcInfoProvider merge(Collection providers) { ImmutableList ccInfos = providers.stream().map(JavaCcInfoProvider::getCcInfo).collect(toImmutableList()); - return new JavaCcInfoProvider(CcInfo.merge(ccInfos)); + return create(CcInfo.merge(ccInfos)); } @Nullable @@ -72,6 +70,6 @@ static JavaCcInfoProvider fromStarlarkJavaInfo(StructImpl javaInfo) throws EvalE .setCcNativeLibraryInfo(new CcNativeLibraryInfo(transitiveCcNativeLibraries)) .build(); } - return new JavaCcInfoProvider(ccInfo); + return create(ccInfo); } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java index 133f030337ee8e..26d1badfcc249d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java @@ -602,7 +602,7 @@ private void addCcRelatedProviders(JavaInfo.Builder javaInfoBuilder) throws Rule CcInfo mergedCcInfo = CcInfo.merge(ccInfos); - javaInfoBuilder.javaCcInfo(new JavaCcInfoProvider(mergedCcInfo)); + javaInfoBuilder.javaCcInfo(JavaCcInfoProvider.create(mergedCcInfo)); } private InstrumentedFilesInfo getInstrumentationFilesProvider( diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationInfoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationInfoProvider.java index ef142bfecd5e56..3e46247ba3d157 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationInfoProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationInfoProvider.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.rules.java; +import com.google.auto.value.AutoValue; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.actions.Artifact; @@ -36,12 +37,9 @@ * A class that provides compilation information in Java rules, for perusal of aspects and tools. */ @Immutable -public final class JavaCompilationInfoProvider +@AutoValue +public abstract class JavaCompilationInfoProvider implements JavaInfoInternalProvider, JavaCompilationInfoProviderApi { - private final ImmutableList javacOpts; - @Nullable private final NestedSet runtimeClasspath; - @Nullable private final NestedSet compilationClasspath; - private final BootClassPathInfo bootClasspath; /** * Transforms the {@code compilation_info} field from a {@link JavaInfo} into a native instance. @@ -125,45 +123,39 @@ public Builder setBootClasspath(BootClassPathInfo bootClasspath) { } public JavaCompilationInfoProvider build() { - return new JavaCompilationInfoProvider( - javacOpts, runtimeClasspath, compilationClasspath, bootClasspath); + return new AutoValue_JavaCompilationInfoProvider( + javacOpts, runtimeClasspath, compilationClasspath, bootClasspath.bootclasspath()); } } @Override - public ImmutableList getJavacOpts() { - return javacOpts; - } + @Nullable + public abstract ImmutableList getJavacOpts(); + + @Nullable + public abstract NestedSet runtimeClasspath(); @Override @Nullable public Depset /**/ getRuntimeClasspath() { - return runtimeClasspath == null ? null : Depset.of(Artifact.class, runtimeClasspath); + return runtimeClasspath() == null ? null : Depset.of(Artifact.class, runtimeClasspath()); } + @Nullable + public abstract NestedSet compilationClasspath(); + @Override @Nullable public Depset /**/ getCompilationClasspath() { - return compilationClasspath == null ? null : Depset.of(Artifact.class, compilationClasspath); + return compilationClasspath() == null + ? null + : Depset.of(Artifact.class, compilationClasspath()); } @Override - public ImmutableList getBootClasspath() { - return bootClasspath.bootclasspath().toList(); - } - - public NestedSet getBootClasspathAsNestedSet() { - return bootClasspath.bootclasspath(); + public ImmutableList getBootClasspathList() { + return bootClasspath().toList(); } - private JavaCompilationInfoProvider( - ImmutableList javacOpts, - @Nullable NestedSet runtimeClasspath, - @Nullable NestedSet compilationClasspath, - BootClassPathInfo bootClasspath) { - this.javacOpts = javacOpts; - this.runtimeClasspath = runtimeClasspath; - this.compilationClasspath = compilationClasspath; - this.bootClasspath = Preconditions.checkNotNull(bootClasspath); - } + public abstract NestedSet bootClasspath(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaGenJarsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaGenJarsProvider.java index 61c32252f94a4a..c985d407eec222 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaGenJarsProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaGenJarsProvider.java @@ -92,7 +92,7 @@ static JavaGenJarsProvider from(Object obj) throws EvalException { } else if (obj instanceof JavaGenJarsProvider) { return (JavaGenJarsProvider) obj; } else if (obj instanceof StructImpl) { - return new StarlarkJavaGenJarsProvider((StructImpl) obj); + return new AutoValue_JavaGenJarsProvider_StarlarkJavaGenJarsProvider((StructImpl) obj); } throw Starlark.errorf("wanted JavaGenJarsProvider, got %s", Starlark.type(obj)); } @@ -160,19 +160,16 @@ public ImmutableList getProcessorClassNamesList() { } /** Wrapper for Starlark constructed JavaGenJarsProvider */ - class StarlarkJavaGenJarsProvider implements JavaGenJarsProvider { - - private final StructImpl struct; + @AutoValue + abstract class StarlarkJavaGenJarsProvider implements JavaGenJarsProvider { - private StarlarkJavaGenJarsProvider(StructImpl struct) { - this.struct = struct; - } + abstract StructImpl struct(); @Override public NestedSet getTransitiveGenClassJars() throws RuleErrorException { try { return Depset.cast( - struct.getValue("transitive_class_jars"), Artifact.class, "transitive_class_jars"); + struct().getValue("transitive_class_jars"), Artifact.class, "transitive_class_jars"); } catch (EvalException e) { throw new RuleErrorException(e); } @@ -182,7 +179,7 @@ public NestedSet getTransitiveGenClassJars() throws RuleErrorException public NestedSet getTransitiveGenSourceJars() throws RuleErrorException { try { return Depset.cast( - struct.getValue("transitive_source_jars"), Artifact.class, "transitive_source_jars"); + struct().getValue("transitive_source_jars"), Artifact.class, "transitive_source_jars"); } catch (EvalException e) { throw new RuleErrorException(e); } @@ -191,45 +188,45 @@ public NestedSet getTransitiveGenSourceJars() throws RuleErrorExceptio @Override public NestedSet getProcessorClasspath() throws EvalException { return Depset.cast( - struct.getValue("processor_classpath"), Artifact.class, "processor_classpath"); + struct().getValue("processor_classpath"), Artifact.class, "processor_classpath"); } @Override public boolean usesAnnotationProcessing() throws EvalException { - return struct.getValue("enabled", Boolean.class); + return struct().getValue("enabled", Boolean.class); } @Nullable @Override public Artifact getGenClassJar() throws EvalException { - return nullIfNone(struct.getValue("class_jar"), Artifact.class); + return nullIfNone(struct().getValue("class_jar"), Artifact.class); } @Nullable @Override public Artifact getGenSourceJar() throws EvalException { - return nullIfNone(struct.getValue("source_jar"), Artifact.class); + return nullIfNone(struct().getValue("source_jar"), Artifact.class); } @Override public Depset getTransitiveGenClassJarsForStarlark() throws EvalException { - return struct.getValue("transitive_class_jars", Depset.class); + return struct().getValue("transitive_class_jars", Depset.class); } @Override public Depset getTransitiveGenSourceJarsForStarlark() throws EvalException { - return struct.getValue("transitive_source_jars", Depset.class); + return struct().getValue("transitive_source_jars", Depset.class); } @Override public Depset getProcessorClasspathForStarlark() throws EvalException { - return struct.getValue("processor_classpath", Depset.class); + return struct().getValue("processor_classpath", Depset.class); } @Override public ImmutableList getProcessorClassNamesList() throws EvalException { return Sequence.cast( - struct.getValue("processor_classnames"), String.class, "processor_classname") + struct().getValue("processor_classnames"), String.class, "processor_classname") .getImmutableList(); } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java index aee8eb11ed1800..da17afd8744804 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java @@ -94,7 +94,7 @@ public static NestedSet bootClasspath(TransitiveInfoCollection target) throws RuleErrorException { JavaInfo javaInfo = JavaInfo.getJavaInfo(target); if (javaInfo != null && javaInfo.providerJavaCompilationInfo != null) { - return javaInfo.providerJavaCompilationInfo.getBootClasspathAsNestedSet(); + return javaInfo.providerJavaCompilationInfo.bootClasspath(); } return NestedSetBuilder.emptySet(Order.STABLE_ORDER); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java index a5bdde6a54261b..d1735393d83280 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java @@ -237,7 +237,7 @@ public JavaInfo createJavaCompileAction( streamProviders(runtimeDeps, JavaCcInfoProvider.class), streamProviders(exports, JavaCcInfoProvider.class), streamProviders(deps, JavaCcInfoProvider.class), - Stream.of(new JavaCcInfoProvider(CcInfo.merge(nativeLibraries)))) + Stream.of(JavaCcInfoProvider.create(CcInfo.merge(nativeLibraries)))) .collect(toImmutableList()); return javaInfoBuilder diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaModuleFlagsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaModuleFlagsProvider.java index 3867c64e30286f..a691b2c7099f49 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaModuleFlagsProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaModuleFlagsProvider.java @@ -17,6 +17,7 @@ import static com.google.common.collect.ImmutableList.toImmutableList; import static com.google.devtools.build.lib.packages.Type.STRING_LIST; +import com.google.auto.value.AutoValue; import com.google.common.collect.ImmutableList; import com.google.common.collect.Streams; import com.google.devtools.build.lib.analysis.RuleContext; @@ -41,37 +42,31 @@ * Provides information about {@code --add-exports=} and {@code --add-opens=} flags for Java * targets. */ -final class JavaModuleFlagsProvider +@AutoValue +abstract class JavaModuleFlagsProvider implements JavaInfoInternalProvider, JavaModuleFlagsProviderApi { - private final NestedSet addExports; - private final NestedSet addOpens; + public abstract NestedSet addExports(); - public NestedSet addExports() { - return addExports; - } - - public NestedSet addOpens() { - return addOpens; - } + public abstract NestedSet addOpens(); @Override public Depset /*String*/ getAddExports() { - return Depset.of(String.class, addExports); + return Depset.of(String.class, addExports()); } @Override public Depset /*String*/ getAddOpens() { - return Depset.of(String.class, addOpens); + return Depset.of(String.class, addOpens()); } - public JavaModuleFlagsProvider(NestedSet addExports, NestedSet addOpens) { - this.addExports = addExports; - this.addOpens = addOpens; + public static JavaModuleFlagsProvider create( + NestedSet addExports, NestedSet addOpens) { + return new AutoValue_JavaModuleFlagsProvider(addExports, addOpens); } public static final JavaModuleFlagsProvider EMPTY = - new JavaModuleFlagsProvider( + create( NestedSetBuilder.emptySet(Order.STABLE_ORDER), NestedSetBuilder.emptySet(Order.STABLE_ORDER)); @@ -93,7 +88,7 @@ public static JavaModuleFlagsProvider create( if (addExportsBuilder.isEmpty() && addOpensBuilder.isEmpty()) { return EMPTY; } - return new JavaModuleFlagsProvider(addExportsBuilder.build(), addOpensBuilder.build()); + return create(addExportsBuilder.build(), addOpensBuilder.build()); } public static JavaModuleFlagsProvider create( diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java index da552cb6bf0a33..1ba2fbb172f2f9 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java @@ -42,12 +42,13 @@ /** Provides information about jar files produced by a Java rule. */ @Immutable -public final class JavaRuleOutputJarsProvider +@AutoValue +public abstract class JavaRuleOutputJarsProvider implements JavaInfoInternalProvider, JavaRuleOutputJarsProviderApi { @SerializationConstant public static final JavaRuleOutputJarsProvider EMPTY = - new JavaRuleOutputJarsProvider(ImmutableList.of()); + new AutoValue_JavaRuleOutputJarsProvider(ImmutableList.of()); /** A collection of artifacts associated with a jar output. */ @AutoValue @@ -194,30 +195,22 @@ public static Builder builder() { } } - final ImmutableList javaOutputs; - - private JavaRuleOutputJarsProvider(ImmutableList javaOutputs) { - this.javaOutputs = javaOutputs; - } - @Override public boolean isImmutable() { return true; // immutable and Starlark-hashable } @Override - public ImmutableList getJavaOutputs() { - return javaOutputs; - } + public abstract ImmutableList getJavaOutputs(); - /** Collects all class output jars from {@link #javaOutputs} */ + /** Collects all class output jars from {@link #getJavaOutputs} */ public Iterable getAllClassOutputJars() { - return javaOutputs.stream().map(JavaOutput::getClassJar).collect(Collectors.toList()); + return getJavaOutputs().stream().map(JavaOutput::getClassJar).collect(Collectors.toList()); } - /** Collects all source output jars from {@link #javaOutputs} */ + /** Collects all source output jars from {@link #getJavaOutputs} */ public ImmutableList getAllSrcOutputJars() { - return javaOutputs.stream() + return getJavaOutputs().stream() .map(JavaOutput::getSourceJars) .flatMap(ImmutableList::stream) .collect(toImmutableList()); @@ -228,7 +221,7 @@ public ImmutableList getAllSrcOutputJars() { @Deprecated public Artifact getJdeps() { ImmutableList jdeps = - javaOutputs.stream() + getJavaOutputs().stream() .map(JavaOutput::getJdeps) .filter(Objects::nonNull) .collect(toImmutableList()); @@ -240,7 +233,7 @@ public Artifact getJdeps() { @Deprecated public Artifact getNativeHeaders() { ImmutableList nativeHeaders = - javaOutputs.stream() + getJavaOutputs().stream() .map(JavaOutput::getNativeHeadersJar) .filter(Objects::nonNull) .collect(toImmutableList()); @@ -280,7 +273,7 @@ public Builder addJavaOutput(Collection javaOutputs) { } public JavaRuleOutputJarsProvider build() { - return new JavaRuleOutputJarsProvider(ImmutableList.copyOf(javaOutputs)); + return new AutoValue_JavaRuleOutputJarsProvider(ImmutableList.copyOf(javaOutputs)); } } diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCompilationInfoProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCompilationInfoProviderApi.java index b5a79efd72dcd7..e832d2f1156ad8 100644 --- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCompilationInfoProviderApi.java +++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCompilationInfoProviderApi.java @@ -48,5 +48,5 @@ public interface JavaCompilationInfoProviderApi extends S name = "boot_classpath", structField = true, doc = "Boot classpath for this Java target.") - ImmutableList getBootClasspath(); + ImmutableList getBootClasspathList(); } diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/JavaInfoStarlarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/JavaInfoStarlarkApiTest.java index 2e03c371ea814d..28bc0c5aeb737b 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/java/JavaInfoStarlarkApiTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/java/JavaInfoStarlarkApiTest.java @@ -917,8 +917,8 @@ public void translateStarlarkJavaInfo_compilationInfo() throws Exception { assertThat(javaInfo.getCompilationInfoProvider()).isNotNull(); assertThat(javaInfo.getCompilationInfoProvider().getJavacOpts()) .containsExactly("opt1", "opt2"); - assertThat(javaInfo.getCompilationInfoProvider().getBootClasspath()).hasSize(1); - assertThat(prettyArtifactNames(javaInfo.getCompilationInfoProvider().getBootClasspath())) + assertThat(javaInfo.getCompilationInfoProvider().getBootClasspathList()).hasSize(1); + assertThat(prettyArtifactNames(javaInfo.getCompilationInfoProvider().getBootClasspathList())) .containsExactly("cp.jar"); }