| package org.apache.maven.plugin.assembly.utils; |
| |
| /* |
| * 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 static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertNull; |
| |
| import java.io.File; |
| import java.io.FileReader; |
| import java.io.FileWriter; |
| import java.io.IOException; |
| import java.io.StringReader; |
| import java.io.StringWriter; |
| |
| import org.apache.maven.plugin.assembly.format.AssemblyFormattingException; |
| import org.codehaus.plexus.util.IOUtil; |
| import org.junit.Test; |
| |
| public class LineEndingsUtilsTest |
| { |
| |
| private static final String CRLF = "\r\n"; |
| |
| private static final String LF = "\n"; |
| |
| @Test |
| public void shouldWorkCauseWeTestJdkEnumConversion() |
| { |
| LineEndings lineEnding = LineEndings.valueOf( "windows" ); |
| assertEquals( CRLF, lineEnding.getLineEndingCharacters() ); |
| } |
| |
| @Test |
| public void shouldReturnDosLineEnding() |
| { |
| assertEquals( CRLF, LineEndings.windows.getLineEndingCharacters() ); |
| assertEquals( CRLF, LineEndings.dos.getLineEndingCharacters() ); |
| assertEquals( CRLF, LineEndings.crlf.getLineEndingCharacters() ); |
| } |
| |
| @Test |
| public void shouldReturnUnixLineEnding() |
| { |
| assertEquals( LF, LineEndings.unix.getLineEndingCharacters() ); |
| assertEquals( LF, LineEndings.lf.getLineEndingCharacters() ); |
| } |
| |
| @Test |
| public void shouldReturnNullAsLineEndingForKeep() |
| { |
| assertEquals( null, LineEndings.keep.getLineEndingCharacters() ); |
| } |
| |
| @Test |
| public void testGetLineEndingChars_ShouldReturnDosLineEnding() |
| throws AssemblyFormattingException |
| { |
| assertEquals( "\r\n", LineEndingsUtils.getLineEndingCharacters( "windows" ) ); |
| assertEquals( "\r\n", LineEndingsUtils.getLineEndingCharacters( "dos" ) ); |
| assertEquals( "\r\n", LineEndingsUtils.getLineEndingCharacters( "crlf" ) ); |
| } |
| |
| @Test |
| public void testGetLineEndingChars_ShouldReturnUnixLineEnding() |
| throws AssemblyFormattingException |
| { |
| assertEquals( "\n", LineEndingsUtils.getLineEndingCharacters( "unix" ) ); |
| assertEquals( "\n", LineEndingsUtils.getLineEndingCharacters( "lf" ) ); |
| } |
| |
| @Test |
| public void testGetLineEndingChars_ShouldReturnNullLineEnding() |
| throws AssemblyFormattingException |
| { |
| assertNull( LineEndingsUtils.getLineEndingCharacters( "keep" ) ); |
| } |
| |
| @Test( expected = AssemblyFormattingException.class ) |
| public void testGetLineEndingChars_ShouldThrowFormattingExceptionWithInvalidHint() |
| throws AssemblyFormattingException |
| { |
| LineEndingsUtils.getLineEndingCharacters( "invalid" ); |
| } |
| |
| @Test |
| public void testConvertLineEndings_ShouldReplaceLFWithCRLF() |
| throws IOException |
| { |
| String test = "This is a \ntest."; |
| String check = "This is a \r\ntest."; |
| |
| testConversion( test, check, LineEndings.crlf, null ); |
| } |
| |
| @Test |
| public void testConvertLineEndings_ShouldReplaceLFWithCRLFAtEOF() |
| throws IOException |
| { |
| String test = "This is a \ntest.\n"; |
| String check = "This is a \r\ntest.\r\n"; |
| |
| testConversion( test, check, LineEndings.crlf, null ); |
| } |
| |
| @Test |
| public void testConvertLineEndings_ShouldReplaceCRLFWithLF() |
| throws IOException |
| { |
| String test = "This is a \r\ntest."; |
| String check = "This is a \ntest."; |
| |
| testConversion( test, check, LineEndings.lf, null ); |
| } |
| |
| @Test |
| public void testConvertLineEndings_ShouldReplaceCRLFWithLFAtEOF() |
| throws IOException |
| { |
| String test = "This is a \r\ntest.\r\n"; |
| String check = "This is a \ntest.\n"; |
| |
| testConversion( test, check, LineEndings.lf, null ); |
| } |
| |
| @Test |
| public void testConvertLineEndings_ShouldReplaceLFWithLF() |
| throws IOException |
| { |
| String test = "This is a \ntest."; |
| String check = "This is a \ntest."; |
| |
| testConversion( test, check, LineEndings.lf, null ); |
| } |
| |
| @Test |
| public void testConvertLineEndings_ShouldReplaceLFWithLFAtEOF() |
| throws IOException |
| { |
| String test = "This is a \ntest.\n"; |
| String check = "This is a \ntest.\n"; |
| |
| testConversion( test, check, LineEndings.lf, null ); |
| } |
| |
| @Test |
| public void testConvertLineEndings_ShouldReplaceCRLFWithCRLF() |
| throws IOException |
| { |
| String test = "This is a \r\ntest."; |
| String check = "This is a \r\ntest."; |
| |
| testConversion( test, check, LineEndings.crlf, null ); |
| } |
| |
| @Test |
| public void testConvertLineEndings_ShouldReplaceCRLFWithCRLFAtEOF() |
| throws IOException |
| { |
| String test = "This is a \r\ntest.\r\n"; |
| String check = "This is a \r\ntest.\r\n"; |
| |
| testConversion( test, check, LineEndings.crlf, null ); |
| } |
| |
| @Test |
| public void testConvertLineEndings_LFToCRLFNoEOFForceEOF() |
| throws IOException |
| { |
| String test = "This is a \ntest."; |
| String check = "This is a \r\ntest.\r\n"; |
| |
| testConversion( test, check, LineEndings.crlf, true ); |
| } |
| |
| @Test |
| public void testConvertLineEndings_LFToCRLFWithEOFForceEOF() |
| throws IOException |
| { |
| String test = "This is a \ntest.\n"; |
| String check = "This is a \r\ntest.\r\n"; |
| |
| testConversion( test, check, LineEndings.crlf, true ); |
| } |
| |
| @Test |
| public void testConvertLineEndings_LFToCRLFNoEOFStripEOF() |
| throws IOException |
| { |
| String test = "This is a \ntest."; |
| String check = "This is a \r\ntest."; |
| |
| testConversion( test, check, LineEndings.crlf, false ); |
| } |
| |
| @Test |
| public void testConvertLineEndings_LFToCRLFWithEOFStripEOF() |
| throws IOException |
| { |
| String test = "This is a \ntest.\n"; |
| String check = "This is a \r\ntest."; |
| |
| testConversion( test, check, LineEndings.crlf, false ); |
| } |
| |
| @Test |
| public void testConvertLineEndings_CRLFToLFNoEOFForceEOF() |
| throws IOException |
| { |
| String test = "This is a \r\ntest."; |
| String check = "This is a \ntest.\n"; |
| |
| testConversion( test, check, LineEndings.lf, true ); |
| } |
| |
| @Test |
| public void testConvertLineEndings_CRLFToLFWithEOFForceEOF() |
| throws IOException |
| { |
| String test = "This is a \r\ntest.\r\n"; |
| String check = "This is a \ntest.\n"; |
| |
| testConversion( test, check, LineEndings.lf, true ); |
| } |
| |
| @Test |
| public void testConvertLineEndings_CRLFToLFNoEOFStripEOF() |
| throws IOException |
| { |
| String test = "This is a \r\ntest."; |
| String check = "This is a \ntest."; |
| |
| testConversion( test, check, LineEndings.lf, false ); |
| } |
| |
| @Test |
| public void testConvertLineEndings_CRLFToLFWithEOFStripEOF() |
| throws IOException |
| { |
| String test = "This is a \r\ntest.\r\n"; |
| String check = "This is a \ntest."; |
| |
| testConversion( test, check, LineEndings.lf, false ); |
| } |
| |
| private void testConversion( String test, String check, LineEndings lineEndingChars, Boolean eof ) |
| throws IOException |
| { |
| File source = File.createTempFile( "line-conversion-test-in.", "" ); |
| source.deleteOnExit(); |
| File dest = File.createTempFile( "line-conversion-test-out.", "" ); |
| dest.deleteOnExit(); |
| |
| FileWriter sourceWriter = null; |
| StringReader sourceReader = new StringReader( test ); |
| try |
| { |
| sourceWriter = new FileWriter( source ); |
| |
| IOUtil.copy( sourceReader, sourceWriter ); |
| } |
| finally |
| { |
| IOUtil.close( sourceWriter ); |
| } |
| |
| // Using platform encoding for the conversion tests in this class is OK |
| LineEndingsUtils.convertLineEndings( source, dest, lineEndingChars, eof, null ); |
| |
| FileReader destReader = null; |
| StringWriter destWriter = new StringWriter(); |
| try |
| { |
| destReader = new FileReader( dest ); |
| |
| IOUtil.copy( destReader, destWriter ); |
| } |
| finally |
| { |
| IOUtil.close( destReader ); |
| } |
| |
| assertEquals( check, destWriter.toString() ); |
| } |
| |
| } |