Skip to content
This repository has been archived by the owner on Apr 6, 2021. It is now read-only.

Commit

Permalink
Fixed classpath entry merging issues with Gradle 4 (found and fixed w…
Browse files Browse the repository at this point in the history
…ith 4.1)
  • Loading branch information
Alex Stockinger committed Aug 15, 2017
1 parent 71c2a10 commit 92f13c6
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public static Collection<JavaArchive> transform(final Collection<JavaArchive> in
// Directory entries transformed if matching
in.stream()
.filter(it -> it instanceof DirectoryJavaArchive)
.peek(it -> LOG.trace("Processing directory java archive{}", it))
.peek(it -> LOG.trace("Processing directory java archive {}", it))
.map(it -> (DirectoryJavaArchive) it)
.filter(it -> getBuildDir(it) != null)
.collect(Collectors.groupingBy(ClasspathTransform::getBuildDir))
Expand All @@ -84,13 +84,15 @@ private static URL getBuildDir(final DirectoryJavaArchive it) {
}

private static URL getBuildDir(final String path) {
final Pattern pattern = Pattern.compile("(.*/build/)[^/]+(/[^/]+/)");
final Pattern pattern = Pattern.compile("(.*/build/)(([^/]+)|([^/]+/[^/]+))/((main)|(test))/?");
final Matcher matcher = pattern.matcher(path);
if (!matcher.matches()) {
return null;
}
final String url = matcher.group(1) + "[any]/" + matcher.group(5);
LOG.trace("{} -> {}", path, url);
try {
return new URL(matcher.group(1) + "[any]" + matcher.group(2));
return new URL(url);
} catch (final MalformedURLException e) {
throw new TestEEfiException("Failed to build composite java archive URL", e);
}
Expand Down
42 changes: 42 additions & 0 deletions core/src/test/java/fi/testee/classpath/ClasspathTransformTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/*
* Copyright (C) 2017 Alex Stockinger
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package fi.testee.classpath;

import org.junit.Test;

import java.io.File;

import static fi.testee.classpath.ClasspathTransform.transform;
import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;

public class ClasspathTransformTest {
@Test
public void gradle_3_3() {
assertEquals(1, transform(asList(
new DirectoryJavaArchive(new File("C:\\dev\\priv\\testee\\core\\build\\classes\\main")),
new DirectoryJavaArchive(new File("C:\\dev\\priv\\testee\\core\\build\\resources\\main"))
)).size());
}

@Test
public void gradle_4_1() {
assertEquals(1, transform(asList(
new DirectoryJavaArchive(new File("C:\\dev\\priv\\testee\\core\\build\\classes\\java\\main")),
new DirectoryJavaArchive(new File("C:\\dev\\priv\\testee\\core\\build\\resources\\main"))
)).size());
}
}

0 comments on commit 92f13c6

Please sign in to comment.