blob: 1837a5e67077c4cba9de6599e88b05f2cdc9961c [file] [log] [blame]
/*
* 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.maven.plugins.war;
/*
* 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.
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.StringReader;
import java.util.LinkedList;
import java.util.List;
import org.apache.maven.plugins.war.stub.MavenProjectBasicStub;
import org.apache.maven.plugins.war.stub.ResourceStub;
import org.codehaus.plexus.util.FileUtils;
/**
* @author Olivier Lamy
* @since 21 juil. 2008
*/
public class WarExplodedMojoFilteringTest extends AbstractWarExplodedMojoTest {
protected File getPomFile() {
return new File(getBasedir(), "/target/test-classes/unit/warexplodedmojo/plugin-config.xml");
}
protected File getTestDirectory() {
return new File(getBasedir(), "target/test-classes/unit/warexplodedmojo/test-dir");
}
/**
* @throws Exception in case of an error.
*/
public void testExplodedWar_WithResourceFiltering() throws Exception {
// setup test data
String testId = "ExplodedWar_WithResourceFiltering";
MavenProjectBasicStub project = new MavenProjectBasicStub();
File webAppDirectory = new File(getTestDirectory(), testId);
File webAppSource = createWebAppSource(testId);
File classesDir = createClassesDir(testId, false);
File webAppResource = new File(getTestDirectory(), testId + "-test-data/resources");
File sampleResource = new File(webAppResource, "custom-setting.cfg");
File sampleResourceWDir = new File(webAppResource, "custom-config/custom-setting.cfg");
List<String> filterList = new LinkedList<>();
ResourceStub[] resources = new ResourceStub[] {new ResourceStub()};
createFile(sampleResource);
createFile(sampleResourceWDir);
String ls = System.getProperty("line.separator");
final String comment = "# this is comment created by author@somewhere@";
// prepare web resources
String content = comment + ls;
content += "system_key_1=${user.dir}" + ls;
content += "system_key_2=@user.dir@" + ls;
content += "project_key_1=${is_this_simple}" + ls;
content += "project_key_2=@is_this_simple@" + ls;
content += "project_name_1=${project.name}" + ls;
content += "project_name_2=@project.name@" + ls;
content += "system_property_1=${system.property}" + ls;
content += "system_property_2=@system.property@" + ls;
FileUtils.fileWrite(sampleResourceWDir.getAbsolutePath(), content);
FileUtils.fileWrite(sampleResource.getAbsolutePath(), content);
System.setProperty("system.property", "system-property-value");
// configure mojo
project.addProperty("is_this_simple", "i_think_so");
resources[0].setDirectory(webAppResource.getAbsolutePath());
resources[0].setFiltering(true);
this.configureMojo(mojo, filterList, classesDir, webAppSource, webAppDirectory, project);
setVariableValueToObject(mojo, "webResources", resources);
mojo.execute();
// validate operation
File expectedWebSourceFile = new File(webAppDirectory, "pansit.jsp");
File expectedWebSource2File = new File(webAppDirectory, "org/web/app/last-exile.jsp");
File expectedResourceFile = new File(webAppDirectory, "custom-setting.cfg");
File expectedResourceWDirFile = new File(webAppDirectory, "custom-config/custom-setting.cfg");
assertTrue("source files not found: " + expectedWebSourceFile.toString(), expectedWebSourceFile.exists());
assertTrue("source files not found: " + expectedWebSource2File.toString(), expectedWebSource2File.exists());
assertTrue("resource file not found:" + expectedResourceFile.toString(), expectedResourceFile.exists());
assertTrue(
"resource file with dir not found:" + expectedResourceWDirFile.toString(),
expectedResourceWDirFile.exists());
// validate filtered file
content = FileUtils.fileRead(expectedResourceWDirFile);
BufferedReader reader = new BufferedReader(new StringReader(content));
assertEquals("error in filtering using System Properties", comment, reader.readLine());
String line = reader.readLine();
System.out.println(" line " + line);
System.out.println(" need " + System.getProperty("user.dir"));
assertEquals(
"error in filtering using System properties", "system_key_1=" + System.getProperty("user.dir"), line);
line = reader.readLine();
System.out.println(" line " + line);
assertEquals(
"error in filtering using System properties", "system_key_2=" + System.getProperty("user.dir"), line);
assertEquals("error in filtering using project properties", "project_key_1=i_think_so", reader.readLine());
assertEquals("error in filtering using project properties", "project_key_2=i_think_so", reader.readLine());
assertEquals("error in filtering using project properties", "project_name_1=Test Project ", reader.readLine());
assertEquals("error in filtering using project properties", "project_name_2=Test Project ", reader.readLine());
assertEquals(
"error in filtering using System properties",
"system_property_1=system-property-value",
reader.readLine());
assertEquals(
"error in filtering using System properties",
"system_property_2=system-property-value",
reader.readLine());
// update property, and generate again
System.setProperty("system.property", "new-system-property-value");
this.configureMojo(mojo, filterList, classesDir, webAppSource, webAppDirectory, project);
mojo.execute();
// validate filtered file
content = FileUtils.fileRead(expectedResourceWDirFile);
reader = new BufferedReader(new StringReader(content));
assertEquals("error in filtering using System Properties", comment, reader.readLine());
assertEquals(
"error in filtering using System properties",
"system_key_1=" + System.getProperty("user.dir"),
reader.readLine());
assertEquals(
"error in filtering using System properties",
"system_key_2=" + System.getProperty("user.dir"),
reader.readLine());
assertEquals("error in filtering using project properties", "project_key_1=i_think_so", reader.readLine());
assertEquals("error in filtering using project properties", "project_key_2=i_think_so", reader.readLine());
assertEquals("error in filtering using project properties", "project_name_1=Test Project ", reader.readLine());
assertEquals("error in filtering using project properties", "project_name_2=Test Project ", reader.readLine());
assertEquals(
"error in filtering using System properties",
"system_property_1=new-system-property-value",
reader.readLine());
assertEquals(
"error in filtering using System properties",
"system_property_2=new-system-property-value",
reader.readLine());
// update property, and generate again
File filterFile = new File(getTestDirectory(), testId + "-test-data/filters/filter.properties");
createFile(filterFile);
filterList.add(filterFile.getAbsolutePath());
content += "resource_key_1=${resource_value_1}\n";
content += "resource_key_2=@resource_value_2@\n" + content;
FileUtils.fileWrite(sampleResourceWDir.getAbsolutePath(), content);
FileUtils.fileWrite(sampleResource.getAbsolutePath(), content);
String filterContent = "resource_value_1=this_is_filtered\n";
filterContent += "resource_value_2=this_is_filtered";
FileUtils.fileWrite(filterFile.getAbsolutePath(), filterContent);
mojo.execute();
// validate filtered file
content = FileUtils.fileRead(expectedResourceWDirFile);
reader = new BufferedReader(new StringReader(content));
assertEquals("error in filtering using System Properties", comment, reader.readLine());
assertEquals(
"error in filtering using System properties",
"system_key_1=" + System.getProperty("user.dir"),
reader.readLine());
assertEquals(
"error in filtering using System properties",
"system_key_2=" + System.getProperty("user.dir"),
reader.readLine());
assertEquals("error in filtering using project properties", "project_key_1=i_think_so", reader.readLine());
assertEquals("error in filtering using project properties", "project_key_2=i_think_so", reader.readLine());
assertEquals("error in filtering using project properties", "project_name_1=Test Project ", reader.readLine());
assertEquals("error in filtering using project properties", "project_name_2=Test Project ", reader.readLine());
assertEquals(
"error in filtering using System properties",
"system_property_1=new-system-property-value",
reader.readLine());
assertEquals(
"error in filtering using System properties",
"system_property_2=new-system-property-value",
reader.readLine());
assertEquals("error in filtering using filter files", "resource_key_1=this_is_filtered", reader.readLine());
assertEquals("error in filtering using filter files", "resource_key_2=this_is_filtered", reader.readLine());
// house keeping
expectedWebSourceFile.delete();
expectedWebSource2File.delete();
expectedResourceFile.delete();
expectedResourceWDirFile.delete();
}
}