package org.codehaus.mojo.fitnesse.runner; /* * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 2. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Foobar. If not, see <http://www.gnu.org/licenses/>. */ import java.util.ArrayList; import java.util.List; import org.apache.maven.plugin.logging.Log; import org.codehaus.mojo.fitnesse.ClassPathSubstitution; import org.jmock.Mock; import org.jmock.MockObjectTestCase; public class ClassPathBuilderTest extends MockObjectTestCase { public void testTransformPathFull() { Mock tMockLog = mock( Log.class ); tMockLog.stubs().method( "debug" ).withAnyArguments(); Log tLogProxy = (Log) tMockLog.proxy(); String tServerPath = "/etc/udd/m2_repository/org/fitnesse/fitlibrary/20050731/fitlibrary-20050731.jar;" + "/etc/udd/m2_repository/org/fitnesse/fitnesse/20050731/fitnesse-20050731.jar;" + "/etc/udd/m2_repository/com/octo/infra/secu-fitnesse/1.0-SNAPSHOT/secu-fitnesse-1.0-SNAPSHOT.jar;" + "/etc/udd/m2_repository/commons-httpclient/commons-httpclient/3.1-beta1/commons-httpclient-3.1-beta1.jar;" + "/etc/udd/m2_repository/commons-codec/commons-codec/1.2/commons-codec-1.2.jar;" + "/etc/udd/m2_repository/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.jar;" + "/etc/udd/m2_repository/org/apache/maven/plugins/maven-fitnesse-plugin-sample-multiproject-jar1/1.0-SNAPSHOT/maven-fitnesse-plugin-sample-multiproject-jar1-1.0-SNAPSHOT-clover.jar;" + "/etc/udd/m2_repository/org/apache/maven/plugins/maven-fitnesse-plugin-sample-multiproject-jar2/1.0-SNAPSHOT/maven-fitnesse-plugin-sample-multiproject-jar2-1.0-SNAPSHOT-clover.jar;" + "/etc/udd/m2_repository/com/cenqua/clover/clover/1.3.13/clover-1.3.13.jar;fitnesse.jar;fitlibrary.jar"; String tExpectedPath = "D:\\maven\\m2_repository\\org\\fitnesse\\fitlibrary\\20050731\\fitlibrary-20050731.jar;" + "D:\\maven\\m2_repository\\org\\fitnesse\\fitnesse\\20050731\\fitnesse-20050731.jar;" + "D:\\maven\\m2_repository\\com\\octo\\infra\\secu-fitnesse\\1.0-SNAPSHOT\\secu-fitnesse-1.0-SNAPSHOT.jar;" + "D:\\maven\\m2_repository\\commons-httpclient\\commons-httpclient\\3.1-beta1\\commons-httpclient-3.1-beta1.jar;" + "D:\\maven\\m2_repository\\commons-codec\\commons-codec\\1.2\\commons-codec-1.2.jar;" + "D:\\maven\\m2_repository\\commons-logging\\commons-logging\\1.0.3\\commons-logging-1.0.3.jar;" + "D:\\maven\\m2_repository\\org\\apache\\maven\\plugins\\maven-fitnesse-plugin-sample-multiproject-jar1\\1.0-SNAPSHOT\\maven-fitnesse-plugin-sample-multiproject-jar1-1.0-SNAPSHOT-clover.jar;" + "D:\\maven\\m2_repository\\org\\apache\\maven\\plugins\\maven-fitnesse-plugin-sample-multiproject-jar2\\1.0-SNAPSHOT\\maven-fitnesse-plugin-sample-multiproject-jar2-1.0-SNAPSHOT-clover.jar;" + "D:\\maven\\m2_repository\\com\\cenqua\\clover\\clover\\1.3.13\\clover-1.3.13.jar;" + "fitnesse.jar;fitlibrary.jar"; String tExpected2 = "\\etc\\udd\\m2_repository\\org\\fitnesse\\fitlibrary\\20050731\\fitlibrary-20050731.jar;" + "\\etc\\udd\\m2_repository\\org\\fitnesse\\fitnesse\\20050731\\fitnesse-20050731.jar;" + "\\etc\\udd\\m2_repository\\com\\octo\\infra\\secu-fitnesse\\1.0-SNAPSHOT\\secu-fitnesse-1.0-SNAPSHOT.jar;" + "\\etc\\udd\\m2_repository\\commons-httpclient\\commons-httpclient\\3.1-beta1\\commons-httpclient-3.1-beta1.jar;" + "\\etc\\udd\\m2_repository\\commons-codec\\commons-codec\\1.2\\commons-codec-1.2.jar;" + "\\etc\\udd\\m2_repository\\commons-logging\\commons-logging\\1.0.3\\commons-logging-1.0.3.jar;" + "\\etc\\udd\\m2_repository\\org\\apache\\maven\\plugins\\maven-fitnesse-plugin-sample-multiproject-jar1\\1.0-SNAPSHOT\\maven-fitnesse-plugin-sample-multiproject-jar1-1.0-SNAPSHOT-clover.jar;" + "\\etc\\udd\\m2_repository\\org\\apache\\maven\\plugins\\maven-fitnesse-plugin-sample-multiproject-jar2\\1.0-SNAPSHOT\\maven-fitnesse-plugin-sample-multiproject-jar2-1.0-SNAPSHOT-clover.jar;" + "\\etc\\udd\\m2_repository\\com\\cenqua\\clover\\clover\\1.3.13\\clover-1.3.13.jar;fitnesse.jar;fitlibrary.jar"; ClassPathBuilder tBuilder = new ClassPathBuilder( tLogProxy ); List tSubsi = new ArrayList(); tSubsi.add( new ClassPathSubstitution( "/etc/udd/m2_repository", "D:\\maven\\m2_repository" ) ); tSubsi.add( new ClassPathSubstitution( "/", "\\" ) ); assertEquals( tExpectedPath, tBuilder.transformPath( tServerPath, tSubsi ) ); // Order is important tSubsi = new ArrayList(); tSubsi.add( new ClassPathSubstitution( "/", "\\" ) ); tSubsi.add( new ClassPathSubstitution( "/etc/udd/m2_repository", "D:\\maven\\m2_repository" ) ); assertEquals( tExpected2, tBuilder.transformPath( tServerPath, tSubsi ) ); tSubsi = new ArrayList(); tSubsi.add( new ClassPathSubstitution( "/etc/udd/m2_repository", "D:/maven/m2_repository" ) ); tSubsi.add( new ClassPathSubstitution( "/", "\\" ) ); assertEquals( tExpectedPath, tBuilder.transformPath( tServerPath, tSubsi ) ); tSubsi = new ArrayList(); assertEquals( tServerPath, tBuilder.transformPath( tServerPath, tSubsi ) ); } public void testTransformPathWithTrailingSpaceAndWithoutQuoteBis() { Mock tMockLog = mock( Log.class ); tMockLog.stubs().method( "debug" ).withAnyArguments(); Log tLogProxy = (Log) tMockLog.proxy(); String tServerPath = "\"/etc/udd/m2_repository/org/fitnesse/fit library/20050731/fitlibrary-20050731.jar \";" + "\" /etc/udd/m2_repository/org/fitnesse/fitnesse/20050731/fitnesse-20050731.jar\";"; String tExpectedPath = "/etc/udd/m2_repository/org/fitnesse/fit library/20050731/fitlibrary-20050731.jar;" + "/etc/udd/m2_repository/org/fitnesse/fitnesse/20050731/fitnesse-20050731.jar;"; ClassPathBuilder tBuilder = new ClassPathBuilder( tLogProxy ); List tSubsi = new ArrayList(); assertEquals( tExpectedPath, tBuilder.transformPath( tServerPath, tSubsi ) ); } public void testReplaceAll() { String tServerPath = "/etc/udd/m2_repository/org/fitnesse/fitlibrary/20050731/fitlibrary-20050731.jar;"; String tExpectedPath = "\\etc\\udd\\m2_repository\\org\\fitnesse\\fitlibrary\\20050731\\fitlibrary-20050731.jar;"; ClassPathBuilder tBuilder = new ClassPathBuilder(); assertEquals( tExpectedPath, tBuilder.replaceAll( tServerPath, "/", "\\" ) ); tExpectedPath = "/etc/udd/m2_repository/org/fitnesse/fitlibrary/20090731/fitlibrary-20090731.jar;"; assertEquals( tExpectedPath, tBuilder.replaceAll( tServerPath, "20050731", "20090731" ) ); } }