Search in sources :

Example 1 with UnionFileCollection

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);
        }
    };
}
Also used : UnionFileCollection(org.gradle.api.internal.file.UnionFileCollection) Description(org.hamcrest.Description) BaseMatcher(org.hamcrest.BaseMatcher) ArrayList(java.util.ArrayList) DefaultConfigurableFileCollection(org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection) DefaultFileCollectionResolveContext(org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext) CompositeFileCollection(org.gradle.api.internal.file.CompositeFileCollection) CompositeFileCollection(org.gradle.api.internal.file.CompositeFileCollection) UnionFileCollection(org.gradle.api.internal.file.UnionFileCollection) DefaultConfigurableFileCollection(org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection) Factory(org.hamcrest.Factory)

Example 2 with UnionFileCollection

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;
}
Also used : UnionFileCollection(org.gradle.api.internal.file.UnionFileCollection)

Aggregations

UnionFileCollection (org.gradle.api.internal.file.UnionFileCollection)2 ArrayList (java.util.ArrayList)1 CompositeFileCollection (org.gradle.api.internal.file.CompositeFileCollection)1 DefaultConfigurableFileCollection (org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection)1 DefaultFileCollectionResolveContext (org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext)1 BaseMatcher (org.hamcrest.BaseMatcher)1 Description (org.hamcrest.Description)1 Factory (org.hamcrest.Factory)1