Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ protected void loadGlob(String line, boolean optionally)

final String suffix = localName.substring(starLoc + 1);

File[] matches = dir.listFiles((dir1, name) -> name.startsWith(prefix) || name.endsWith(suffix));
File[] matches = dir.listFiles((dir1, name) -> name.startsWith(prefix) && name.endsWith(suffix));

if (matches != null) {
for (File match : matches) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
package org.codehaus.plexus.classworlds.launcher;

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

import org.codehaus.plexus.classworlds.AbstractClassWorldsTestCase;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
Expand Down Expand Up @@ -80,4 +89,47 @@ void filterInMiddle() throws Exception {

assertEquals("cheesetest prop valuetoast", result);
}

@Test
void loadGlobMatchesBothPrefixAndSuffix(@TempDir Path tempDir) throws Exception {
Files.createFile(tempDir.resolve("maven-core.jar"));
Files.createFile(tempDir.resolve("maven-model.jar"));
Files.createFile(tempDir.resolve("sisu-plexus.jar"));
Files.createFile(tempDir.resolve("guice.jar"));

List<File> loaded = new ArrayList<>();
ConfigurationHandler handler = new NoopConfigurationHandler() {
@Override
public void addLoadFile(File file) {
loaded.add(file);
}
};
ConfigurationParser parser = new ConfigurationParser(handler, System.getProperties());

parser.loadGlob(new File(tempDir.toFile(), "maven-*.jar").toString(), false);

assertEquals(
2,
loaded.size(),
"glob 'maven-*.jar' should match only files starting with 'maven-' AND ending with '.jar'");
List<String> names = loaded.stream().map(File::getName).sorted().collect(Collectors.toList());
assertEquals(Arrays.asList("maven-core.jar", "maven-model.jar"), names);
}

private abstract static class NoopConfigurationHandler implements ConfigurationHandler {
@Override
public void setAppMain(String mainClassName, String mainRealmName) {}

@Override
public void addRealm(String realmName) {}

@Override
public void addImportFrom(String realmName, String importSpec) {}

@Override
public void addLoadFile(File file) {}

@Override
public void addLoadURL(java.net.URL url) {}
}
}
Loading