source: other-projects/trunk/gs3-release-maker/apache-ant-1.6.5/src/testcases/org/apache/tools/ant/types/CommandlineJavaTest.java@ 14627

Last change on this file since 14627 was 14627, checked in by oranfry, 17 years ago

initial import of the gs3-release-maker

File size: 6.7 KB
Line 
1/*
2 * Copyright 2000-2005 The Apache Software Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16 */
17
18package org.apache.tools.ant.types;
19
20import org.apache.tools.ant.Project;
21import org.apache.tools.ant.util.JavaEnvUtils;
22
23import junit.framework.TestCase;
24import junit.framework.AssertionFailedError;
25
26import java.io.File;
27
28/**
29 * JUnit 3 testcases for org.apache.tools.ant.CommandlineJava
30 *
31 */
32public class CommandlineJavaTest extends TestCase {
33
34 public CommandlineJavaTest(String name) {
35 super(name);
36 }
37
38 private Project project;
39
40 public void setUp() {
41 project = new Project();
42 project.setBasedir(".");
43 project.setProperty("build.sysclasspath", "ignore");
44 }
45
46 public void testGetCommandline() throws CloneNotSupportedException {
47 CommandlineJava c = new CommandlineJava();
48 c.createArgument().setValue("org.apache.tools.ant.CommandlineJavaTest");
49 c.setClassname("junit.textui.TestRunner");
50 c.createVmArgument().setValue("-Djava.compiler=NONE");
51 String[] s = c.getCommandline();
52 assertEquals("no classpath", 4, s.length);
53 /*
54 * After changing CommandlineJava to search for the java
55 * executable, I don't know, how to tests the value returned
56 * here without using the same logic as applied in the class
57 * itself.
58 *
59 * assertTrue("no classpath", "java", s[0]);
60 */
61 assertEquals("no classpath", "-Djava.compiler=NONE", s[1]);
62 assertEquals("no classpath", "junit.textui.TestRunner", s[2]);
63 assertEquals("no classpath",
64 "org.apache.tools.ant.CommandlineJavaTest", s[3]);
65 try {
66 CommandlineJava c2 = (CommandlineJava) c.clone();
67 } catch (NullPointerException ex) {
68 fail("cloning should work without classpath specified");
69 }
70
71 c.createClasspath(project).setLocation(project.resolveFile("build.xml"));
72 c.createClasspath(project).setLocation(project.resolveFile(
73 System.getProperty("ant.home")+"/lib/ant.jar"));
74 s = c.getCommandline();
75 assertEquals("with classpath", 6, s.length);
76 // assertEquals("with classpath", "java", s[0]);
77 assertEquals("with classpath", "-Djava.compiler=NONE", s[1]);
78 assertEquals("with classpath", "-classpath", s[2]);
79 assertTrue("build.xml contained",
80 s[3].indexOf("build.xml"+java.io.File.pathSeparator) >= 0);
81 assertTrue("ant.jar contained", s[3].endsWith("ant.jar"));
82 assertEquals("with classpath", "junit.textui.TestRunner", s[4]);
83 assertEquals("with classpath",
84 "org.apache.tools.ant.CommandlineJavaTest", s[5]);
85 }
86
87 public void testJarOption() throws Exception {
88 CommandlineJava c = new CommandlineJava();
89 c.createArgument().setValue("arg1");
90 c.setJar("myfile.jar");
91 c.createVmArgument().setValue("-classic");
92 c.createVmArgument().setValue("-Dx=y");
93 String[] s = c.getCommandline();
94 assertEquals("-classic", s[1]);
95 assertEquals("-Dx=y", s[2]);
96 assertEquals("-jar", s[3]);
97 assertEquals("myfile.jar", s[4]);
98 assertEquals("arg1", s[5]);
99 }
100
101 public void testSysproperties() {
102 String currentClasspath = System.getProperty("java.class.path");
103 assertNotNull(currentClasspath);
104 assertNull(System.getProperty("key"));
105 CommandlineJava c = new CommandlineJava();
106 Environment.Variable v = new Environment.Variable();
107 v.setKey("key");
108 v.setValue("value");
109 c.addSysproperty(v);
110
111 project.setProperty("key2", "value2");
112 PropertySet ps = new PropertySet();
113 ps.setProject(project);
114 ps.appendName("key2");
115 c.addSyspropertyset(ps);
116
117 try {
118 c.setSystemProperties();
119 String newClasspath = System.getProperty("java.class.path");
120 assertNotNull(newClasspath);
121 assertEquals(currentClasspath, newClasspath);
122 assertNotNull(System.getProperty("key"));
123 assertEquals("value", System.getProperty("key"));
124 assertTrue(System.getProperties().containsKey("java.class.path"));
125 assertNotNull(System.getProperty("key2"));
126 assertEquals("value2", System.getProperty("key2"));
127 } finally {
128 c.restoreSystemProperties();
129 }
130 assertNull(System.getProperty("key"));
131 assertNull(System.getProperty("key2"));
132 }
133
134 public void testAssertions() throws CloneNotSupportedException {
135 if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_2)
136 || JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_3)) {
137 return;
138 }
139
140 CommandlineJava c = new CommandlineJava();
141 c.createArgument().setValue("org.apache.tools.ant.CommandlineJavaTest");
142 c.setClassname("junit.textui.TestRunner");
143 c.createVmArgument().setValue("-Djava.compiler=NONE");
144 Assertions a = new Assertions();
145 a.setProject(project);
146 Assertions.EnabledAssertion ea = new Assertions.EnabledAssertion();
147 ea.setClass("junit.textui.TestRunner");
148 a.addEnable(ea);
149 c.setAssertions(a);
150
151 String[] expected = new String[] {
152 null,
153 "-Djava.compiler=NONE",
154 "-ea:junit.textui.TestRunner",
155 "junit.textui.TestRunner",
156 "org.apache.tools.ant.CommandlineJavaTest",
157 };
158
159 // only the second iteration would pass because of PR 27218
160 for (int i = 0; i < 3; i++) {
161 String[] s = c.getCommandline();
162 assertEquals(expected.length, s.length);
163 for (int j = 1; j < expected.length; j++) {
164 assertEquals(expected[j], s[j]);
165 }
166 }
167 CommandlineJava c2 = (CommandlineJava) c.clone();
168 String[] s = c2.getCommandline();
169 assertEquals(expected.length, s.length);
170 for (int j = 1; j < expected.length; j++) {
171 assertEquals(expected[j], s[j]);
172 }
173 }
174
175}
Note: See TracBrowser for help on using the repository browser.