source: other-projects/trunk/gs3-release-maker/apache-ant-1.6.5/src/testcases/org/apache/tools/ant/taskdefs/optional/PropertyFileTest.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: 7.9 KB
Line 
1/*
2 * Copyright 2001-2004 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 */
17package org.apache.tools.ant.taskdefs.optional;
18
19import org.apache.tools.ant.BuildFileTest;
20
21import java.util.Properties;
22import java.io.FileOutputStream;
23import java.io.FileInputStream;
24import java.io.InputStream;
25import java.io.File;
26
27/**
28 * JUnit testcase that excercises the optional PropertyFile task in ant.
29 * (this is really more of a functional test so far.., but it's enough to let
30 * me start refactoring...)
31 *
32 *@created October 2, 2001
33 */
34
35public class PropertyFileTest extends BuildFileTest {
36
37 public PropertyFileTest(String name) {
38 super(name);
39 }
40
41
42 /**
43 * The JUnit setup method
44 */
45 public void setUp() throws Exception {
46 destroyTempFiles();
47 initTestPropFile();
48 initBuildPropFile();
49 configureProject(projectFilePath);
50 project.setProperty(valueDoesNotGetOverwrittenPropertyFileKey,valueDoesNotGetOverwrittenPropertyFile);
51 }
52
53
54 /**
55 * The JUnit tearDown method
56 */
57 public void tearDown() {
58 destroyTempFiles();
59 }
60
61 public void testNonExistingFile() {
62 PropertyFile props = new PropertyFile();
63 props.setProject( getProject() );
64 File file = new File("this-file-does-not-exist.properties");
65 props.setFile(file);
66 assertFalse("Properties file exists before test.", file.exists());
67 props.execute();
68 assertTrue("Properties file does not exist after test.", file.exists());
69 file.delete();
70 }
71
72 /**
73 * A unit test for JUnit- Excercises the propertyfile tasks ability to
74 * update properties that are already defined-
75 */
76 public void testUpdatesExistingProperties() throws Exception {
77 Properties beforeUpdate = getTestProperties();
78 assertEquals(FNAME, beforeUpdate.getProperty(FNAME_KEY));
79 assertEquals(LNAME, beforeUpdate.getProperty(LNAME_KEY));
80 assertEquals(EMAIL, beforeUpdate.getProperty(EMAIL_KEY));
81 assertEquals(null, beforeUpdate.getProperty(PHONE_KEY));
82 assertEquals(null, beforeUpdate.getProperty(AGE_KEY));
83 assertEquals(null, beforeUpdate.getProperty(DATE_KEY));
84
85 // ask ant to update the properties...
86 executeTarget("update-existing-properties");
87
88 Properties afterUpdate = getTestProperties();
89 assertEquals(NEW_FNAME, afterUpdate.getProperty(FNAME_KEY));
90 assertEquals(NEW_LNAME, afterUpdate.getProperty(LNAME_KEY));
91 assertEquals(NEW_EMAIL, afterUpdate.getProperty(EMAIL_KEY));
92 assertEquals(NEW_PHONE, afterUpdate.getProperty(PHONE_KEY));
93 assertEquals(NEW_AGE, afterUpdate.getProperty(AGE_KEY));
94 assertEquals(NEW_DATE, afterUpdate.getProperty(DATE_KEY));
95 }
96
97 public void testExerciseDefaultAndIncrement() throws Exception {
98 executeTarget("exercise");
99 assertEquals("3",project.getProperty("int.with.default"));
100 assertEquals("1",project.getProperty("int.without.default"));
101 assertEquals("-->",project.getProperty("string.with.default"));
102 assertEquals(".",project.getProperty("string.without.default"));
103 assertEquals("2002/01/21 12:18", project.getProperty("ethans.birth"));
104 assertEquals("2003/01/21", project.getProperty("first.birthday"));
105 assertEquals("0124", project.getProperty("olderThanAWeek"));
106 assertEquals("37", project.getProperty("existing.prop"));
107 assertEquals("6",project.getProperty("int.without.value"));
108 }
109
110 public void testValueDoesNotGetOverwritten() {
111 // this test shows that the bug report 21505 is fixed
112 executeTarget("bugDemo1");
113 executeTarget("bugDemo2");
114 assertEquals("5", project.getProperty("foo"));
115 }
116/*
117 public void testDirect() throws Exception {
118 PropertyFile pf = new PropertyFile();
119 pf.setProject(project);
120 pf.setFile(new File(testPropsFilePath));
121 PropertyFile.Entry entry = pf.createEntry();
122
123 entry.setKey("date");
124 entry.setValue("123");
125 PropertyFile.Entry.Type type = new PropertyFile.Entry.Type();
126 type.setValue("date");
127 entry.setType(type);
128
129 entry.setPattern("yyyy/MM/dd");
130
131 PropertyFile.Entry.Operation operation = new PropertyFile.Entry.Operation();
132 operation.setValue("+");
133 pf.execute();
134
135 Properties props = getTestProperties();
136 assertEquals("yeehaw", props.getProperty("date"));
137 }
138*/
139
140 private Properties getTestProperties() throws Exception {
141 Properties testProps = new Properties();
142 FileInputStream propsFile = new FileInputStream(testPropsFilePath);
143 testProps.load(propsFile);
144 propsFile.close();
145 return testProps;
146 }
147
148
149 private void initTestPropFile() throws Exception {
150 Properties testProps = new Properties();
151 testProps.put(FNAME_KEY, FNAME);
152 testProps.put(LNAME_KEY, LNAME);
153 testProps.put(EMAIL_KEY, EMAIL);
154 testProps.put("existing.prop", "37");
155
156 FileOutputStream fos = new FileOutputStream(testPropsFilePath);
157 testProps.store(fos, "defaults");
158 fos.close();
159 }
160
161
162 private void initBuildPropFile() throws Exception {
163 Properties buildProps = new Properties();
164 buildProps.put(testPropertyFileKey, testPropertyFile);
165 buildProps.put(FNAME_KEY, NEW_FNAME);
166 buildProps.put(LNAME_KEY, NEW_LNAME);
167 buildProps.put(EMAIL_KEY, NEW_EMAIL);
168 buildProps.put(PHONE_KEY, NEW_PHONE);
169 buildProps.put(AGE_KEY, NEW_AGE);
170 buildProps.put(DATE_KEY, NEW_DATE);
171
172 FileOutputStream fos = new FileOutputStream(buildPropsFilePath);
173 buildProps.store(fos, null);
174 fos.close();
175 }
176
177
178 private void destroyTempFiles() {
179 File tempFile = new File(testPropsFilePath);
180 tempFile.delete();
181 tempFile = null;
182
183 tempFile = new File(buildPropsFilePath);
184 tempFile.delete();
185 tempFile = null;
186
187 tempFile = new File(valueDoesNotGetOverwrittenPropsFilePath);
188 tempFile.delete();
189 tempFile = null;
190 }
191
192
193
194 private static final String
195 projectFilePath = "src/etc/testcases/taskdefs/optional/propertyfile.xml",
196
197 testPropertyFile = "propertyfile.test.properties",
198 testPropertyFileKey = "test.propertyfile",
199 testPropsFilePath = "src/etc/testcases/taskdefs/optional/" + testPropertyFile,
200
201 valueDoesNotGetOverwrittenPropertyFile = "overwrite.test.properties",
202 valueDoesNotGetOverwrittenPropertyFileKey = "overwrite.test.propertyfile",
203 valueDoesNotGetOverwrittenPropsFilePath = "src/etc/testcases/taskdefs/optional/" + valueDoesNotGetOverwrittenPropertyFile,
204
205 buildPropsFilePath = "src/etc/testcases/taskdefs/optional/propertyfile.build.properties",
206
207 FNAME = "Bruce",
208 NEW_FNAME = "Clark",
209 FNAME_KEY = "firstname",
210
211 LNAME = "Banner",
212 NEW_LNAME = "Kent",
213 LNAME_KEY = "lastname",
214
215 EMAIL = "[email protected]",
216 NEW_EMAIL = "[email protected]",
217 EMAIL_KEY = "email",
218
219 NEW_PHONE = "(520) 555-1212",
220 PHONE_KEY = "phone",
221
222 NEW_AGE = "30",
223 AGE_KEY = "age",
224
225 NEW_DATE = "2001/01/01 12:45",
226 DATE_KEY = "date";
227}
Note: See TracBrowser for help on using the repository browser.