use of org.gradle.api.internal.file.UnionFileCollection in project gradle by gradle.
the class FileCollectionMatchers method sameCollection.
@Factory
public static <T extends FileCollection> Matcher<T> sameCollection(final FileCollection expected) {
return new BaseMatcher<T>() {
public boolean matches(Object o) {
FileCollection actual = (FileCollection) o;
List<? extends FileCollection> actualCollections = unpack(actual);
List<? extends FileCollection> expectedCollections = unpack(expected);
boolean equals = actualCollections.equals(expectedCollections);
if (!equals) {
System.out.println("expected: " + expectedCollections);
System.out.println("actual: " + actualCollections);
}
return equals;
}
private List<? extends FileCollection> unpack(FileCollection expected) {
if (expected instanceof UnionFileCollection) {
UnionFileCollection collection = (UnionFileCollection) expected;
return new ArrayList<FileCollection>(collection.getSources());
}
if (expected instanceof DefaultConfigurableFileCollection) {
DefaultConfigurableFileCollection collection = (DefaultConfigurableFileCollection) expected;
return new ArrayList<FileCollection>((Set) collection.getFrom());
}
if (expected instanceof CompositeFileCollection) {
CompositeFileCollection collection = (CompositeFileCollection) expected;
DefaultFileCollectionResolveContext context = new DefaultFileCollectionResolveContext(TestFiles.resolver());
collection.visitContents(context);
return context.resolveAsFileCollections();
}
throw new RuntimeException("Cannot get children of " + expected);
}
public void describeTo(Description description) {
description.appendText("same file collection as ").appendValue(expected);
}
};
}
use of org.gradle.api.internal.file.UnionFileCollection in project gradle by gradle.
the class DefaultJavaForkOptions method mergeWith.
@Override
public JavaForkOptionsInternal mergeWith(JavaForkOptions options) {
if (hasJvmArgumentProviders(this) || hasJvmArgumentProviders(options)) {
throw new UnsupportedOperationException("Cannot merge options with jvmArgumentProviders.");
}
JavaForkOptionsInternal mergedOptions = new DefaultJavaForkOptions(resolver);
if (!canBeMerged(getExecutable(), options.getExecutable())) {
throw new IllegalArgumentException("Cannot merge a fork options object with a different executable (this: " + getExecutable() + ", other: " + options.getExecutable() + ").");
} else {
mergedOptions.setExecutable(getExecutable() != null ? getExecutable() : options.getExecutable());
}
if (!canBeMerged(getWorkingDir(), options.getWorkingDir())) {
throw new IllegalArgumentException("Cannot merge a fork options object with a different working directory (this: " + getWorkingDir() + ", other: " + options.getWorkingDir() + ").");
} else {
mergedOptions.setWorkingDir(getWorkingDir() != null ? getWorkingDir() : options.getWorkingDir());
}
if (!canBeMerged(getDefaultCharacterEncoding(), options.getDefaultCharacterEncoding())) {
throw new IllegalArgumentException("Cannot merge a fork options object with a different default character encoding (this: " + getDefaultCharacterEncoding() + ", other: " + options.getDefaultCharacterEncoding() + ").");
} else {
mergedOptions.setDefaultCharacterEncoding(getDefaultCharacterEncoding() != null ? getDefaultCharacterEncoding() : options.getDefaultCharacterEncoding());
}
mergedOptions.setDebug(getDebug() || options.getDebug());
mergedOptions.setEnableAssertions(getEnableAssertions() || options.getEnableAssertions());
mergedOptions.setMinHeapSize(mergeHeapSize(getMinHeapSize(), options.getMinHeapSize()));
mergedOptions.setMaxHeapSize(mergeHeapSize(getMaxHeapSize(), options.getMaxHeapSize()));
Set<String> mergedJvmArgs = normalized(getJvmArgs());
mergedJvmArgs.addAll(normalized(options.getJvmArgs()));
mergedOptions.setJvmArgs(mergedJvmArgs);
Map<String, Object> mergedEnvironment = Maps.newHashMap(getEnvironment());
mergedEnvironment.putAll(options.getEnvironment());
mergedOptions.setEnvironment(mergedEnvironment);
Map<String, Object> mergedSystemProperties = Maps.newHashMap(getSystemProperties());
mergedSystemProperties.putAll(options.getSystemProperties());
mergedOptions.setSystemProperties(mergedSystemProperties);
mergedOptions.setBootstrapClasspath(new UnionFileCollection(getBootstrapClasspath(), options.getBootstrapClasspath()));
return mergedOptions;
}
Aggregations