Search in sources :

Example 1 with CompositeFileCollection

use of org.gradle.api.internal.file.CompositeFileCollection 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)

Aggregations

ArrayList (java.util.ArrayList)1 CompositeFileCollection (org.gradle.api.internal.file.CompositeFileCollection)1 UnionFileCollection (org.gradle.api.internal.file.UnionFileCollection)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