package org.jboss.windup.tests.bootstrap;
import com.google.common.base.Charsets;
import com.google.common.io.Files;
import org.jboss.windup.bootstrap.Bootstrap;
import org.jboss.windup.util.PathUtil;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import java.io.File;
import java.io.IOException;
import static org.junit.Assert.assertTrue;
public class DiscoverPackagesCommandTest extends AbstractBootstrapTest {
private static final String TESTING_FILE_MAPPING_RULES = "<?xml version=\"1.0\"?>\n"
+ "<ruleset xmlns=\"http://windup.jboss.org/schema/jboss-ruleset\" "
+ "id=\"BootstrapTests_PackageToVendorNames\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
+ "xsi:schemaLocation=\"http://windup.jboss.org/schema/jboss-ruleset "
+ "http://windup.jboss.org/schema/jboss-ruleset/windup-jboss-ruleset.xsd\">\n"
+ " <metadata>\n"
+ " <description>Only for bootstrap tests.</description>\n"
+ " <dependencies>\n"
+ " <addon id=\"org.jboss.windup.rules,windup-rules-java," + Bootstrap.getRuntimeAPIVersion() + "\" />\n"
+ " </dependencies>\n"
+ " </metadata>\n"
+ "\n"
+ " <rules>\n"
+ " <package-mapping from=\"org.apache\" to=\"Apache\" />\n"
+ " </rules>\n"
+ "</ruleset>";
@Rule
public final TemporaryFolder rulesDir = new TemporaryFolder();
@Before
public void setUpRulesDirectory() throws IOException {
File rules = rulesDir.newFile("test-filemapping-rules.windup.xml");
Files.write(TESTING_FILE_MAPPING_RULES, rules, Charsets.UTF_8);
System.setProperty(PathUtil.WINDUP_RULESETS_DIR_SYSPROP, rulesDir.getRoot().getAbsolutePath());
}
@After
public void cleanSystemProperty() {
System.clearProperty(PathUtil.WINDUP_RULESETS_DIR_SYSPROP);
}
@Test
public void withoutInput() {
bootstrap("--discoverPackages");
assertTrue(capturedOutput().contains("ERROR: --input must be specified"));
}
@Test
public void withValuelessInput() {
bootstrap("--discoverPackages", "--input");
assertTrue(capturedOutput().contains("ERROR: --input must be specified"));
}
@Ignore("WINDUP-852")
@Test
public void withIncorrectInput() {
bootstrap("--discoverPackages", "--input", "doesntExist.war");
assertTrue(capturedOutput().contains("ERROR"));
}
@Test
public void withCorrectInput() {
bootstrap("--discoverPackages", "--input", "../test-files/jee-example-app-1.0.0.ear");
assertTrue(capturedOutput().contains("Known Packages:"));
assertTrue(capturedOutput().contains("org.apache"));
assertTrue(capturedOutput().contains("Apache"));
assertTrue(capturedOutput().contains("Unknown Packages:"));
assertTrue(capturedOutput().contains("weblogic"));
assertTrue(capturedOutput().contains("Classes"));
}
}