Author: schulte Date: Mon Nov 21 21:28:19 2016 New Revision: 1770766 URL: http://svn.apache.org/viewvc?rev=1770766&view=rev Log: [MSHARED-599] Escaping the escape string produces incorrect output.
o Updated to correctly suppress exceptions when closing resources. o Updated to add tests for MSHARED-599. -- dIESE und die folgenden Zeilen werden ignoriert -- M src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java M src/main/java/org/apache/maven/shared/filtering/PropertyUtils.java M src/test/java/org/apache/maven/shared/filtering/AbstractInterpolatorFilterReaderLineEndingTest.java M src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java M src/test/java/org/apache/maven/shared/filtering/EscapeStringTest.java M src/test/java/org/apache/maven/shared/filtering/IncrementalResourceFilteringTest.java M src/test/java/org/apache/maven/shared/filtering/MuliLinesMavenResourcesFilteringTest.java A src/test/units-files/MRESOURCES-230 AM src/test/units-files/MRESOURCES-230/expected.txt AM src/test/units-files/MRESOURCES-230/resource.txt Added: maven/shared/trunk/maven-filtering/src/test/units-files/MRESOURCES-230/ maven/shared/trunk/maven-filtering/src/test/units-files/MRESOURCES-230/expected.txt (with props) maven/shared/trunk/maven-filtering/src/test/units-files/MRESOURCES-230/resource.txt (with props) Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/PropertyUtils.java maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/AbstractInterpolatorFilterReaderLineEndingTest.java maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/EscapeStringTest.java maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/IncrementalResourceFilteringTest.java maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/MuliLinesMavenResourcesFilteringTest.java Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java?rev=1770766&r1=1770765&r2=1770766&view=diff ============================================================================== --- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java (original) +++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java Mon Nov 21 21:28:19 2016 @@ -145,6 +145,10 @@ public class DefaultMavenFileFilter Reader src = readerFilter.filter( fileReader, true, wrappers ); IOUtil.copy( src, fileWriter ); + fileReader.close(); + fileReader = null; + fileWriter.close(); + fileWriter = null; } finally { Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/PropertyUtils.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/PropertyUtils.java?rev=1770766&r1=1770765&r2=1770766&view=diff ============================================================================== --- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/PropertyUtils.java (original) +++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/PropertyUtils.java Mon Nov 21 21:28:19 2016 @@ -48,7 +48,7 @@ public final class PropertyUtils * The properties are resolved iteratively, so if the value of property A refers to property B, then after * resolution the value of property B will contain the value of property B. * </p> - * + * * @param propFile The property file to load. * @param baseProps Properties containing the initial values to substitute into the properties file. * @return Properties object containing the properties in the file with their values fully resolved. @@ -63,10 +63,13 @@ public final class PropertyUtils } final Properties fileProps = new Properties(); - final FileInputStream inStream = new FileInputStream( propFile ); + FileInputStream inStream = null; try { + inStream = new FileInputStream( propFile ); fileProps.load( inStream ); + inStream.close(); + inStream = null; } finally { Modified: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/AbstractInterpolatorFilterReaderLineEndingTest.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/AbstractInterpolatorFilterReaderLineEndingTest.java?rev=1770766&r1=1770765&r2=1770766&view=diff ============================================================================== --- maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/AbstractInterpolatorFilterReaderLineEndingTest.java (original) +++ maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/AbstractInterpolatorFilterReaderLineEndingTest.java Mon Nov 21 21:28:19 2016 @@ -77,6 +77,14 @@ public abstract class AbstractInterpolat reader = getDollarBracesReader( in, interpolator, "\\" ); assertEquals( "escape dollar with expression ${a}", IOUtil.toString( reader ) ); + in = new StringReader( "escape escape string before expression \\\\${a}" ); + reader = getDollarBracesReader( in, interpolator, "\\" ); + assertEquals( "escape escape string before expression \\DONE_A", IOUtil.toString( reader ) ); + + in = new StringReader( "escape escape string and expression \\\\\\${a}" ); + reader = getDollarBracesReader( in, interpolator, "\\" ); + assertEquals( "escape escape string before expression \\${a}", IOUtil.toString( reader ) ); + in = new StringReader( "unknown expression ${unknown}" ); reader = getDollarBracesReader( in, interpolator, "\\" ); assertEquals( "unknown expression ${unknown}", IOUtil.toString( reader ) ); Modified: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java?rev=1770766&r1=1770765&r2=1770766&view=diff ============================================================================== --- maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java (original) +++ maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java Mon Nov 21 21:28:19 2016 @@ -141,6 +141,8 @@ public class DefaultMavenResourcesFilter { in = new FileInputStream( new File( outputDirectory, "session-filter-target.txt" ) ); result.load( in ); + in.close(); + in = null; } finally { @@ -241,6 +243,8 @@ public class DefaultMavenResourcesFilter { in = new FileInputStream( new File( outputDirectory, "empty-maven-resources-filtering.txt" ) ); result.load( in ); + in.close(); + in = null; } finally { @@ -255,6 +259,8 @@ public class DefaultMavenResourcesFilter { in = new FileInputStream( new File( outputDirectory, "maven-resources-filtering.txt" ) ); result.load( in ); + in.close(); + in = null; } finally { @@ -424,6 +430,12 @@ public class DefaultMavenResourcesFilter return false; } } + + expectedIn.close(); + expectedIn = null; + + currentIn.close(); + currentIn = null; } finally { @@ -857,6 +869,47 @@ public class DefaultMavenResourcesFilter } /** + * unit test for MRESOURCES-230 : https://issues.apache.org/jira/browse/MRESOURCES-230 + */ + public void testCorrectlyEscapesEscapeString() + throws Exception + { + StubMavenProject mavenProject = new StubMavenProject( new File( "/foo/bar" ) ); + + mavenProject.setVersion( "1.0" ); + mavenProject.addProperty( "a", "DONE_A" ); + + MavenResourcesFiltering mavenResourcesFiltering = lookup( MavenResourcesFiltering.class ); + + List<Resource> resources = new ArrayList<Resource>(); + resources.add( new Resource() + { + + { + setDirectory( getBasedir() + "/src/test/units-files/MRESOURCES-230" ); + setFiltering( true ); + } + + } ); + resources.get( 0 ).addExclude( "expected.txt" ); + + File output = new File( outputDirectory, "MRESOURCES-230" ); + MavenResourcesExecution mavenResourcesExecution = + new MavenResourcesExecution( resources, output, mavenProject, "UTF-8", Collections.<String>emptyList(), + Collections.<String>emptyList(), new StubMavenSession() ); + mavenResourcesExecution.setIncludeEmptyDirs( true ); + mavenResourcesExecution.setEscapeString( "\\" ); + + mavenResourcesFiltering.filterResources( mavenResourcesExecution ); + + final String filtered = FileUtils.fileRead( new File( output, "resource.txt" ), "UTF-8" ); + final String expected = + FileUtils.fileRead( new File( getBasedir() + "/src/test/units-files/MRESOURCES-230/expected.txt" ) ); + + assertEquals( expected, filtered ); + } + + /** * unit test for edge cases : https://issues.apache.org/jira/browse/MSHARED-228 */ @SuppressWarnings( "serial" ) Modified: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/EscapeStringTest.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/EscapeStringTest.java?rev=1770766&r1=1770765&r2=1770766&view=diff ============================================================================== --- maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/EscapeStringTest.java (original) +++ maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/EscapeStringTest.java Mon Nov 21 21:28:19 2016 @@ -91,8 +91,10 @@ public class EscapeStringTest FileInputStream in = null; try { - String content = IOUtil.toString( new FileInputStream( new File( outputDirectory, "content.xml" ) ) ); - + in = new FileInputStream( new File( outputDirectory, "content.xml" ) ); + String content = IOUtil.toString( in ); + in.close(); + in = null; assertTrue( content.contains( "<broken-tag>Content with replacement: I am the replacement !</broken-tag>" ) ); assertTrue( content.contains( "<broken-tag>Content with escaped replacement: Do not ${replaceThis} !</broken-tag>" ) ); } Modified: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/IncrementalResourceFilteringTest.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/IncrementalResourceFilteringTest.java?rev=1770766&r1=1770765&r2=1770766&view=diff ============================================================================== --- maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/IncrementalResourceFilteringTest.java (original) +++ maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/IncrementalResourceFilteringTest.java Mon Nov 21 21:28:19 2016 @@ -161,10 +161,13 @@ public class IncrementalResourceFilterin { Properties properties = new Properties(); - InputStream is = new FileInputStream( new File( outputDirectory, relpath ) ); + InputStream is = null; try { + is = new FileInputStream( new File( outputDirectory, relpath ) ); properties.load( is ); + is.close(); + is = null; } finally { Modified: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/MuliLinesMavenResourcesFilteringTest.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/MuliLinesMavenResourcesFilteringTest.java?rev=1770766&r1=1770765&r2=1770766&view=diff ============================================================================== --- maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/MuliLinesMavenResourcesFilteringTest.java (original) +++ maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/MuliLinesMavenResourcesFilteringTest.java Mon Nov 21 21:28:19 2016 @@ -96,6 +96,8 @@ public class MuliLinesMavenResourcesFilt { in = new FileInputStream( new File( outputDirectory, "test.properties" ) ); result.load( in ); + in.close(); + in = null; } finally { Added: maven/shared/trunk/maven-filtering/src/test/units-files/MRESOURCES-230/expected.txt URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/units-files/MRESOURCES-230/expected.txt?rev=1770766&view=auto ============================================================================== --- maven/shared/trunk/maven-filtering/src/test/units-files/MRESOURCES-230/expected.txt (added) +++ maven/shared/trunk/maven-filtering/src/test/units-files/MRESOURCES-230/expected.txt Mon Nov 21 21:28:19 2016 @@ -0,0 +1,22 @@ +# 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. + +\ +\\ +\\\ +\\\DONE_A +\\\${a} Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/MRESOURCES-230/expected.txt ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/MRESOURCES-230/expected.txt ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: maven/shared/trunk/maven-filtering/src/test/units-files/MRESOURCES-230/resource.txt URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/units-files/MRESOURCES-230/resource.txt?rev=1770766&view=auto ============================================================================== --- maven/shared/trunk/maven-filtering/src/test/units-files/MRESOURCES-230/resource.txt (added) +++ maven/shared/trunk/maven-filtering/src/test/units-files/MRESOURCES-230/resource.txt Mon Nov 21 21:28:19 2016 @@ -0,0 +1,22 @@ +# 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. + +\\ +\\\\ +\\\\\\ +\\\\\\${a} +\\\\\\\${a} Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/MRESOURCES-230/resource.txt ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/shared/trunk/maven-filtering/src/test/units-files/MRESOURCES-230/resource.txt ------------------------------------------------------------------------------ svn:mime-type = text/plain