Browse Source

Add back non-null assertions and parameterize

master
Gintas Grigelionis 7 years ago
parent
commit
966fa954cb
1 changed files with 88 additions and 91 deletions
  1. +88
    -91
      src/tests/junit/org/apache/tools/ant/taskdefs/MakeUrlTest.java

+ 88
- 91
src/tests/junit/org/apache/tools/ant/taskdefs/MakeUrlTest.java View File

@@ -19,115 +19,112 @@ package org.apache.tools.ant.taskdefs;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.BuildFileRule;
import org.hamcrest.Matcher;
import org.junit.Before;
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.io.InputStream;
import java.io.IOException;
import java.net.URL;
import java.util.Arrays;
import java.util.Collection;

import static org.hamcrest.Matchers.both;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.endsWith;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;

@RunWith(Enclosed.class)
public class MakeUrlTest {

@Rule
public final BuildFileRule buildRule = new BuildFileRule();

@Rule
public ExpectedException thrown = ExpectedException.none();

@Before
public void setUp() {
buildRule.configureProject("src/etc/testcases/taskdefs/makeurl.xml");
}

@Test
public void testEmpty() {
thrown.expect(BuildException.class);
thrown.expectMessage("No property defined");
buildRule.executeTarget("testEmpty");
}

@Test
public void testNoProperty() {
thrown.expect(BuildException.class);
thrown.expectMessage("No property defined");
buildRule.executeTarget("testNoProperty");
}

@Test
public void testNoFile() {
thrown.expect(BuildException.class);
thrown.expectMessage("No files defined");
buildRule.executeTarget("testNoFile");
}

@Test
public void testValidation() {
thrown.expect(BuildException.class);
thrown.expectMessage("A source file is missing");
buildRule.executeTarget("testValidation");
}

@Test
public void testWorks() {
buildRule.executeTarget("testWorks");
assertThat(buildRule.getProject().getProperty("testWorks"),
both(containsString("file:")).and(containsString("/foo")));
}

@Test
public void testIllegalChars() {
buildRule.executeTarget("testIllegalChars");
assertThat(buildRule.getProject().getProperty("testIllegalChars"),
both(containsString("file:")).and(containsString("fo%20o%25")));
}

/**
* test that we can round trip by opening a url that exists
*
* @throws IOException if something goes wrong
*/
@Test
public void testRoundTrip() throws IOException {
buildRule.executeTarget("testRoundTrip");
String property = buildRule.getProject().getProperty("testRoundTrip");
assertThat(property, containsString("file:"));
URL url = new URL(property);
InputStream instream = url.openStream();
instream.close();
}

@Test
public void testIllegalCombinations() {
buildRule.executeTarget("testIllegalCombinations");
assertThat(buildRule.getProject().getProperty("testIllegalCombinations"),
both(containsString("/foo")).and(containsString(".xml")));
}

@Test
public void testFileset() {
buildRule.executeTarget("testFileset");
assertThat(buildRule.getProject().getProperty("testFileset"),
both(containsString(".xml ")).and(endsWith(".xml")));
}

@Test
public void testFilesetSeparator() {
buildRule.executeTarget("testFilesetSeparator");
assertThat(buildRule.getProject().getProperty("testFilesetSeparator"),
both(containsString(".xml\",\"")).and(endsWith(".xml")));
@RunWith(Parameterized.class)
public static class InvalidArgumentTest {

@Rule
public final BuildFileRule buildRule = new BuildFileRule();

@Rule
public ExpectedException thrown = ExpectedException.none();

@Before
public void setUp() {
buildRule.configureProject("src/etc/testcases/taskdefs/makeurl.xml");
}

@Parameterized.Parameters(name = "{0}")
public static Collection<Object[]> targets() {
return Arrays.asList(new Object[][]{
{"testEmpty", "No property defined"},
{"testNoProperty", "No property defined"},
{"testNoFile", "No files defined"},
{"testValidation", "A source file is missing"}
});
}

@Parameterized.Parameter
public String targetName;

@Parameterized.Parameter(1)
public String message;

@Test
public void test() {
thrown.expect(BuildException.class);
thrown.expectMessage(message);
buildRule.executeTarget(targetName);
}
}

@Test
public void testPath() {
buildRule.executeTarget("testPath");
assertThat(buildRule.getProject().getProperty("testPath"), containsString("makeurl.xml"));
@RunWith(Parameterized.class)
public static class ValidArgumentTest {

@Rule
public final BuildFileRule buildRule = new BuildFileRule();

@Before
public void setUp() {
buildRule.configureProject("src/etc/testcases/taskdefs/makeurl.xml");
}

@Parameterized.Parameters(name = "{0}")
public static Collection<Object[]> targets() {
return Arrays.asList(new Object[][]{
{"testWorks", both(containsString("file:")).and(containsString("/foo"))},
{"testIllegalChars", both(containsString("file:")).and(containsString("fo%20o%25"))},
{"testRoundTrip", containsString("file:")},
{"testIllegalCombinations", both(containsString("/foo")).and(containsString(".xml"))},
{"testFileset", both(containsString(".xml ")).and(endsWith(".xml"))},
{"testFilesetSeparator", both(containsString(".xml\",\"")).and(endsWith(".xml"))},
{"testPath", containsString("makeurl.xml")}
});
}

@Parameterized.Parameter
public String targetName;

@Parameterized.Parameter(1)
public Matcher<String> matcher;

@Test
public void test() throws IOException {
buildRule.executeTarget(targetName);
String property = buildRule.getProject().getProperty(targetName);
assertNotNull("property not set", property);
assertThat(property, matcher);

if (targetName.equals("testRoundTrip")) {
// test that we can round trip by opening a url that exists
URL url = new URL(property);
InputStream instream = url.openStream();
instream.close();
}
}
}

}

Loading…
Cancel
Save