diff --git a/maven-scm-providers/maven-scm-provider-local/src/test/java/org/apache/maven/scm/provider/local/command/update/LocalUpdateCommandTckTest.java b/maven-scm-providers/maven-scm-provider-local/src/test/java/org/apache/maven/scm/provider/local/command/update/LocalUpdateCommandTckTest.java
index 722809c..8535382 100644
--- a/maven-scm-providers/maven-scm-provider-local/src/test/java/org/apache/maven/scm/provider/local/command/update/LocalUpdateCommandTckTest.java
+++ b/maven-scm-providers/maven-scm-provider-local/src/test/java/org/apache/maven/scm/provider/local/command/update/LocalUpdateCommandTckTest.java
@@ -115,7 +115,6 @@
 
         // readme.txt
         ScmFile file = (ScmFile) files.next();
-        assertPath( "/readme.txt", file.getPath() );
         assertTrue( file.getStatus().isUpdate() );
 
         // ----------------------------------------------------------------------
diff --git a/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvstest/src/main/java/org/apache/maven/scm/provider/cvslib/command/checkout/CvsCheckoutCommandTest.java b/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvstest/src/main/java/org/apache/maven/scm/provider/cvslib/command/checkout/CvsCheckoutCommandTest.java
index 76c15a8..211b6ce 100644
--- a/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvstest/src/main/java/org/apache/maven/scm/provider/cvslib/command/checkout/CvsCheckoutCommandTest.java
+++ b/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvstest/src/main/java/org/apache/maven/scm/provider/cvslib/command/checkout/CvsCheckoutCommandTest.java
@@ -128,8 +128,6 @@
 
         assertSame( status, coFile.getStatus() );
 
-        assertPath( fileName, coFile.getPath() );
-
         return file;
     }
 }
diff --git a/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvstest/src/main/java/org/apache/maven/scm/provider/cvslib/command/update/CvsUpdateCommandTest.java b/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvstest/src/main/java/org/apache/maven/scm/provider/cvslib/command/update/CvsUpdateCommandTest.java
index 976ab10..2e9fb2b 100644
--- a/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvstest/src/main/java/org/apache/maven/scm/provider/cvslib/command/update/CvsUpdateCommandTest.java
+++ b/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvstest/src/main/java/org/apache/maven/scm/provider/cvslib/command/update/CvsUpdateCommandTest.java
@@ -182,14 +182,10 @@
 
             ScmFile file1 = result.getUpdatedFiles().get( 0 );
 
-            assertPath( "Foo.java", file1.getPath() );
-
             assertEquals( ScmFileStatus.UPDATED, file1.getStatus() );
 
             ScmFile file2 = result.getUpdatedFiles().get( 1 );
 
-            assertPath( "New.txt", file2.getPath() );
-
             assertEquals( ScmFileStatus.UPDATED, file2.getStatus() );
         }
         finally
diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java b/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java
index f43d82a..b0658ae 100644
--- a/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java
+++ b/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java
@@ -169,16 +169,6 @@
         return getScmManager().makeScmRepository( scmUrl );
     }
 
-    /**
-     * TODO This method is bogus. ActualPatch is not used and if used, it breaks
-     * some unit tests.
-     */
-    public void assertPath( String expectedPath, String actualPath )
-        throws Exception
-    {
-        assertEquals( StringUtils.replace( expectedPath, "\\", "/" ), StringUtils.replace( expectedPath, "\\", "/" ) );
-    }
-
     protected void assertFile( File root, String fileName )
         throws Exception
     {
diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/checkin/CheckInCommandTckTest.java b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/checkin/CheckInCommandTckTest.java
index da7fd4b..e06d4d9 100644
--- a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/checkin/CheckInCommandTckTest.java
+++ b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/checkin/CheckInCommandTckTest.java
@@ -158,8 +158,6 @@
 
         assertEquals( ScmFileStatus.CHECKED_IN, file1.getStatus() );
 
-        assertPath( "/test-repo/check-in/Foo.java", file1.getPath() );
-
         CheckOutScmResult checkoutResult =
             getScmManager().checkOut( getScmRepository(), new ScmFileSet( getAssertionCopy() ) );
 
diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/diff/DiffCommandTckTest.java b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/diff/DiffCommandTckTest.java
index f2e9377..d2f9b85 100644
--- a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/diff/DiffCommandTckTest.java
+++ b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/diff/DiffCommandTckTest.java
@@ -112,8 +112,6 @@
         //Check Foo.java
         ScmFile file = files.next();
 
-        assertPath( "/src/main/java/org/Foo.java", file.getPath() );
-
         assertTrue( file.getStatus().isDiff() );
 
         String postRangeStr = "+/src/main/java/org/Foo.java\n\\ No newline at end of file\n";
@@ -123,8 +121,6 @@
         //Check readme.txt
         file = files.next();
 
-        assertPath( "/readme.txt", file.getPath() );
-
         assertTrue( file.getStatus().isDiff() );
 
         postRangeStr =
@@ -135,8 +131,6 @@
         //Check project.xml
         file = files.next();
 
-        assertPath( "/project.xml", file.getPath() );
-
         postRangeStr = "+changed project.xml\n\\ No newline at end of file\n";
         actualStr = differences.get( file.getPath() ).toString();
         assertTrue( actualStr.endsWith( postRangeStr ) );
diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/status/StatusCommandTckTest.java b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/status/StatusCommandTckTest.java
index 642bdf4..01dc79f 100644
--- a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/status/StatusCommandTckTest.java
+++ b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/status/StatusCommandTckTest.java
@@ -151,11 +151,9 @@
         Iterator<ScmFile> files = new TreeSet<ScmFile>( changedFiles ).iterator();
 
         ScmFile file = files.next();
-        assertPath( "/src/main/java/org/Foo.java", file.getPath() );
         assertEquals( ScmFileStatus.ADDED, file.getStatus() );
 
         file = files.next();
-        assertPath( "/pom.xml", file.getPath() );
         assertEquals( ScmFileStatus.MODIFIED, file.getStatus() );
 
         assertFile( getUpdatingCopy(), "/readme.txt" );
diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/update/UpdateCommandTckTest.java b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/update/UpdateCommandTckTest.java
index 88a1718..6d2febb 100644
--- a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/update/UpdateCommandTckTest.java
+++ b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/update/UpdateCommandTckTest.java
@@ -165,18 +165,17 @@
 
         //Foo.java
         ScmFile file = files.next();
-        assertPath( "/src/main/java/org/Foo.java", file.getPath() );
+        
         //TODO : Consolidate file status so that we can remove "|| ADDED" term
         assertTrue( file.getStatus().isUpdate() || file.getStatus() == ScmFileStatus.ADDED );
 
         //readme.txt
         file = files.next();
-        assertPath( "/readme.txt", file.getPath() );
         assertTrue( file.getStatus().isUpdate() );
 
         //project.xml
         file = files.next();
-        assertPath( "/project.xml", file.getPath() );
+        
         //TODO : Consolidate file status so that we can remove "|| ADDED" term
         assertTrue( file.getStatus().isUpdate() || file.getStatus() == ScmFileStatus.ADDED );
     }
