|
Ant example source code file (CommandlineJavaTest.java)
The CommandlineJavaTest.java source code/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 org.apache.tools.ant.types; import junit.framework.TestCase; import org.apache.tools.ant.MagicNames; import org.apache.tools.ant.Project; import org.apache.tools.ant.util.JavaEnvUtils; /** * JUnit 3 testcases for org.apache.tools.ant.CommandlineJava * */ public class CommandlineJavaTest extends TestCase { private String cloneVm; public CommandlineJavaTest(String name) { super(name); } private Project project; public void setUp() { project = new Project(); project.setBasedir(System.getProperty("root")); project.setProperty("build.sysclasspath", "ignore"); cloneVm = System.getProperty("ant.build.clonevm"); if (cloneVm != null) { System.setProperty("ant.build.clonevm", "false"); } } public void tearDown() { if (cloneVm != null) { System.setProperty("ant.build.clonevm", cloneVm); } } public void testGetCommandline() throws Exception { CommandlineJava c = new CommandlineJava(); c.createArgument().setValue("org.apache.tools.ant.CommandlineJavaTest"); c.setClassname("junit.textui.TestRunner"); c.createVmArgument().setValue("-Djava.compiler=NONE"); String[] s = c.getCommandline(); assertEquals("no classpath", 4, s.length); /* * After changing CommandlineJava to search for the java * executable, I don't know, how to tests the value returned * here without using the same logic as applied in the class * itself. * * assertTrue("no classpath", "java", s[0]); */ assertEquals("no classpath", "-Djava.compiler=NONE", s[1]); assertEquals("no classpath", "junit.textui.TestRunner", s[2]); assertEquals("no classpath", "org.apache.tools.ant.CommandlineJavaTest", s[3]); try { CommandlineJava c2 = (CommandlineJava) c.clone(); } catch (NullPointerException ex) { fail("cloning should work without classpath specified"); } c.createClasspath(project).setLocation(project.resolveFile("build.xml")); c.createClasspath(project).setLocation(project.resolveFile( System.getProperty(MagicNames.ANT_HOME)+"/lib/ant.jar")); s = c.getCommandline(); assertEquals("with classpath", 6, s.length); // assertEquals("with classpath", "java", s[0]); assertEquals("with classpath", "-Djava.compiler=NONE", s[1]); assertEquals("with classpath", "-classpath", s[2]); assertTrue("build.xml contained", s[3].indexOf("build.xml"+java.io.File.pathSeparator) >= 0); assertTrue("ant.jar contained", s[3].endsWith("ant.jar")); assertEquals("with classpath", "junit.textui.TestRunner", s[4]); assertEquals("with classpath", "org.apache.tools.ant.CommandlineJavaTest", s[5]); } public void testJarOption() throws Exception { CommandlineJava c = new CommandlineJava(); c.createArgument().setValue("arg1"); c.setJar("myfile.jar"); c.createVmArgument().setValue("-classic"); c.createVmArgument().setValue("-Dx=y"); String[] s = c.getCommandline(); assertEquals("-classic", s[1]); assertEquals("-Dx=y", s[2]); assertEquals("-jar", s[3]); assertEquals("myfile.jar", s[4]); assertEquals("arg1", s[5]); } public void testSysproperties() { String currentClasspath = System.getProperty("java.class.path"); assertNotNull(currentClasspath); assertNull(System.getProperty("key")); CommandlineJava c = new CommandlineJava(); Environment.Variable v = new Environment.Variable(); v.setKey("key"); v.setValue("value"); c.addSysproperty(v); project.setProperty("key2", "value2"); PropertySet ps = new PropertySet(); ps.setProject(project); ps.appendName("key2"); c.addSyspropertyset(ps); try { c.setSystemProperties(); String newClasspath = System.getProperty("java.class.path"); assertNotNull(newClasspath); assertEquals(currentClasspath, newClasspath); assertNotNull(System.getProperty("key")); assertEquals("value", System.getProperty("key")); assertTrue(System.getProperties().containsKey("java.class.path")); assertNotNull(System.getProperty("key2")); assertEquals("value2", System.getProperty("key2")); } finally { c.restoreSystemProperties(); } assertNull(System.getProperty("key")); assertNull(System.getProperty("key2")); } public void testAssertions() throws Exception { if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_2) || JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_3)) { return; } CommandlineJava c = new CommandlineJava(); c.createArgument().setValue("org.apache.tools.ant.CommandlineJavaTest"); c.setClassname("junit.textui.TestRunner"); c.createVmArgument().setValue("-Djava.compiler=NONE"); Assertions a = new Assertions(); a.setProject(project); Assertions.EnabledAssertion ea = new Assertions.EnabledAssertion(); ea.setClass("junit.textui.TestRunner"); a.addEnable(ea); c.setAssertions(a); String[] expected = new String[] { null, "-Djava.compiler=NONE", "-ea:junit.textui.TestRunner", "junit.textui.TestRunner", "org.apache.tools.ant.CommandlineJavaTest", }; // only the second iteration would pass because of PR 27218 for (int i = 0; i < 3; i++) { String[] s = c.getCommandline(); assertEquals(expected.length, s.length); for (int j = 1; j < expected.length; j++) { assertEquals(expected[j], s[j]); } } CommandlineJava c2 = (CommandlineJava) c.clone(); String[] s = c2.getCommandline(); assertEquals(expected.length, s.length); for (int j = 1; j < expected.length; j++) { assertEquals(expected[j], s[j]); } } } Other Ant examples (source code examples)Here is a short list of links related to this Ant CommandlineJavaTest.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.