Repository: maven-scm Updated Branches: refs/heads/master ce82bd066 -> a72a7cb46
[SCM-755] Inject SecDispatcher into TCK base test case so that individual provider TCK can use it [SCM-756] Adjust base command tests to set all to be changed test files to use edit mode for provider like Perforce/Starteam [SCM-754] Dont check for number of file list return from Tag/Branch Command test Project: http://git-wip-us.apache.org/repos/asf/maven-scm/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-scm/commit/a72a7cb4 Tree: http://git-wip-us.apache.org/repos/asf/maven-scm/tree/a72a7cb4 Diff: http://git-wip-us.apache.org/repos/asf/maven-scm/diff/a72a7cb4 Branch: refs/heads/master Commit: a72a7cb46226266704994b5d9a57a0ab64259db8 Parents: ce82bd0 Author: dantran <dant...@gmail.com> Authored: Fri Jun 20 14:17:32 2014 -0700 Committer: dantran <dant...@gmail.com> Committed: Fri Jun 20 14:17:32 2014 -0700 ---------------------------------------------------------------------- maven-scm-test/pom.xml | 8 ++++++ .../org/apache/maven/scm/ScmTckTestCase.java | 13 +++++++++ .../java/org/apache/maven/scm/ScmTestCase.java | 21 ++++++++++++++ .../tck/command/blame/BlameCommandTckTest.java | 1 + .../command/branch/BranchCommandTckTest.java | 11 ++++++-- .../changelog/ChangeLogCommandTckTest.java | 12 ++++++-- .../command/status/StatusCommandTckTest.java | 6 ++++ .../scm/tck/command/tag/TagCommandTckTest.java | 4 ++- .../command/update/UpdateCommandTckTest.java | 29 ++++++++++---------- 9 files changed, 85 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-scm/blob/a72a7cb4/maven-scm-test/pom.xml ---------------------------------------------------------------------- diff --git a/maven-scm-test/pom.xml b/maven-scm-test/pom.xml index 36aa0e5..a3ca1a3 100644 --- a/maven-scm-test/pom.xml +++ b/maven-scm-test/pom.xml @@ -42,5 +42,13 @@ <groupId>org.apache.maven.scm</groupId> <artifactId>maven-scm-manager-plexus</artifactId> </dependency> + + <dependency> + <groupId>org.sonatype.plexus</groupId> + <artifactId>plexus-sec-dispatcher</artifactId> + <version>1.3</version> + + </dependency> + </dependencies> </project> http://git-wip-us.apache.org/repos/asf/maven-scm/blob/a72a7cb4/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTckTestCase.java ---------------------------------------------------------------------- diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTckTestCase.java b/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTckTestCase.java index 703d0f0..89471ac 100644 --- a/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTckTestCase.java +++ b/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTckTestCase.java @@ -29,6 +29,7 @@ import java.util.TreeMap; import org.apache.maven.scm.command.add.AddScmResult; import org.apache.maven.scm.command.checkin.CheckInScmResult; import org.apache.maven.scm.command.checkout.CheckOutScmResult; +import org.apache.maven.scm.command.edit.EditScmResult; import org.apache.maven.scm.provider.ScmProvider; import org.apache.maven.scm.repository.ScmRepository; import org.codehaus.plexus.util.StringUtils; @@ -242,4 +243,16 @@ public abstract class ScmTckTestCase return mappedFiles; } + + protected EditScmResult edit( File basedir, String includes, String excludes, ScmRepository repository ) + throws Exception + { + if ( this.getScmManager().getProviderByRepository( this.getScmRepository() ).requiresEditMode() ) + { + ScmFileSet fileSet = new ScmFileSet( basedir, includes, excludes ); + return getScmManager().edit( getScmRepository(), fileSet ); + } + return new EditScmResult( "", "", "", true ); + } + } http://git-wip-us.apache.org/repos/asf/maven-scm/blob/a72a7cb4/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java ---------------------------------------------------------------------- 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 c4b148f..b83cd82 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 @@ -28,6 +28,7 @@ import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.cli.CommandLineUtils; import org.codehaus.plexus.util.cli.CommandLineUtils.StringStreamConsumer; import org.codehaus.plexus.util.cli.Commandline; +import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher; import java.io.File; import java.io.FileWriter; @@ -55,6 +56,8 @@ public abstract class ScmTestCase private ScmManager scmManager; + private SecDispatcher secDispatcher; + protected void setUp() throws Exception { @@ -142,6 +145,24 @@ public abstract class ScmTestCase return scmManager; } + /** + * If you wish to use this component, makesure to configure your + * TCK implementation to include plexus component configuration + * as doc at https://jira.codehaus.org/browse/MNG-4384 + * @return SecDispatcher + * @throws Exception + */ + public SecDispatcher getSecDispatcher() + throws Exception + { + if ( secDispatcher == null ) + { + secDispatcher = (SecDispatcher) lookup( SecDispatcher.ROLE, "mng-4384" ); + } + + return secDispatcher; + } + protected ScmRepository makeScmRepository( String scmUrl ) throws Exception { http://git-wip-us.apache.org/repos/asf/maven-scm/blob/a72a7cb4/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/blame/BlameCommandTckTest.java ---------------------------------------------------------------------- diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/blame/BlameCommandTckTest.java b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/blame/BlameCommandTckTest.java index 71f0423..e5cba29 100644 --- a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/blame/BlameCommandTckTest.java +++ b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/blame/BlameCommandTckTest.java @@ -67,6 +67,7 @@ public abstract class BlameCommandTckTest // pause a couple seconds... Thread.sleep( 2000 ); //Make a change to the readme.txt and commit the change + this.edit( getWorkingCopy(), "readme.txt", null, getScmRepository() ); ScmTestCase.makeFile( getWorkingCopy(), "/readme.txt", "changed readme.txt" ); CheckInScmResult checkInResult = provider.checkIn( getScmRepository(), fileSet, COMMIT_MSG ); assertTrue( "Unable to checkin changes to the repository", checkInResult.isSuccess() ); http://git-wip-us.apache.org/repos/asf/maven-scm/blob/a72a7cb4/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/branch/BranchCommandTckTest.java ---------------------------------------------------------------------- diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/branch/BranchCommandTckTest.java b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/branch/BranchCommandTckTest.java index 72c202a..62e657b 100644 --- a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/branch/BranchCommandTckTest.java +++ b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/branch/BranchCommandTckTest.java @@ -41,10 +41,15 @@ public abstract class BranchCommandTckTest extends ScmTckTestCase { + protected String getBranch() + { + return "test-branch"; + } + public void testBranchCommandTest() throws Exception { - String branch = "test-branch"; + String branch = getBranch(); @SuppressWarnings( "deprecation" ) BranchScmResult branchResult = getScmManager().getProviderByUrl( getScmUrl() ).branch( getScmRepository(), @@ -52,12 +57,14 @@ public abstract class BranchCommandTckTest assertResultIsSuccess( branchResult ); - assertEquals( "check all 4 files branched", 4, branchResult.getBranchedFiles().size() ); + // see https://jira.codehaus.org/browse/SCM-754 + //assertEquals( "check all 4 files branched", 4, branchResult.getBranchedFiles().size() ); File readmeTxt = new File( getWorkingCopy(), "readme.txt" ); assertEquals( "check readme.txt contents", "/readme.txt", FileUtils.fileRead( readmeTxt ) ); + this.edit( getWorkingCopy(), "readme.txt", null, getScmRepository() ); changeReadmeTxt( readmeTxt ); CheckInScmResult checkinResult = http://git-wip-us.apache.org/repos/asf/maven-scm/blob/a72a7cb4/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/changelog/ChangeLogCommandTckTest.java ---------------------------------------------------------------------- diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/changelog/ChangeLogCommandTckTest.java b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/changelog/ChangeLogCommandTckTest.java index 1242c9c..f1a843d 100644 --- a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/changelog/ChangeLogCommandTckTest.java +++ b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/changelog/ChangeLogCommandTckTest.java @@ -53,12 +53,15 @@ public abstract class ChangeLogCommandTckTest ScmProvider provider = getScmManager().getProviderByRepository( getScmRepository() ); ScmFileSet fileSet = new ScmFileSet( getWorkingCopy() ); - //We should have one log entry for the initial repository ChangeLogScmResult firstResult = provider.changeLog( getScmRepository(), fileSet, null, null, 0, (ScmBranch) null, null ); assertTrue( firstResult.getProviderMessage() + ": " + firstResult.getCommandLine() + "\n" + firstResult.getCommandOutput(), firstResult.isSuccess() ); - assertEquals( 1, firstResult.getChangeLog().getChangeSets().size() ); + + //for svn, cvs, git, the repo get recreated for each test and therefore initial changelog size is 1 + // for SCM like perforce, it is not possible to recreate the repo, therefor the size will be greater then 1 + int firstLogSize = firstResult.getChangeLog().getChangeSets().size(); + assertTrue( "Unexpected initial log size", firstLogSize >= 1 ); //Make a timestamp that we know are after initial revision but before the second Date timeBeforeSecond = new Date(); //Current time @@ -67,13 +70,14 @@ public abstract class ChangeLogCommandTckTest Thread.sleep( 2000 ); //Make a change to the readme.txt and commit the change + this.edit( getWorkingCopy(), "readme.txt", null, getScmRepository() ); ScmTestCase.makeFile( getWorkingCopy(), "/readme.txt", "changed readme.txt" ); CheckInScmResult checkInResult = provider.checkIn( getScmRepository(), fileSet, COMMIT_MSG ); assertTrue( "Unable to checkin changes to the repository", checkInResult.isSuccess() ); ChangeLogScmResult secondResult = provider.changeLog( getScmRepository(), fileSet, (ScmVersion) null, null ); assertTrue( secondResult.getProviderMessage(), secondResult.isSuccess() ); - assertEquals( 2, secondResult.getChangeLog().getChangeSets().size() ); + assertEquals( firstLogSize + 1, secondResult.getChangeLog().getChangeSets().size() ); //Now only retrieve the changelog after timeBeforeSecondChangeLog Date currentTime = new Date(); @@ -85,6 +89,8 @@ public abstract class ChangeLogCommandTckTest assertEquals( 1, thirdResult.getChangeLog().getChangeSets().size() ); ChangeSet changeset = thirdResult.getChangeLog().getChangeSets().get( 0 ); assertTrue( changeset.getDate().after( timeBeforeSecond ) ); + + assertEquals( COMMIT_MSG, changeset.getComment() ); } } http://git-wip-us.apache.org/repos/asf/maven-scm/blob/a72a7cb4/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/status/StatusCommandTckTest.java ---------------------------------------------------------------------- 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 8c822d2..71ba0e3 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 @@ -86,6 +86,7 @@ public abstract class StatusCommandTckTest */ // /readme.txt + this.edit( getWorkingCopy(), "readme.txt", null, getScmRepository() ); ScmTestCase.makeFile( getWorkingCopy(), "/readme.txt", "changed readme.txt" ); // /project.xml @@ -96,6 +97,7 @@ public abstract class StatusCommandTckTest commit( getWorkingCopy(), repository ); // /pom.xml + this.edit( getUpdatingCopy(), "pom.xml", null, repository ); ScmTestCase.makeFile( getUpdatingCopy(), "/pom.xml", "changed pom.xml" ); // /src/test/java/org @@ -123,6 +125,10 @@ public abstract class StatusCommandTckTest StatusScmResult result = scmManager.getProviderByUrl( getScmUrl() ) .status( repository, new ScmFileSet( getUpdatingCopy() ) ); + //this is needed for perforce so that teardown can remove its workspace, not harm for cvs/svn/git + commit( getUpdatingCopy(), repository ); + + assertNotNull( "The command returned a null result.", result ); assertResultIsSuccess( result ); http://git-wip-us.apache.org/repos/asf/maven-scm/blob/a72a7cb4/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/tag/TagCommandTckTest.java ---------------------------------------------------------------------- diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/tag/TagCommandTckTest.java b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/tag/TagCommandTckTest.java index 332083b..296d676 100644 --- a/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/tag/TagCommandTckTest.java +++ b/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/tag/TagCommandTckTest.java @@ -52,12 +52,14 @@ public abstract class TagCommandTckTest assertResultIsSuccess( tagResult ); - assertEquals( "check all 4 files tagged", 4, tagResult.getTaggedFiles().size() ); + // see https://jira.codehaus.org/browse/SCM-754 + // assertEquals( "check all 4 files tagged", 4, tagResult.getTaggedFiles().size() ); File readmeTxt = new File( getWorkingCopy(), "readme.txt" ); assertEquals( "check readme.txt contents", "/readme.txt", FileUtils.fileRead( readmeTxt ) ); + this.edit( getWorkingCopy(), "readme.txt", null, getScmRepository() ); changeReadmeTxt( readmeTxt ); CheckInScmResult checkinResult = http://git-wip-us.apache.org/repos/asf/maven-scm/blob/a72a7cb4/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/update/UpdateCommandTckTest.java ---------------------------------------------------------------------- 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 cc1c7bc..88a1718 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 @@ -76,15 +76,15 @@ public abstract class UpdateCommandTckTest public void testUpdateCommand() throws Exception { - + deleteDirectory( getUpdatingCopy() ); - - assertFalse( getUpdatingCopy().exists() ); - + + assertFalse( getUpdatingCopy().exists() ); + //deleteDirectory( getWorkingCopy() ); - + //assertFalse( getUpdatingCopy().exists() ); - + ScmRepository repository = makeScmRepository( getScmUrl() ); checkOut( getUpdatingCopy(), repository ); @@ -103,38 +103,39 @@ public abstract class UpdateCommandTckTest */ // /readme.txt + this.edit( getWorkingCopy(), "readme.txt", null, getScmRepository() ); ScmTestCase.makeFile( getWorkingCopy(), "/readme.txt", "changed readme.txt" ); // /project.xml ScmTestCase.makeFile( getWorkingCopy(), "/project.xml", "changed project.xml" ); - addToWorkingTree( getWorkingCopy(), new File( "project.xml" ), repository ); + addToWorkingTree( getWorkingCopy(), new File( "project.xml" ), getScmRepository() ); // /src/test/java/org ScmTestCase.makeDirectory( getWorkingCopy(), "/src/test/java/org" ); - addToWorkingTree( getWorkingCopy(), new File( "src/test/java/org" ), repository ); + addToWorkingTree( getWorkingCopy(), new File( "src/test/java/org" ), getScmRepository() ); // /src/main/java/org/Foo.java ScmTestCase.makeFile( getWorkingCopy(), "/src/main/java/org/Foo.java" ); - addToWorkingTree( getWorkingCopy(), new File( "src/main/java/org" ), repository ); + addToWorkingTree( getWorkingCopy(), new File( "src/main/java/org" ), getScmRepository() ); // src/main/java/org/Foo.java - addToWorkingTree( getWorkingCopy(), new File( "src/main/java/org/Foo.java" ), repository ); + addToWorkingTree( getWorkingCopy(), new File( "src/main/java/org/Foo.java" ), getScmRepository() ); ScmManager scmManager = getScmManager(); Date lastUpdate = new Date( System.currentTimeMillis() - 1000000 ); - commit( getWorkingCopy(), repository ); + commit( getWorkingCopy(), getScmRepository() ); Thread.sleep( 5000 ); - + // ---------------------------------------------------------------------- // Update the project // ---------------------------------------------------------------------- - + UpdateScmResult result = scmManager.update( repository, new ScmFileSet( getUpdatingCopy() ), lastUpdate ); assertNotNull( "The command returned a null result.", result ); @@ -179,5 +180,5 @@ public abstract class UpdateCommandTckTest //TODO : Consolidate file status so that we can remove "|| ADDED" term assertTrue( file.getStatus().isUpdate() || file.getStatus() == ScmFileStatus.ADDED ); } - + }