Merge pull request #115 from eric-milles/assert-throws

Java 8: use `assertThrows` instead of `ExpectedException` rule
This commit is contained in:
Maarten Coene 2025-09-11 23:10:38 +02:00 committed by GitHub
commit 057528e0f4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 330 additions and 491 deletions

View File

@ -17,17 +17,6 @@
*/
package org.apache.ivy;
import org.apache.ivy.core.retrieve.RetrieveOptions;
import org.apache.ivy.util.CacheCleaner;
import org.apache.ivy.util.cli.CommandLine;
import org.apache.ivy.util.cli.ParseException;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.rules.TemporaryFolder;
import java.io.File;
import java.net.URL;
import java.nio.file.Files;
@ -37,18 +26,27 @@ import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import org.apache.ivy.core.retrieve.RetrieveOptions;
import org.apache.ivy.util.CacheCleaner;
import org.apache.ivy.util.cli.CommandLine;
import org.apache.ivy.util.cli.ParseException;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
public class MainTest {
private File cache;
@Rule
public ExpectedException expExc = ExpectedException.none();
@Rule
public TemporaryFolder tempDir = new TemporaryFolder();
@ -65,51 +63,47 @@ public class MainTest {
@Test
public void testHelp() throws Exception {
run(new String[] {"-?"});
run("-?");
}
@Test
public void testBadOption() throws Exception {
expExc.expect(ParseException.class);
expExc.expectMessage("Unrecognized option: -bad");
run(new String[] {"-bad"});
public void testBadOption() {
Exception exception = assertThrows(ParseException.class, () -> run("-bad"));
assertEquals("Unrecognized option: -bad", exception.getMessage());
}
@Test
public void testMissingParameter() throws Exception {
expExc.expect(ParseException.class);
expExc.expectMessage("no argument for: ivy");
run(new String[] {"-ivy"});
public void testMissingParameter() {
Exception exception = assertThrows(ParseException.class, () -> run("-ivy"));
assertEquals("no argument for: ivy", exception.getMessage());
}
@Test
public void testResolveSimple() throws Exception {
run(new String[] {"-settings", "test/repositories/ivysettings.xml", "-ivy",
"test/repositories/1/org1/mod1.1/ivys/ivy-1.0.xml"});
run("-settings", "test/repositories/ivysettings.xml", "-ivy", "test/repositories/1/org1/mod1.1/ivys/ivy-1.0.xml");
assertTrue(new File("build/cache/org1/mod1.2/ivy-2.0.xml").exists());
}
@Test
public void testResolveSimpleWithConfs() throws Exception {
run(new String[] {"-settings", "test/repositories/ivysettings.xml", "-ivy",
"test/repositories/1/org1/mod1.1/ivys/ivy-1.0.xml", "-confs", "default"});
run("-settings", "test/repositories/ivysettings.xml", "-ivy", "test/repositories/1/org1/mod1.1/ivys/ivy-1.0.xml", "-confs", "default");
assertTrue(new File("build/cache/org1/mod1.2/ivy-2.0.xml").exists());
}
@Test
public void testResolveSimpleWithConfs2() throws Exception {
run(new String[] {"-settings", "test/repositories/ivysettings.xml", "-confs", "default",
"-ivy", "test/repositories/1/org1/mod1.1/ivys/ivy-1.0.xml"});
run("-settings", "test/repositories/ivysettings.xml", "-confs", "default", "-ivy", "test/repositories/1/org1/mod1.1/ivys/ivy-1.0.xml");
assertTrue(new File("build/cache/org1/mod1.2/ivy-2.0.xml").exists());
}
@Test
public void testExtraParams1() throws Exception {
String[] params = new String[] {"-settings", "test/repositories/ivysettings.xml", "-confs",
"default", "-ivy", "test/repositories/1/org1/mod1.1/ivys/ivy-1.0.xml", "foo1",
"foo2"};
String[] params = {
"-settings", "test/repositories/ivysettings.xml",
"-confs", "default",
"-ivy", "test/repositories/1/org1/mod1.1/ivys/ivy-1.0.xml",
"foo1", "foo2"
};
CommandLine line = Main.getParser().parse(params);
String[] leftOver = line.getLeftOverArgs();
assertNotNull(leftOver);
@ -120,9 +114,12 @@ public class MainTest {
@Test
public void testExtraParams2() throws Exception {
String[] params = new String[] {"-settings", "test/repositories/ivysettings.xml", "-confs",
"default", "-ivy", "test/repositories/1/org1/mod1.1/ivys/ivy-1.0.xml", "--",
"foo1", "foo2"};
String[] params = {
"-settings", "test/repositories/ivysettings.xml",
"-confs", "default",
"-ivy", "test/repositories/1/org1/mod1.1/ivys/ivy-1.0.xml",
"--", "foo1", "foo2"
};
CommandLine line = Main.getParser().parse(params);
String[] leftOver = line.getLeftOverArgs();
assertNotNull(leftOver);
@ -133,8 +130,11 @@ public class MainTest {
@Test
public void testExtraParams3() throws Exception {
String[] params = new String[] {"-settings", "test/repositories/ivysettings.xml", "-confs",
"default", "-ivy", "test/repositories/1/org1/mod1.1/ivys/ivy-1.0.xml"};
String[] params = {
"-settings", "test/repositories/ivysettings.xml",
"-confs", "default",
"-ivy", "test/repositories/1/org1/mod1.1/ivys/ivy-1.0.xml"
};
CommandLine line = Main.getParser().parse(params);
String[] leftOver = line.getLeftOverArgs();
assertNotNull(leftOver);
@ -146,7 +146,6 @@ public class MainTest {
* {@code types} argument to the command line must be parsed correctly when it's passed
* more than one value for the argument.
*
* @throws Exception if something goes wrong
* @see <a href="https://issues.apache.org/jira/browse/IVY-1355">IVY-1355</a>
*/
@Test
@ -165,8 +164,6 @@ public class MainTest {
/**
* Tests that the {@code overwriteMode} passed for the retrieve command works as expected
*
* @throws Exception if something goes wrong
*/
@Test
public void testRetrieveOverwriteMode() throws Exception {
@ -190,8 +187,6 @@ public class MainTest {
/**
* Tests that the {@code makepom} option works as expected
*
* @throws Exception if something goes wrong
*/
@Test
public void testMakePom() throws Exception {
@ -212,14 +207,12 @@ public class MainTest {
*/
@Test
public void testSettingsURL() throws Exception {
final URL settingsURL = new File("test/repositories/ivysettings.xml").toURI().toURL();
run(new String[] {"-settings", settingsURL.toString(), "-ivy",
"test/repositories/1/org1/mod1.1/ivys/ivy-1.0.xml"});
URL settingsURL = new File("test/repositories/ivysettings.xml").toURI().toURL();
run("-settings", settingsURL.toString(), "-ivy", "test/repositories/1/org1/mod1.1/ivys/ivy-1.0.xml");
assertTrue(new File("build/cache/org1/mod1.2/ivy-2.0.xml").exists());
}
private void run(String[] args) throws Exception {
private void run(String... args) throws Exception {
Main.run(Main.getParser(), args);
}
}

View File

@ -17,11 +17,6 @@
*/
package org.apache.ivy.ant;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.util.Arrays;
import java.util.Collections;
@ -29,16 +24,22 @@ import java.util.List;
import org.apache.ivy.TestHelper;
import org.apache.ivy.core.report.ArtifactDownloadReport;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Delete;
import org.apache.tools.ant.types.FileSet;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
public class IvyCacheFilesetTest {
@ -46,9 +47,6 @@ public class IvyCacheFilesetTest {
private Project project;
@Rule
public ExpectedException expExc = ExpectedException.none();
@Before
public void setUp() {
TestHelper.createCache();
@ -227,11 +225,10 @@ public class IvyCacheFilesetTest {
@Test
public void requireCommonBaseDirEmptyList() {
List<ArtifactDownloadReport> reports = Collections.emptyList();
// we expect a BuildException when we try to find a (non-existent) common base dir
// across file system roots
expExc.expect(BuildException.class);
List<ArtifactDownloadReport> reports = Collections.emptyList();
fileset.requireCommonBaseDir(reports);
assertThrows(BuildException.class, () -> fileset.requireCommonBaseDir(reports));
}
@Test
@ -241,14 +238,13 @@ public class IvyCacheFilesetTest {
// single file system root isn't what we are interested in, in this test method
return;
}
// we expect a BuildException when we try to find a (non-existent) common base dir
// across file system roots
expExc.expect(BuildException.class);
List<ArtifactDownloadReport> reports = Arrays.asList(
artifactDownloadReport(new File(fileSystemRoots[0], "a/b/c/d")),
artifactDownloadReport(new File(fileSystemRoots[1], "a/b/e/f"))
);
fileset.requireCommonBaseDir(reports);
);
// we expect a BuildException when we try to find a (non-existent) common base dir
// across file system roots
assertThrows(BuildException.class, () -> fileset.requireCommonBaseDir(reports));
}
@Test

View File

@ -17,20 +17,23 @@
*/
package org.apache.ivy.ant;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.File;
import org.apache.ivy.TestHelper;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
public class IvyCleanCacheTest {
private IvyCleanCache cleanCache;
private File cacheDir;
@ -41,9 +44,6 @@ public class IvyCleanCacheTest {
private File resolutionCache;
@Rule
public ExpectedException expExc = ExpectedException.none();
@Before
public void setUp() throws Exception {
Project p = TestHelper.newProject();
@ -106,10 +106,9 @@ public class IvyCleanCacheTest {
*/
@Test
public void testUnknownCache() {
expExc.expect(BuildException.class);
expExc.expectMessage("unknown cache 'yourcache'");
cleanCache.setResolution(false);
cleanCache.setCache("yourcache");
cleanCache.perform();
Exception exception = assertThrows(BuildException.class, () -> cleanCache.perform());
assertEquals("unknown cache 'yourcache'", exception.getMessage());
}
}

View File

@ -17,12 +17,6 @@
*/
package org.apache.ivy.ant;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.util.List;
@ -33,22 +27,27 @@ import org.apache.ivy.core.settings.IvySettings;
import org.apache.ivy.plugins.resolver.DependencyResolver;
import org.apache.ivy.plugins.resolver.IBiblioResolver;
import org.apache.ivy.plugins.resolver.IvyRepResolver;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.types.Reference;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
public class IvyConfigureTest {
private IvyConfigure configure;
private Project project;
@Rule
public ExpectedException expExc = ExpectedException.none();
@Before
public void setUp() {
project = TestHelper.newProject();
@ -278,10 +277,6 @@ public class IvyConfigureTest {
*/
@Test
public void testOverrideNotAllowed() {
expExc.expect(BuildException.class);
expExc.expectMessage("Overriding a previous definition of ivy:settings with the id '"
+ configure.getSettingsId() + "' is not allowed when using override='notallowed'.");
configure.setFile(new File("test/repositories/ivysettings.xml"));
configure.execute();
@ -293,7 +288,9 @@ public class IvyConfigureTest {
configure.setOverride("notallowed");
configure.setFile(new File("test/repositories/ivysettings.xml"));
configure.execute();
Exception exception = assertThrows(BuildException.class, () -> configure.execute());
assertEquals("Overriding a previous definition of ivy:settings with the id '"
+ configure.getSettingsId() + "' is not allowed when using override='notallowed'.", exception.getMessage());
}
/**
@ -301,18 +298,13 @@ public class IvyConfigureTest {
*/
@Test
public void testInvalidOverride() {
expExc.expect(IllegalArgumentException.class);
expExc.expectMessage("invalid override value 'unknown'. Valid values are "
+ "[true, false, notallowed]");
configure.setOverride("unknown");
Exception exception = assertThrows(IllegalArgumentException.class, () -> configure.setOverride("unknown"));
assertEquals("invalid override value 'unknown'. Valid values are [true, false, notallowed]", exception.getMessage());
}
/**
* Tests that if the Ivy settings file <code>include</code>s another file as
* <code>optional</code>, then the absence of that file doesn't lead to failures
*
* @throws Exception if something goes wrong
*/
@Test
public void testOptionalFileInclude() throws Exception {

View File

@ -28,21 +28,17 @@ import org.apache.tools.ant.Project;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThrows;
public class IvyDependencyUpdateCheckerTest extends AntTaskTestCase {
private IvyDependencyUpdateChecker dependencyUpdateChecker;
@Rule
public ExpectedException expExc = ExpectedException.none();
@Before
public void setUp() {
TestHelper.createCache();
@ -146,12 +142,10 @@ public class IvyDependencyUpdateCheckerTest extends AntTaskTestCase {
*/
@Test
public void testFailureWithMissingConfigurations() {
expExc.expect(BuildException.class);
expExc.expectMessage("unknown");
dependencyUpdateChecker.setFile(new File("test/java/org/apache/ivy/ant/ivy-simple.xml"));
dependencyUpdateChecker.setConf("default,unknown");
dependencyUpdateChecker.execute();
Exception exception = assertThrows(BuildException.class, () -> dependencyUpdateChecker.execute());
assertEquals("requested configuration not found in apache#resolve-simple;1.0: [ 'unknown' ]", exception.getCause().getMessage());
}
/**

View File

@ -39,23 +39,20 @@ import org.apache.tools.ant.taskdefs.Echo;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
public class IvyPublishTest {
private File cache;
private IvyPublish publish;
private Project project;
@Rule
public ExpectedException expExc = ExpectedException.none();
private File cache;
@Before
public void setUp() {
@ -405,8 +402,6 @@ public class IvyPublishTest {
*/
@Test
public void testHaltOnMissing() {
expExc.expect(BuildException.class);
expExc.expectMessage("missing artifact apache#resolve-simple;1.2!resolve-simple.jar");
project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-multiconf.xml");
IvyResolve res = new IvyResolve();
res.setProject(project);
@ -415,19 +410,16 @@ public class IvyPublishTest {
publish.setPubrevision("1.2");
publish.setResolver("1");
publish.setHaltonmissing(true);
try {
publish.execute();
} finally {
// should have delivered the ivy file
assertTrue(new File("build/test/publish/ivy-1.2.xml").exists());
// should not have published the files with "1" resolver
assertFalse(new File("test/repositories/1/apache/resolve-simple/ivys/ivy-1.2.xml")
.exists());
assertFalse(new File(
"test/repositories/1/apache/resolve-simple/jars/resolve-simple-1.2.jar")
.exists());
}
Exception exception = assertThrows(BuildException.class, () -> publish.execute());
assertEquals("missing artifact apache#resolve-simple;1.2!resolve-simple.jar", exception.getCause().getMessage());
// should have delivered the ivy file
assertTrue(new File("build/test/publish/ivy-1.2.xml").exists());
// should not have published the files with "1" resolver
assertFalse(new File("test/repositories/1/apache/resolve-simple/ivys/ivy-1.2.xml").exists());
assertFalse(new File("test/repositories/1/apache/resolve-simple/jars/resolve-simple-1.2.jar").exists());
}
/**
@ -437,8 +429,6 @@ public class IvyPublishTest {
*/
@Test
public void testHaltOnMissing2() throws IOException {
expExc.expect(BuildException.class);
expExc.expectMessage("missing artifact apache#multi;1.2!multi2.jar");
project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-publish-multi.xml");
IvyResolve res = new IvyResolve();
res.setProject(project);
@ -451,15 +441,15 @@ public class IvyPublishTest {
publish.setPubrevision("1.2");
publish.setResolver("transactional");
publish.setHaltonmissing(true);
try {
publish.execute();
} finally {
// should have delivered the ivy file
assertTrue(new File("build/test/publish/ivy-1.2.xml").exists());
// should not have published the files with "transactional" resolver
assertFalse(new File("build/test/transactional/apache/multi/1.2").exists());
}
Exception exception = assertThrows(BuildException.class, () -> publish.execute());
assertEquals("missing artifact apache#multi;1.2!multi2.jar", exception.getCause().getMessage());
// should have delivered the ivy file
assertTrue(new File("build/test/publish/ivy-1.2.xml").exists());
// should not have published the files with "transactional" resolver
assertFalse(new File("build/test/transactional/apache/multi/1.2").exists());
}
/**
@ -469,8 +459,6 @@ public class IvyPublishTest {
*/
@Test
public void testHaltOnMissing3() throws IOException {
expExc.expect(BuildException.class);
expExc.expectMessage("missing artifact apache#multi;1.2!multi2.jar");
project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-publish-multi.xml");
IvyResolve res = new IvyResolve();
res.setProject(project);
@ -483,15 +471,15 @@ public class IvyPublishTest {
publish.setPubrevision("1.2");
publish.setResolver("1");
publish.setHaltonmissing(true);
try {
publish.execute();
} finally {
// should have delivered the ivy file
assertTrue(new File("build/test/publish/ivy-1.2.xml").exists());
// should not have published the files with "transactional" resolver
assertFalse(new File("test/repositories/1/apache/multi").exists());
}
Exception exception = assertThrows(BuildException.class, () -> publish.execute());
assertEquals("missing artifact apache#multi;1.2!multi2.jar", exception.getCause().getMessage());
// should have delivered the ivy file
assertTrue(new File("build/test/publish/ivy-1.2.xml").exists());
// should not have published the files with "transactional" resolver
assertFalse(new File("test/repositories/1/apache/multi").exists());
}
@Test

View File

@ -31,24 +31,20 @@ import org.apache.tools.ant.taskdefs.Parallel;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
public class IvyResolveTest {
private Project project;
private IvyResolve resolve;
@Rule
public ExpectedException expExc = ExpectedException.none();
private Project project;
@Before
public void setUp() {
@ -324,12 +320,10 @@ public class IvyResolveTest {
@Test
public void testFailureWithMissingConfigurations() {
expExc.expect(BuildException.class);
expExc.expectMessage("unknown");
resolve.setFile(new File("test/java/org/apache/ivy/ant/ivy-simple.xml"));
resolve.setConf("default,unknown");
resolve.execute();
Exception exception = assertThrows(BuildException.class, () -> resolve.execute());
assertEquals("requested configuration not found in apache#resolve-simple;1.0: [ 'unknown' ]", exception.getCause().getMessage());
}
@Test(expected = BuildException.class)

View File

@ -17,20 +17,17 @@
*/
package org.apache.ivy.core.module.id;
import static org.junit.Assert.assertEquals;
import java.util.HashMap;
import java.util.Map;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
public class ModuleRevisionIdTest {
@Rule
public ExpectedException expExc = ExpectedException.none();
@Test
public void testParse() {
testParse("#A;1.0");
@ -67,10 +64,8 @@ public class ModuleRevisionIdTest {
}
private void testParseFailure(String mrid) {
expExc.expect(IllegalArgumentException.class);
expExc.expectMessage(mrid);
ModuleRevisionId.parse(mrid);
Exception exception = assertThrows(IllegalArgumentException.class, () -> ModuleRevisionId.parse(mrid));
assertTrue(exception.getMessage().contains(mrid));
}
@Test
@ -90,11 +85,9 @@ public class ModuleRevisionIdTest {
extraAttributes.put("nullatt", null);
testEncodeDecodeToString(
ModuleRevisionId.newInstance("org/apache", "pre/name", "1.0-dev8/2", extraAttributes));
}
private void testEncodeDecodeToString(ModuleRevisionId mrid) {
assertEquals(mrid, ModuleRevisionId.decode(mrid.encodeToString()));
}
}

View File

@ -17,6 +17,26 @@
*/
package org.apache.ivy.core.resolve;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.apache.ivy.Ivy;
import org.apache.ivy.TestHelper;
import org.apache.ivy.core.cache.ArtifactOrigin;
@ -52,56 +72,28 @@ import org.apache.ivy.util.CacheCleaner;
import org.apache.ivy.util.FileUtil;
import org.apache.ivy.util.MockMessageLogger;
import org.apache.ivy.util.XMLHelper;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.xml.sax.Attributes;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import static org.apache.ivy.util.StringUtils.joinArray;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
/**
*
*/
public class ResolveTest {
public final class ResolveTest {
private Ivy ivy;
private File cache;
private File deliverDir;
private File workDir;
@Rule
public ExpectedException expExc = ExpectedException.none();
private File cache, workDir, deliverDir;
@Before
public void setUp() throws Exception {
@ -746,29 +738,22 @@ public class ResolveTest {
// set up repository
FileUtil.forceDelete(new File("build/testCache2"));
FileUtil.copy(new File("test/repositories/1/org1/mod1.2/jars/mod1.2-2.0.jar"), new File(
"build/testCache2/mod1.2-1.5.jar"), null);
FileUtil.copy(new File("test/repositories/1/org1/mod1.2/jars/mod1.2-2.0.jar"), new File("build/testCache2/mod1.2-1.5.jar"), null);
// we first do a simple resolve so that module is in cache
ResolveReport report = ivy.resolve(new File(
"test/repositories/1/org1/mod1.4/ivys/ivy-1.0.2.xml"),
getResolveOptions(new String[] {"*"}));
ResolveReport report = ivy.resolve(new File("test/repositories/1/org1/mod1.4/ivys/ivy-1.0.2.xml"), getResolveOptions(new String[] {"*"}));
assertFalse(report.hasError());
assertEquals(Collections.singleton(ModuleRevisionId.newInstance("org1", "mod1.2", "1.5")),
report.getConfigurationReport("default").getModuleRevisionIds());
assertEquals(Collections.singleton(ModuleRevisionId.newInstance("org1", "mod1.2", "1.5")), report.getConfigurationReport("default").getModuleRevisionIds());
// now we update the repository
FileUtil.copy(new File("test/repositories/1/org1/mod1.2/jars/mod1.2-2.0.jar"), new File(
"build/testCache2/mod1.2-1.6.jar"), null);
FileUtil.copy(new File("test/repositories/1/org1/mod1.2/jars/mod1.2-2.0.jar"), new File("build/testCache2/mod1.2-1.6.jar"), null);
// now do a new resolve: it should not use cached data
report = ivy.resolve(new File("test/repositories/1/org1/mod1.4/ivys/ivy-1.0.2.xml"),
getResolveOptions(new String[] {"*"}));
report = ivy.resolve(new File("test/repositories/1/org1/mod1.4/ivys/ivy-1.0.2.xml"), getResolveOptions(new String[] {"*"}));
assertFalse(report.hasError());
assertEquals(Collections.singleton(ModuleRevisionId.newInstance("org1", "mod1.2", "1.6")),
report.getConfigurationReport("default").getModuleRevisionIds());
assertEquals(Collections.singleton(ModuleRevisionId.newInstance("org1", "mod1.2", "1.6")), report.getConfigurationReport("default").getModuleRevisionIds());
}
@Test
@ -3479,34 +3464,24 @@ public class ResolveTest {
/**
* Circular dependency: mod6.3 depends on mod6.2, which itself depends on mod6.3;
* circular dependency strategy set to error.
*
* @throws Exception if something goes wrong
*/
@Test
public void testCircular() throws Exception {
expExc.expect(CircularDependencyException.class);
expExc.expectMessage("org6#mod6.3;1.0->org6#mod6.2;1.0->org6#mod6.3;latest.integration");
ResolveReport report = ivy.resolve(new File("test/repositories/2/mod6.3/ivy-1.0.xml"),
getResolveOptions(new String[] {"default"}));
ResolveReport report = ivy.resolve(new File("test/repositories/2/mod6.3/ivy-1.0.xml"), getResolveOptions(new String[] {"default"}));
assertFalse(report.hasError());
ivy.getSettings().setCircularDependencyStrategy(
IgnoreCircularDependencyStrategy.getInstance());
report = ivy.resolve(new File("test/repositories/2/mod6.3/ivy-1.0.xml"),
getResolveOptions(new String[] {"default"}));
ivy.getSettings().setCircularDependencyStrategy(IgnoreCircularDependencyStrategy.getInstance());
report = ivy.resolve(new File("test/repositories/2/mod6.3/ivy-1.0.xml"), getResolveOptions(new String[] {"default"}));
assertFalse(report.hasError());
ivy.getSettings().setCircularDependencyStrategy(
WarnCircularDependencyStrategy.getInstance());
report = ivy.resolve(new File("test/repositories/2/mod6.3/ivy-1.0.xml"),
getResolveOptions(new String[] {"default"}));
ivy.getSettings().setCircularDependencyStrategy(WarnCircularDependencyStrategy.getInstance());
report = ivy.resolve(new File("test/repositories/2/mod6.3/ivy-1.0.xml"), getResolveOptions(new String[] {"default"}));
assertFalse(report.hasError());
ivy.getSettings().setCircularDependencyStrategy(
ErrorCircularDependencyStrategy.getInstance());
ivy.resolve(new File("test/repositories/2/mod6.3/ivy-1.0.xml"),
getResolveOptions(new String[] {"default"}));
ivy.getSettings().setCircularDependencyStrategy(ErrorCircularDependencyStrategy.getInstance());
Exception e = assertThrows(CircularDependencyException.class, () ->
ivy.resolve(new File("test/repositories/2/mod6.3/ivy-1.0.xml"), getResolveOptions(new String[] {"default"})));
assertEquals("org6#mod6.3;1.0->org6#mod6.2;1.0->org6#mod6.3;latest.integration", e.getMessage());
}
/**
@ -3517,17 +3492,13 @@ public class ResolveTest {
*/
@Test
public void testCircular2() throws Exception {
expExc.expect(CircularDependencyException.class);
expExc.expectMessage("org8#mod8.5;NONE->org8#mod8.6;2.+->org8#mod8.5;2.+");
ResolveReport report = ivy.resolve(new File("test/repositories/circular/ivy.xml"),
getResolveOptions(new String[] {"*"}));
ResolveReport report = ivy.resolve(new File("test/repositories/circular/ivy.xml"), getResolveOptions(new String[] {"*"}));
assertFalse(report.hasError());
ivy.getSettings().setCircularDependencyStrategy(
ErrorCircularDependencyStrategy.getInstance());
ivy.resolve(new File("test/repositories/circular/ivy.xml"),
getResolveOptions(new String[] {"*"}));
ivy.getSettings().setCircularDependencyStrategy(ErrorCircularDependencyStrategy.getInstance());
Exception e = assertThrows(CircularDependencyException.class, () ->
ivy.resolve(new File("test/repositories/circular/ivy.xml"), getResolveOptions(new String[] {"*"})));
assertEquals("org8#mod8.5;NONE->org8#mod8.6;2.+->org8#mod8.5;2.+", e.getMessage());
}
/**
@ -3540,36 +3511,28 @@ public class ResolveTest {
*/
@Test
public void testCircular3() throws Exception {
expExc.expect(CircularDependencyException.class);
expExc.expectMessage("org6#mod6.3;1.2->org6#mod6.2;1.1->...");
ResolveReport report = ivy.resolve(new File("test/repositories/2/mod6.3/ivy-1.2.xml"),
getResolveOptions(new String[] {"default", "test"}));
ResolveReport report = ivy.resolve(new File("test/repositories/2/mod6.3/ivy-1.2.xml"), getResolveOptions(new String[] {"default", "test"}));
assertFalse(report.hasError());
// we should have mod 6.2 artifact in both configurations
assertEquals(1, report.getConfigurationReport("default").getArtifactsNumber());
assertEquals(1, report.getConfigurationReport("test").getArtifactsNumber());
ivy.getSettings().setCircularDependencyStrategy(
IgnoreCircularDependencyStrategy.getInstance());
report = ivy.resolve(new File("test/repositories/2/mod6.3/ivy-1.2.xml"),
getResolveOptions(new String[] {"default", "test"}));
ivy.getSettings().setCircularDependencyStrategy(IgnoreCircularDependencyStrategy.getInstance());
report = ivy.resolve(new File("test/repositories/2/mod6.3/ivy-1.2.xml"), getResolveOptions(new String[] {"default", "test"}));
assertFalse(report.hasError());
assertEquals(1, report.getConfigurationReport("default").getArtifactsNumber());
assertEquals(1, report.getConfigurationReport("test").getArtifactsNumber());
ivy.getSettings().setCircularDependencyStrategy(
WarnCircularDependencyStrategy.getInstance());
report = ivy.resolve(new File("test/repositories/2/mod6.3/ivy-1.2.xml"),
getResolveOptions(new String[] {"default", "test"}));
ivy.getSettings().setCircularDependencyStrategy(WarnCircularDependencyStrategy.getInstance());
report = ivy.resolve(new File("test/repositories/2/mod6.3/ivy-1.2.xml"), getResolveOptions(new String[] {"default", "test"}));
assertFalse(report.hasError());
assertEquals(1, report.getConfigurationReport("default").getArtifactsNumber());
assertEquals(1, report.getConfigurationReport("test").getArtifactsNumber());
ivy.getSettings().setCircularDependencyStrategy(
ErrorCircularDependencyStrategy.getInstance());
ivy.resolve(new File("test/repositories/2/mod6.3/ivy-1.2.xml"),
getResolveOptions(new String[] {"default", "test"}));
ivy.getSettings().setCircularDependencyStrategy(ErrorCircularDependencyStrategy.getInstance());
Exception e = assertThrows(CircularDependencyException.class, () ->
ivy.resolve(new File("test/repositories/2/mod6.3/ivy-1.2.xml"), getResolveOptions(new String[] {"default", "test"})));
assertEquals("org6#mod6.3;1.2->org6#mod6.2;1.1->...", e.getMessage());
}
@Test
@ -4421,13 +4384,11 @@ public class ResolveTest {
assertTrue(getArchiveFileInCache("org5", "mod5.1", "4.1", "art51B", "jar", "jar").exists());
}
/**
* Test for issues IVY-982 and IVY-1547,
* which have to do with resolve engine ignoring negated configurations
* on the left side of the maps-to operator.
*/
@Test
public void testResolveWithNegation() throws Exception {
ConfigurationResolveReport crp;
@ -5107,8 +5068,8 @@ public class ResolveTest {
ivy.getSettings().setDefaultResolver("parentChain");
final File pom = new File("test/repositories/parentPom/org/apache/dm/sibling1/1.0/sibling1-1.0.pom");
final ResolveReport report = ivy.resolve(pom, getResolveOptions(new String[]{"*"}));
Assert.assertNotNull("Resolve report is null", report);
Assert.assertFalse("Resolve report has errors", report.hasError());
assertNotNull("Resolve report is null", report);
assertFalse("Resolve report has errors", report.hasError());
}
@Test

View File

@ -17,6 +17,11 @@
*/
package org.apache.ivy.core.settings;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;
import org.apache.ivy.core.cache.DefaultRepositoryCacheManager;
import org.apache.ivy.core.cache.ResolutionCacheManager;
import org.apache.ivy.core.module.descriptor.Artifact;
@ -43,27 +48,20 @@ import org.apache.ivy.plugins.version.ChainVersionMatcher;
import org.apache.ivy.plugins.version.MavenTimedSnapshotVersionMatcher;
import org.apache.ivy.plugins.version.MockVersionMatcher;
import org.apache.ivy.plugins.version.VersionMatcher;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
/**
* Test the parsing of Ivy settings file through the {@link XmlSettingsParser}
*/
public class XmlSettingsParserTest {
@Rule
public ExpectedException expExc = ExpectedException.none();
@Test
public void test() throws Exception {
@ -261,18 +259,15 @@ public class XmlSettingsParserTest {
/**
* Test of resolver referencing a non existent cache.
*
* @throws Exception if something goes wrong
*/
@Test
public void testInvalidCache() throws Exception {
expExc.expect(ParseException.class);
expExc.expectMessage("mycache");
public void testInvalidCache() {
IvySettings settings = new IvySettings();
XmlSettingsParser parser = new XmlSettingsParser(settings);
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-cache-invalid.xml"));
Exception exception = assertThrows(ParseException.class, () ->
parser.parse(XmlSettingsParserTest.class.getResource("ivysettings-cache-invalid.xml")));
assertTrue(exception.getMessage().endsWith("unknown cache manager 'mycache'. Available caches are [mycache2]"));
}
@Test

View File

@ -17,20 +17,17 @@
*/
package org.apache.ivy.osgi.core;
import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.text.ParseException;
import java.util.Arrays;
import java.util.Collection;
import static org.hamcrest.Matchers.hasProperty;
import static org.hamcrest.Matchers.is;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThrows;
@RunWith(Enclosed.class)
public class ManifestHeaderTest {
@ -92,15 +89,11 @@ public class ManifestHeaderTest {
ManifestHeaderValue value = new ManifestHeaderValue("glassfish javax.servlet.3.1.0.b33");
assertEquals("glassfish javax.servlet.3.1.0.b33", value.getSingleValue());
}
}
@RunWith(Parameterized.class)
public static class IllegalOptionTests {
@Rule
public ExpectedException expExc = ExpectedException.none();
@Parameterized.Parameters(name = "Illegal token at {1} in {0}")
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {{"value1=", 6},
@ -119,12 +112,10 @@ public class ManifestHeaderTest {
* Expected failure when the parameter is illegal
*/
@Test
public void testSyntaxError() throws ParseException {
expExc.expect(ParseException.class);
expExc.expect(hasProperty("errorOffset", is(offset)));
new ManifestHeaderValue(value);
public void testSyntaxError() {
ParseException exception = assertThrows(ParseException.class, () -> new ManifestHeaderValue(value));
assertEquals(offset, exception.getErrorOffset());
}
}
@RunWith(Parameterized.class)
@ -155,7 +146,5 @@ public class ManifestHeaderTest {
public void testNormalisation() throws Exception {
assertEquals(new ManifestHeaderValue(normalised), new ManifestHeaderValue(value));
}
}
}

View File

@ -22,24 +22,25 @@ import java.io.File;
import org.apache.ivy.Ivy;
import org.apache.ivy.core.resolve.ResolveOptions;
import org.apache.ivy.util.FileUtil;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThrows;
public class RegexpConflictManagerTest {
private Ivy ivy;
private File cache;
@Rule
public ExpectedException expExc = ExpectedException.none();
@Before
public void setUp() throws Exception {
ivy = new Ivy();
ivy.configure(RegexpConflictManagerTest.class.getResource("ivysettings-regexp-test.xml"));
cache = new File("build/cache");
cache.mkdirs();
}
@ -51,17 +52,13 @@ public class RegexpConflictManagerTest {
@Test
public void testNoApiConflictResolve() throws Exception {
ivy.resolve(RegexpConflictManagerTest.class.getResource("ivy-no-regexp-conflict.xml"),
getResolveOptions());
ivy.resolve(RegexpConflictManagerTest.class.getResource("ivy-no-regexp-conflict.xml"), getResolveOptions());
}
@Test
public void testConflictResolve() throws Exception {
expExc.expect(StrictConflictException.class);
expExc.expectMessage("org1#mod1.2;2.0.0:2.0 (needed by [apache#resolve-noconflict;1.0]) conflicts with org1#mod1.2;2.1.0:2.1 (needed by [apache#resolve-noconflict;1.0])");
ivy.resolve(RegexpConflictManagerTest.class.getResource("ivy-conflict.xml"),
getResolveOptions());
public void testConflictResolve() {
Exception exception = assertThrows(StrictConflictException.class, () -> ivy.resolve(RegexpConflictManagerTest.class.getResource("ivy-conflict.xml"), getResolveOptions()));
assertEquals("org1#mod1.2;2.0.0:2.0 (needed by [apache#resolve-noconflict;1.0]) conflicts with org1#mod1.2;2.1.0:2.1 (needed by [apache#resolve-noconflict;1.0])", exception.getMessage());
}
private ResolveOptions getResolveOptions() {

View File

@ -17,13 +17,6 @@
*/
package org.apache.ivy.plugins.parser.m2;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.fail;
import java.io.File;
import java.io.IOException;
import java.net.URL;
@ -58,13 +51,21 @@ import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParserTest;
import org.apache.ivy.plugins.repository.url.URLResource;
import org.apache.ivy.plugins.resolver.DependencyResolver;
import org.apache.ivy.plugins.resolver.MockResolver;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.rules.TemporaryFolder;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
public class PomModuleDescriptorParserTest extends AbstractModuleDescriptorParserTester {
private IvySettings settings = new IvySettings();
@ -86,9 +87,6 @@ public class PomModuleDescriptorParserTest extends AbstractModuleDescriptorParse
private MockResolver mockedResolver = new MockedDependencyResolver();
@Rule
public ExpectedException expExc = ExpectedException.none();
@Rule
public TemporaryFolder workDir = new TemporaryFolder();
@ -220,12 +218,10 @@ public class PomModuleDescriptorParserTest extends AbstractModuleDescriptorParse
}
@Test
public void testParentNotFound() throws Exception {
expExc.expect(IOException.class);
expExc.expectMessage("Impossible to load parent");
PomModuleDescriptorParser.getInstance().parseDescriptor(new IvySettings(),
getClass().getResource("test-parent-not-found.pom"), false);
public void testParentNotFound() {
Exception exception = assertThrows(IOException.class, () ->
PomModuleDescriptorParser.getInstance().parseDescriptor(new IvySettings(), getClass().getResource("test-parent-not-found.pom"), false));
assertTrue(exception.getMessage().startsWith("Impossible to load parent"));
}
@Test
@ -427,7 +423,7 @@ public class PomModuleDescriptorParserTest extends AbstractModuleDescriptorParse
assertEquals(5, dds.length);
for (int i = 0; i < dds.length; i++) {
assertEquals(2, dds[i].getAllDependencyArtifacts().length);
int withExt = i == 0 || i == 3 ? 1: 0;
int withExt = i == 0 || i == 3 ? 1 : 0;
assertEquals(extraAtt, dds[i].getAllDependencyArtifacts()[withExt].getExtraAttributes());
}
}
@ -1285,17 +1281,14 @@ public class PomModuleDescriptorParserTest extends AbstractModuleDescriptorParse
for (final String expectedPackagingType : packagingTypesToTest) {
String sysPropToSet = null;
switch (expectedPackagingType) {
case "bundle": {
case "bundle":
sysPropToSet = "PomModuleDescriptorParserTest.some-other-test-prop";
break;
}
case "jar": {
case "jar":
sysPropToSet = "PomModuleDescriptorParserTest.some-test-prop";
break;
}
default: {
default:
fail("Unexpected packaging type");
}
}
// activate the relevant profile, based on a system property
System.setProperty(sysPropToSet, "foo");

View File

@ -17,6 +17,22 @@
*/
package org.apache.ivy.plugins.parser.xml;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.text.ParseException;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.Set;
import org.apache.ivy.Ivy;
import org.apache.ivy.core.module.descriptor.Artifact;
import org.apache.ivy.core.module.descriptor.Configuration;
@ -41,40 +57,23 @@ import org.apache.ivy.util.DefaultMessageLogger;
import org.apache.ivy.util.FileUtil;
import org.apache.ivy.util.Message;
import org.apache.ivy.util.XMLHelper;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.text.ParseException;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import static org.apache.ivy.core.module.descriptor.Configuration.Visibility.PRIVATE;
import static org.apache.ivy.core.module.descriptor.Configuration.Visibility.PUBLIC;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
public class XmlModuleDescriptorParserTest extends AbstractModuleDescriptorParserTester {
private IvySettings settings = null;
@Rule
public ExpectedException expExc = ExpectedException.none();
private IvySettings settings;
@Before
public void setUp() {
@ -148,52 +147,42 @@ public class XmlModuleDescriptorParserTest extends AbstractModuleDescriptorParse
}
@Test
public void testBad() throws IOException, ParseException {
expExc.expect(ParseException.class);
expExc.expectMessage("'modul'");
public void testBad() {
assertTrue(XMLHelper.canUseSchemaValidation());
XmlModuleDescriptorParser.getInstance().parseDescriptor(settings,
getClass().getResource("test-bad.xml"), true);
Exception exception = assertThrows(ParseException.class, () ->
XmlModuleDescriptorParser.getInstance().parseDescriptor(settings, getClass().getResource("test-bad.xml"), true));
assertTrue(exception.getMessage().contains("'modul'"));
}
@Test
public void testBadOrg() throws IOException, ParseException {
expExc.expect(ParseException.class);
expExc.expectMessage("organization");
public void testBadOrg() {
assertTrue(XMLHelper.canUseSchemaValidation());
XmlModuleDescriptorParser.getInstance().parseDescriptor(settings,
getClass().getResource("test-bad-org.xml"), true);
Exception exception = assertThrows(ParseException.class, () ->
XmlModuleDescriptorParser.getInstance().parseDescriptor(settings, getClass().getResource("test-bad-org.xml"), true));
assertTrue(exception.getMessage().contains("organization"));
}
@Test
public void testBadConfs() throws IOException, ParseException {
expExc.expect(ParseException.class);
expExc.expectMessage("invalidConf");
XmlModuleDescriptorParser.getInstance().parseDescriptor(settings,
getClass().getResource("test-bad-confs.xml"), true);
public void testBadConfs() {
Exception exception = assertThrows(ParseException.class, () ->
XmlModuleDescriptorParser.getInstance().parseDescriptor(settings, getClass().getResource("test-bad-confs.xml"), true));
assertTrue(exception.getMessage().contains("invalidConf"));
}
@Test
public void testCyclicConfs2() throws IOException, ParseException {
expExc.expect(ParseException.class);
expExc.expectMessage("A => B => A");
XmlModuleDescriptorParser.getInstance().parseDescriptor(settings,
getClass().getResource("test-cyclic-confs1.xml"), true);
public void testCyclicConfs2() {
Exception exception = assertThrows(ParseException.class, () ->
XmlModuleDescriptorParser.getInstance().parseDescriptor(settings, getClass().getResource("test-cyclic-confs1.xml"), true));
assertTrue(exception.getMessage().contains("A => B => A"));
}
@Test
public void testCyclicConfs3() throws IOException, ParseException {
expExc.expect(ParseException.class);
expExc.expectMessage("A => C => B => A");
XmlModuleDescriptorParser.getInstance().parseDescriptor(settings,
getClass().getResource("test-cyclic-confs2.xml"), true);
public void testCyclicConfs3() {
Exception exception = assertThrows(ParseException.class, () ->
XmlModuleDescriptorParser.getInstance().parseDescriptor(settings, getClass().getResource("test-cyclic-confs2.xml"), true));
assertTrue(exception.getMessage().contains("A => C => B => A"));
}
@Test
@ -1474,7 +1463,7 @@ public class XmlModuleDescriptorParserTest extends AbstractModuleDescriptorParse
final Path targetDir = Paths.get(System.getProperty("java.io.tmpdir"), "foo%2Fbar");
Files.createDirectories(targetDir);
final Path parentIvyXMLPath = Paths.get(targetDir.toString(), "parent-ivy.xml");
try (final InputStream is = parentIvyXML.openStream()) {
try (InputStream is = parentIvyXML.openStream()) {
Files.copy(is, parentIvyXMLPath, StandardCopyOption.REPLACE_EXISTING);
}
assertTrue("Parent ivy xml file wasn't copied", Files.isRegularFile(parentIvyXMLPath));

View File

@ -51,21 +51,16 @@ import org.apache.ivy.util.FileUtil;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
/**
*
*/
public class FileSystemResolverTest extends AbstractDependencyResolverTest {
// CheckStyle:MagicNumberCheck OFF
private static final String FS = File.separator;
@ -89,9 +84,6 @@ public class FileSystemResolverTest extends AbstractDependencyResolverTest {
setupLastModified();
}
@Rule
public ExpectedException expExc = ExpectedException.none();
@Before
public void setUp() {
settings = new IvySettings();
@ -889,21 +881,14 @@ public class FileSystemResolverTest extends AbstractDependencyResolverTest {
resolver.abortPublishTransaction();
assertFalse(new File("test/repositories/1/myorg/mymodule/myrevision/ivy.xml").exists());
assertFalse(new File(
"test/repositories/1/myorg/mymodule/myrevision/myartifact-myrevision.myext")
.exists());
assertFalse(new File("test/repositories/1/myorg/mymodule/myrevision/myartifact-myrevision.myext").exists());
}
/**
* Publishing with transaction=true and an unsupported pattern must fail.
*
* @throws Exception if something goes wrong
*/
@Test
public void testUnsupportedTransaction() throws Exception {
expExc.expect(IllegalStateException.class);
expExc.expectMessage("transactional");
public void testUnsupportedTransaction() {
FileSystemResolver resolver = new FileSystemResolver();
resolver.setName("test");
resolver.setSettings(settings);
@ -919,20 +904,18 @@ public class FileSystemResolverTest extends AbstractDependencyResolverTest {
"myext");
File src = new File("test/repositories/ivysettings.xml");
resolver.beginPublishTransaction(mrid, false);
resolver.publish(artifact, src, false);
Exception exception = assertThrows(IllegalStateException.class, () -> {
resolver.beginPublishTransaction(mrid, false);
resolver.publish(artifact, src, false);
});
assertTrue(exception.getMessage().contains("transactional"));
}
/**
* Publishing with transaction=true and an unsupported combination of patterns must fail.
*
* @throws Exception if something goes wrong
*/
@Test
public void testUnsupportedTransaction2() throws Exception {
expExc.expect(IllegalStateException.class);
expExc.expectMessage("transactional");
public void testUnsupportedTransaction2() {
FileSystemResolver resolver = new FileSystemResolver();
resolver.setName("test");
resolver.setSettings(settings);
@ -950,21 +933,19 @@ public class FileSystemResolverTest extends AbstractDependencyResolverTest {
"myext");
File src = new File("test/repositories/ivysettings.xml");
resolver.beginPublishTransaction(mrid, false);
resolver.publish(ivyArtifact, src, false);
resolver.publish(artifact, src, false);
Exception exception = assertThrows(IllegalStateException.class, () -> {
resolver.beginPublishTransaction(mrid, false);
resolver.publish(ivyArtifact, src, false);
resolver.publish(artifact, src, false);
});
assertTrue(exception.getMessage().contains("transactional"));
}
/**
* Publishing with transaction=true and overwrite mode must fail.
*
* @throws Exception if something goes wrong
*/
@Test
public void testUnsupportedTransaction3() throws Exception {
expExc.expect(IllegalStateException.class);
expExc.expectMessage("transactional");
public void testUnsupportedTransaction3() {
FileSystemResolver resolver = new FileSystemResolver();
resolver.setName("test");
resolver.setSettings(settings);
@ -978,9 +959,12 @@ public class FileSystemResolverTest extends AbstractDependencyResolverTest {
"myext");
File src = new File("test/repositories/ivysettings.xml");
// overwrite transaction not supported
resolver.beginPublishTransaction(mrid, true);
resolver.publish(artifact, src, true);
Exception exception = assertThrows(IllegalStateException.class, () -> {
// overwrite transaction not supported
resolver.beginPublishTransaction(mrid, true);
resolver.publish(artifact, src, true);
});
assertTrue(exception.getMessage().contains("transactional"));
}
@Test

View File

@ -17,9 +17,6 @@
*/
package org.apache.ivy.plugins.resolver;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.io.File;
import java.util.List;
@ -38,25 +35,24 @@ import org.apache.ivy.core.resolve.ResolveOptions;
import org.apache.ivy.core.resolve.ResolvedModuleRevision;
import org.apache.ivy.core.settings.IvySettings;
import org.apache.ivy.core.sort.SortEngine;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
/**
*
*/
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
public class IvyRepResolverTest extends AbstractDependencyResolverTest {
private IvySettings settings;
private ResolveEngine engine;
private ResolveData data;
@Rule
public ExpectedException expExc = ExpectedException.none();
@Before
public void setUp() {
settings = new IvySettings();
@ -97,21 +93,19 @@ public class IvyRepResolverTest extends AbstractDependencyResolverTest {
/**
* Test case for IVY-625. Must fail if no ivyroot specified.
*
* @throws Exception if something goes wrong
* @see <a href="https://issues.apache.org/jira/browse/IVY-625">IVY-625</a>
*/
@Test
public void testMandatoryRoot() throws Exception {
expExc.expect(IllegalStateException.class);
expExc.expectMessage("ivyroot");
public void testMandatoryRoot() {
IvyRepResolver resolver = new IvyRepResolver();
resolver.setName("test");
resolver.setSettings(settings);
ModuleRevisionId mrid = ModuleRevisionId.newInstance("apache", "commons-cli", "1.0");
resolver.getDependency(new DefaultDependencyDescriptor(mrid, false), data);
Exception exception = assertThrows(IllegalStateException.class, () ->
resolver.getDependency(new DefaultDependencyDescriptor(mrid, false), data));
assertTrue(exception.getMessage().contains("ivyroot"));
}
@Test

View File

@ -17,17 +17,6 @@
*/
package org.apache.ivy.util.url;
import org.apache.ivy.TestHelper;
import org.apache.ivy.core.settings.NamedTimeoutConstraint;
import org.apache.ivy.core.settings.TimeoutConstraint;
import org.apache.ivy.util.FileUtil;
import org.apache.ivy.util.url.URLHandler.URLInfo;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import java.io.File;
import java.io.IOException;
import java.net.InetSocketAddress;
@ -37,30 +26,31 @@ import java.nio.file.Path;
import java.util.Collections;
import java.util.Random;
import org.apache.ivy.TestHelper;
import org.apache.ivy.core.settings.NamedTimeoutConstraint;
import org.apache.ivy.core.settings.TimeoutConstraint;
import org.apache.ivy.util.FileUtil;
import org.apache.ivy.util.url.URLHandler.URLInfo;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.apache.ivy.plugins.resolver.IBiblioResolver.DEFAULT_M2_ROOT;
import static org.hamcrest.Matchers.endsWith;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
/**
* Test {@link HttpClientHandler}
*/
public class HttpclientURLHandlerTest {
public class HttpClientHandlerTest {
// remote.test
private File testDir;
private HttpClientHandler handler;
private final TimeoutConstraint defaultTimeoutConstraint;
{
defaultTimeoutConstraint = new NamedTimeoutConstraint("default-http-client-handler-timeout");
((NamedTimeoutConstraint) defaultTimeoutConstraint).setConnectionTimeout(5000);
}
@Rule
public ExpectedException expExc = ExpectedException.none();
private TimeoutConstraint defaultTimeoutConstraint;
@Before
public void setUp() {
@ -68,14 +58,16 @@ public class HttpclientURLHandlerTest {
testDir.mkdirs();
handler = new HttpClientHandler();
defaultTimeoutConstraint = new NamedTimeoutConstraint("default-http-client-handler-timeout");
((NamedTimeoutConstraint) defaultTimeoutConstraint).setConnectionTimeout(5000);
}
@After
public void tearDown() {
try {
handler.close();
} catch (Exception e) {
// ignore
} catch (Exception ignore) {
}
FileUtil.forceDelete(testDir);
}
@ -91,7 +83,6 @@ public class HttpclientURLHandlerTest {
/**
* Test case for IVY-390.
*
* @throws Exception if something goes wrong
* @see <a href="https://issues.apache.org/jira/browse/IVY-390">IVY-390</a>
*/
@SuppressWarnings({"resource", "deprecation"})
@ -129,18 +120,10 @@ public class HttpclientURLHandlerTest {
* {@link CredentialsStore Ivy credentials store} works as expected when it interacts
* with a HTTP server which requires authentication for accessing resources.
*
* @throws Exception if something goes wrong
* @see <a href="https://issues.apache.org/jira/browse/IVY-1336">IVY-1336</a>
*/
@Test
public void testCredentials() throws Exception {
// we catch it and check for presence of 401 in the exception message.
// It's not exactly an contract that the IOException will have the 401 message
// but for now that's how it's implemented and it's fine to check for the presence
// of that message at the moment
expExc.expect(IOException.class);
expExc.expectMessage(endsWith("ivysettings.xml' 401 - 'Unauthorized"));
final CredentialsStore credentialsStore = CredentialsStore.INSTANCE;
final String realm = "test-http-client-handler-realm";
final String host = "localhost";
@ -153,7 +136,7 @@ public class HttpclientURLHandlerTest {
final Path repoRoot = new File("test/repositories").toPath();
assertTrue(repoRoot + " is not a directory", Files.isDirectory(repoRoot));
// create a server backed by BASIC auth with the set of "allowed" credentials
try (final AutoCloseable server = TestHelper.createBasicAuthHttpServerBackedRepo(serverBindAddr,
try (AutoCloseable server = TestHelper.createBasicAuthHttpServerBackedRepo(serverBindAddr,
contextRoot, repoRoot, realm, Collections.singletonMap(userName, password))) {
final File target = new File(testDir, "downloaded.xml");
@ -167,7 +150,7 @@ public class HttpclientURLHandlerTest {
// now create a server backed by BASIC auth with a set of credentials that do *not* match
// with what the Ivy credentials store will return for a given realm+host combination, i.e.
// Ivy credential store will return back invalid credentials and the server will reject them
try (final AutoCloseable server = TestHelper.createBasicAuthHttpServerBackedRepo(serverBindAddr,
try (AutoCloseable server = TestHelper.createBasicAuthHttpServerBackedRepo(serverBindAddr,
contextRoot, repoRoot, realm, Collections.singletonMap("other-" + userName, "other-" + password))) {
final File target = new File(testDir, "should-not-have-been-downloaded.xml");
@ -175,7 +158,12 @@ public class HttpclientURLHandlerTest {
final URL src = new URL("http://localhost:" + serverBindAddr.getPort() + "/"
+ contextRoot + "/ivysettings.xml");
// download it (expected to fail)
handler.download(src, target, null, defaultTimeoutConstraint);
Exception exception = assertThrows(IOException.class, () -> handler.download(src, target, null, defaultTimeoutConstraint));
// we catch it and check for presence of 401 in the exception message.
// It's not exactly an contract that the IOException will have the 401 message
// but for now that's how it's implemented and it's fine to check for the presence
// of that message at the moment
assertTrue(exception.getMessage().endsWith("ivysettings.xml' 401 - 'Unauthorized"));
}
}