Changed: Added support for multiple changesets. Changed: Added status calls where necessary to pick up change set aliases as well as workspace/stream names and aliases. Changed: Added additional StatusConsumer test cases.
Project: http://git-wip-us.apache.org/repos/asf/maven-scm/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-scm/commit/dd3a18d0 Tree: http://git-wip-us.apache.org/repos/asf/maven-scm/tree/dd3a18d0 Diff: http://git-wip-us.apache.org/repos/asf/maven-scm/diff/dd3a18d0 Branch: refs/heads/master Commit: dd3a18d055dec414191f5529ac9f5c89f12e83ec Parents: 9098682 Author: Chris Graham <chrisgw...@gmail.com> Authored: Sat May 2 22:49:07 2015 +1000 Committer: Chris Graham <chrisgw...@apache.org> Committed: Thu May 7 12:04:23 2015 +1000 ---------------------------------------------------------------------- .../scm/provider/jazz/JazzScmProvider.java | 18 ++- .../provider/jazz/command/JazzConstants.java | 9 ++ .../provider/jazz/command/JazzScmCommand.java | 11 +- .../command/checkin/JazzCheckInCommand.java | 45 +++++--- .../jazz/command/list/JazzListCommand.java | 7 +- .../jazz/command/status/JazzStatusConsumer.java | 23 ++-- .../repository/JazzScmProviderRepository.java | 20 ++-- .../jazz/command/JazzScmCommandTest.java | 28 ++++- .../command/checkin/JazzCheckInCommandTest.java | 5 +- .../jazz/command/list/JazzListCommandTest.java | 2 +- .../command/status/JazzStatusCommandTest.java | 111 ++++++++++++++++++- 11 files changed, 232 insertions(+), 47 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java ---------------------------------------------------------------------- diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java index f454845..9f62779 100644 --- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java +++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java @@ -112,7 +112,7 @@ public class JazzScmProvider // Called from: // AbstractScmProvider.makeScmRepository() // AbstractScmProvider.validateScmUrl() - getLogger().debug( "JazzScmProvider:makeProviderScmRepository" ); + getLogger().debug( "JazzScmProvider:makeProviderScmRepository()" ); getLogger().debug( "Provided scm url - " + scmUrl ); getLogger().debug( "Provided delimiter - '" + delimiter + "'" ); @@ -250,6 +250,7 @@ public class JazzScmProvider public AddScmResult add( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException { + getLogger().debug( "JazzScmProvider:add()" ); JazzAddCommand command = new JazzAddCommand(); command.setLogger( getLogger() ); return (AddScmResult) command.execute( repository, fileSet, parameters ); @@ -262,6 +263,7 @@ public class JazzScmProvider CommandParameters parameters ) throws ScmException { + getLogger().debug( "JazzScmProvider:branch()" ); JazzBranchCommand command = new JazzBranchCommand(); command.setLogger( getLogger() ); return (BranchScmResult) command.execute( repository, fileSet, parameters ); @@ -273,6 +275,7 @@ public class JazzScmProvider protected BlameScmResult blame( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException { + getLogger().debug( "JazzScmProvider:blame()" ); JazzBlameCommand command = new JazzBlameCommand(); command.setLogger( getLogger() ); return (BlameScmResult) command.execute( repository, fileSet, parameters ); @@ -285,6 +288,7 @@ public class JazzScmProvider CommandParameters parameters ) throws ScmException { + getLogger().debug( "JazzScmProvider:changelog()" ); // We need to call the status command first, so that we can get the details of the workspace. // This is needed for the list changesets command. // We could also 'trust' the value in the pom. @@ -304,6 +308,7 @@ public class JazzScmProvider CommandParameters parameters ) throws ScmException { + getLogger().debug( "JazzScmProvider:checkin()" ); JazzCheckInCommand command = new JazzCheckInCommand(); command.setLogger( getLogger() ); return (CheckInScmResult) command.execute( repository, fileSet, parameters ); @@ -316,6 +321,7 @@ public class JazzScmProvider CommandParameters parameters ) throws ScmException { + getLogger().debug( "JazzScmProvider:checkout()" ); JazzCheckOutCommand command = new JazzCheckOutCommand(); command.setLogger( getLogger() ); return (CheckOutScmResult) command.execute( repository, fileSet, parameters ); @@ -327,6 +333,7 @@ public class JazzScmProvider protected DiffScmResult diff( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException { + getLogger().debug( "JazzScmProvider:diff()" ); JazzDiffCommand command = new JazzDiffCommand(); command.setLogger( getLogger() ); return (DiffScmResult) command.execute( repository, fileSet, parameters ); @@ -338,6 +345,7 @@ public class JazzScmProvider protected EditScmResult edit( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException { + getLogger().debug( "JazzScmProvider:edit()" ); JazzEditCommand command = new JazzEditCommand(); command.setLogger( getLogger() ); return (EditScmResult) command.execute( repository, fileSet, parameters ); @@ -350,6 +358,7 @@ public class JazzScmProvider CommandParameters parameters ) throws ScmException { + getLogger().debug( "JazzScmProvider:export()" ); // Use checkout instead return super.export( repository, fileSet, parameters ); } @@ -360,8 +369,9 @@ public class JazzScmProvider protected ListScmResult list( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException { + getLogger().debug( "JazzScmProvider:list()" ); // We need to call the status command first, so that we can get the details of the stream etc. - // This is needed for workspace deliveries and snapshot promotions. + // This is needed for workspace and component names. JazzStatusCommand statusCommand = new JazzStatusCommand(); statusCommand.setLogger( getLogger() ); statusCommand.execute( repository, fileSet, parameters ); @@ -378,6 +388,7 @@ public class JazzScmProvider CommandParameters parameters ) throws ScmException { + getLogger().debug( "JazzScmProvider:status()" ); JazzStatusCommand command = new JazzStatusCommand(); command.setLogger( getLogger() ); return (StatusScmResult) command.execute( repository, fileSet, parameters ); @@ -389,6 +400,7 @@ public class JazzScmProvider protected TagScmResult tag( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException { + getLogger().debug( "JazzScmProvider:tag()" ); // We need to call the status command first, so that we can get the details of the stream etc. // This is needed for workspace deliveries and snapshot promotions. JazzStatusCommand statusCommand = new JazzStatusCommand(); @@ -407,6 +419,7 @@ public class JazzScmProvider CommandParameters parameters ) throws ScmException { + getLogger().debug( "JazzScmProvider:update()" ); JazzUpdateCommand command = new JazzUpdateCommand(); command.setLogger( getLogger() ); return (UpdateScmResult) command.execute( repository, fileSet, parameters ); @@ -419,6 +432,7 @@ public class JazzScmProvider CommandParameters parameters ) throws ScmException { + getLogger().debug( "JazzScmProvider:unedit()" ); JazzUnEditCommand command = new JazzUnEditCommand(); command.setLogger( getLogger() ); return (UnEditScmResult) command.execute( repository, fileSet, parameters ); http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java ---------------------------------------------------------------------- diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java index 9e0b2ec..f0ba1b4 100644 --- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java +++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java @@ -272,4 +272,13 @@ public class JazzConstants */ public static final String ARG_WORKSPACE = "--workspace"; + /** + * Depth of files returned (used with "list remotefiles" command). + */ + public static final String ARG_DEPTH = "--depth"; + + /** + * Depth is either numeric or '-' for all'. + */ + public static final String ARG_DEPTH_INFINTE = "-"; } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommand.java ---------------------------------------------------------------------- diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommand.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommand.java index 4adf121..57bb3ba 100644 --- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommand.java +++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommand.java @@ -248,7 +248,14 @@ public class JazzScmCommand } else { - afterPassword = "\""; + if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) + { + afterPassword = "\""; + } + else + { + afterPassword = ""; + } } if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) { @@ -256,7 +263,7 @@ public class JazzScmCommand } else { - clString = beforePassword + "'*****'"; + clString = beforePassword + "'*****'" + afterPassword; } } http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommand.java ---------------------------------------------------------------------- diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommand.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommand.java index 8d35734..07eb26f 100644 --- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommand.java +++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommand.java @@ -34,6 +34,7 @@ import org.apache.maven.scm.provider.jazz.command.JazzScmCommand; import org.apache.maven.scm.provider.jazz.command.add.JazzAddCommand; import org.apache.maven.scm.provider.jazz.command.consumer.DebugLoggerConsumer; import org.apache.maven.scm.provider.jazz.command.consumer.ErrorConsumer; +import org.apache.maven.scm.provider.jazz.command.status.JazzStatusCommand; import org.apache.maven.scm.provider.jazz.repository.JazzScmProviderRepository; import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.cli.StreamConsumer; @@ -115,21 +116,39 @@ public class JazzCheckInCommand errConsumer.getOutput(), false ); } - // Check to see if we've had a workItem defined (via -DworkItem=XXXX) + // As we just created a change set, we now need to call the status command so we can parse the + // newly created change set. + + JazzStatusCommand statusCommand = new JazzStatusCommand(); + statusCommand.setLogger( getLogger() ); + statusCommand.executeStatusCommand( repository, fileSet ); + + // NOTE: For isPushChangesAndHaveFlowTargets() to work, a scm status call must have been called first!!! + // As the Workspace name and alias, and the Flow Target name and alias are needed. + + // Check to see if we've got a flow target and had a workItem defined (via -DworkItem=XXXX) JazzScmProviderRepository jazzRepo = (JazzScmProviderRepository) repository; if ( jazzRepo.isPushChangesAndHaveFlowTargets() && StringUtils.isNotEmpty( jazzRepo.getWorkItem() ) ) { - // Associate a work item if we need too. - JazzScmCommand changesetAssociateCmd = createChangesetAssociateCommand( repository ); - outputConsumer = new DebugLoggerConsumer( getLogger() ); - errConsumer = new ErrorConsumer( getLogger() ); - - status = changesetAssociateCmd.execute( outputConsumer, errConsumer ); - if ( status != 0 || errConsumer.hasBeenFed() ) + List<Integer> changeSetAliases = jazzRepo.getChangeSetAliases(); + if ( changeSetAliases != null && !changeSetAliases.isEmpty() ) { - return new CheckInScmResult( changesetAssociateCmd.getCommandString(), - "Error code for Jazz SCM changeset associate command - " + status, - errConsumer.getOutput(), false ); + for ( Integer changeSetAlias : changeSetAliases ) + { + // Associate a work item if we need too. + JazzScmCommand changesetAssociateCmd = createChangesetAssociateCommand( repository, + changeSetAlias ); + outputConsumer = new DebugLoggerConsumer( getLogger() ); + errConsumer = new ErrorConsumer( getLogger() ); + + status = changesetAssociateCmd.execute( outputConsumer, errConsumer ); + if ( status != 0 || errConsumer.hasBeenFed() ) + { + return new CheckInScmResult( changesetAssociateCmd.getCommandString(), + "Error code for Jazz SCM changeset associate command - " + status, + errConsumer.getOutput(), false ); + } + } } } @@ -179,14 +198,14 @@ public class JazzCheckInCommand return command; } - public JazzScmCommand createChangesetAssociateCommand( ScmProviderRepository repo ) + public JazzScmCommand createChangesetAssociateCommand( ScmProviderRepository repo, Integer changeSetAlias ) { JazzScmCommand command = new JazzScmCommand( JazzConstants.CMD_CHANGESET, JazzConstants.CMD_SUB_ASSOCIATE, repo, false, null, getLogger() ); // Add the change set alias JazzScmProviderRepository jazzRepo = (JazzScmProviderRepository) repo; - command.addArgument( "" + jazzRepo.getChangeSetAlias() ); + command.addArgument( changeSetAlias.toString() ); // Add the work item number command.addArgument( jazzRepo.getWorkItem() ); return command; http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommand.java ---------------------------------------------------------------------- diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommand.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommand.java index 0a91fdc..09042f5 100644 --- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommand.java +++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommand.java @@ -77,10 +77,15 @@ public class JazzListCommand public JazzScmCommand createListCommand( JazzScmProviderRepository repo, ScmFileSet fileSet, boolean recursive, ScmVersion version ) { - // recursive is implicit in the command, so it is ignored. + // recursive is implicit in the command, so it is ignored. NOTE: V4 appears to have changed this. // version is meaningless, so it is ignored. JazzScmCommand command = new JazzScmCommand( JazzConstants.CMD_LIST, JazzConstants.CMD_SUB_REMOTEFILES, repo, fileSet, getLogger() ); + if ( recursive ) + { + command.addArgument( JazzConstants.ARG_DEPTH ); + command.addArgument( JazzConstants.ARG_DEPTH_INFINTE ); + } command.addArgument( repo.getRepositoryWorkspace() ); command.addArgument( repo.getComponent() ); return command; http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusConsumer.java ---------------------------------------------------------------------- diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusConsumer.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusConsumer.java index 0ac426f..19eba7a 100644 --- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusConsumer.java +++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusConsumer.java @@ -402,22 +402,13 @@ public class JazzStatusConsumer getLogger().debug( "Successfully parsed post \"Change sets:\" line:" ); getLogger().debug( " changeSetAlias = " + changeSetAlias ); } - jazzRepository.setChangeSetAlias( changeSetAlias ); - // This is a difficult one. Do I now turn it off or not? - seenChangeSets = false; - // For the moment I am going too. - // If we ever need to support multiple outgoing changesets, - // and I can not see how that makes sense in a maven sense, - // then we can revisit using a list. - // Also, turning if off means that we only look at the first - // (and hopefully only!) one. - // It also means that if we run across some Incoming: changes, - // then we will not pick them up accidently either. - // - // Another way around this would to be to have a specific - // consumer for the create changeset command itself. - // That way we would be totally assured that we've picked - // up the right Changet Set Alias. + // We are now supporting multiple change sets, as this allows + // us to cater for multiple changeset caused by previous failed + // release attempts. + // Our starting point should always be a clean slate of a workspace + // or sandbox, however, if something fails, then we will have some + // changesets already created, so we need to be able to deal with them effectively. + jazzRepository.getChangeSetAliases().add( new Integer( changeSetAlias ) ); } } } http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/repository/JazzScmProviderRepository.java ---------------------------------------------------------------------- diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/repository/JazzScmProviderRepository.java b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/repository/JazzScmProviderRepository.java index 20d8208..f1ee5c5 100644 --- a/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/repository/JazzScmProviderRepository.java +++ b/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/repository/JazzScmProviderRepository.java @@ -19,6 +19,9 @@ package org.apache.maven.scm.provider.jazz.repository; * under the License. */ +import java.util.ArrayList; +import java.util.List; + import org.apache.maven.scm.provider.ScmProviderRepositoryWithHost; import org.codehaus.plexus.util.StringUtils; @@ -86,7 +89,7 @@ public class JazzScmProviderRepository /** * The alias of the change set, as returned from the "scm status" command. */ - private int fChangeSetAlias; + private List<Integer> fChangeSetAliases = new ArrayList<Integer>(); // TODO In the future we might expand the details of this repository. // For example we might extend the scm url to include a stream (as well as the repository workspace) @@ -249,21 +252,21 @@ public class JazzScmProviderRepository } /** - * @return The alias of the changeset, as returned from the "scm status" command. + * @return The List<Integer> of aliases of the changesets, as returned from the "scm status" command. */ - public int getChangeSetAlias() + public List<Integer> getChangeSetAliases() { - return fChangeSetAlias; + return fChangeSetAliases; } /** - * @param fChangeSetAlias the fChangeSetAlias to set + * @param ChangeSetAliases the List of Integers of change set aliases to set */ - public void setChangeSetAlias( int fChangeSetAlias ) + public void setChangeSetAliases( List<Integer> changeSetAliases ) { - this.fChangeSetAlias = fChangeSetAlias; + this.fChangeSetAliases = changeSetAliases; } - + /** * {@inheritDoc} */ @@ -271,4 +274,5 @@ public class JazzScmProviderRepository { return getRepositoryURI() + ":" + getRepositoryWorkspace(); } + } http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommandTest.java ---------------------------------------------------------------------- diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommandTest.java b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommandTest.java index 8cfcb60..421a065 100644 --- a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommandTest.java +++ b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommandTest.java @@ -36,12 +36,25 @@ public class JazzScmCommandTest } public void testJazzScmCommand() + throws Exception + { + ScmFileSet scmFileSet = new ScmFileSet( getWorkingCopy() ); + JazzScmCommand listCommand = new JazzScmCommand( "list", getScmProviderRepository(), scmFileSet, null ); + String expected = + "scm list --repository-uri https://localhost:9443/jazz --username myUserName --password myPassword"; + + assertCommandLine( expected, getWorkingDirectory(), listCommand.getCommandline() ); + + } + + public void testJazzScmCommandWithExtraArg() throws Exception { ScmFileSet scmFileSet = new ScmFileSet( getWorkingCopy() ); JazzScmCommand listCommand = new JazzScmCommand( "list", getScmProviderRepository(), scmFileSet, null ); + listCommand.addArgument( "ExtraArg" ); String expected = - "scm list --repository-uri https://localhost:9443/jazz --username myUserName --password myPassword"; + "scm list --repository-uri https://localhost:9443/jazz --username myUserName --password myPassword ExtraArg"; assertCommandLine( expected, getWorkingDirectory(), listCommand.getCommandline() ); @@ -58,4 +71,17 @@ public class JazzScmCommandTest assertEquals( "cryptPassword failed!", expected, actual ); } + + public void testCryptPasswordWithExtraArg() + throws Exception + { + JazzScmCommand listCommand = new JazzScmCommand( "list", getScmProviderRepository(), null, null ); + listCommand.addArgument( "ExtraArg" ); + String actual = JazzScmCommand.cryptPassword( listCommand.getCommandline() ); + String expected = Os.isFamily( Os.FAMILY_WINDOWS ) + ? "cmd.exe /X /C \"scm list --repository-uri https://localhost:9443/jazz --username myUserName --password ***** ExtraArg\"" + : "/bin/sh -c scm list --repository-uri https://localhost:9443/jazz --username myUserName --password '*****' ExtraArg"; + + assertEquals( "cryptPassword failed!", expected, actual ); + } } http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java ---------------------------------------------------------------------- diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java index b30bfcf..6611ddf 100644 --- a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java +++ b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java @@ -1,5 +1,7 @@ package org.apache.maven.scm.provider.jazz.command.checkin; +import java.awt.List; + import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.log.DefaultLog; import org.apache.maven.scm.provider.jazz.JazzScmTestCase; @@ -61,8 +63,7 @@ public class JazzCheckInCommandTest JazzScmProviderRepository repo = getScmProviderRepository(); // Populate the values that are normally parsed and set by the StatusConsumer. repo.setWorkItem( "215762" ); - repo.setChangeSetAlias( 1234 ); - Commandline cmd = new JazzCheckInCommand().createChangesetAssociateCommand( repo ).getCommandline(); + Commandline cmd = new JazzCheckInCommand().createChangesetAssociateCommand( repo, new Integer(1234) ).getCommandline(); // Because we do not use a ScmFileSet, the working dir is not set, so the test fails. cmd.setWorkingDirectory( getWorkingDirectory() ); String expected = "scm changeset associate --username myUserName --password myPassword 1234 215762"; http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommandTest.java ---------------------------------------------------------------------- diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommandTest.java b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommandTest.java index 8a54ab2..a42ce3e 100644 --- a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommandTest.java +++ b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommandTest.java @@ -58,7 +58,7 @@ public class JazzListCommandTest { Commandline cmd = new JazzListCommand().createListCommand( repo, getScmFileSet(), true, null ).getCommandline(); String expected = - "scm list remotefiles --repository-uri https://localhost:9443/jazz --username myUserName --password myPassword \"Dave's Repository Workspace\" \"Dave's Component\""; + "scm list remotefiles --repository-uri https://localhost:9443/jazz --username myUserName --password myPassword --depth - \"Dave's Repository Workspace\" \"Dave's Component\""; assertCommandLine( expected, getWorkingDirectory(), cmd ); } http://git-wip-us.apache.org/repos/asf/maven-scm/blob/dd3a18d0/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommandTest.java ---------------------------------------------------------------------- diff --git a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommandTest.java b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommandTest.java index acb862e..ede7e91 100644 --- a/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommandTest.java +++ b/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommandTest.java @@ -83,7 +83,9 @@ public class JazzStatusCommandTest assertEquals( "Flow Target Alias is incorrect!", 1001, repo.getFlowTargetAlias() ); assertEquals( "Component is incorrect!", "SCM Plugins", repo.getComponent() ); assertEquals( "Baseline is incorrect!", "Initial Baseline", repo.getBaseline() ); - assertEquals( "Change Set Alias is incorrect!", 1008, repo.getChangeSetAlias()); + assertNotNull( repo.getChangeSetAliases() ); + assertEquals( "Change Set Alias length is incorrect!", 1, repo.getChangeSetAliases().size() ); + assertEquals( "Change Set Alias is incorrect!", new Integer(1008), repo.getChangeSetAliases().get(0)); // Test the stream parsing and isPushChanges bits. assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() ); @@ -171,4 +173,111 @@ public class JazzStatusCommandTest assertEquals( "Component is incorrect!", "FireDragon", repo.getComponent() ); assertEquals( "Baseline is incorrect!", "Initial Baseline", repo.getBaseline() ); } + + public void testConsumerWithMultipleChangeSets() + { + statusConsumer.consumeLine( "Workspace: (1000) \"GPDBWorkspace\" <-> (1001) \"GPDBStream\"" ); + statusConsumer.consumeLine( " Component: (1002) \"GPDB\"" ); + statusConsumer.consumeLine( " Baseline: (1003) 49 \"GPDB-MAN-1.0.50\"" ); + statusConsumer.consumeLine( " Unresolved:" ); + statusConsumer.consumeLine( " a-- /GPDB/GPDBEAR/pom.xml.releaseBackup" ); + statusConsumer.consumeLine( " a-- /GPDB/GPDBResources/pom.xml.releaseBackup" ); + statusConsumer.consumeLine( " a-- /GPDB/GPDBWeb/pom.xml.releaseBackup" ); + statusConsumer.consumeLine( " a-- /GPDB/pom.xml.releaseBackup" ); + statusConsumer.consumeLine( " Outgoing:" ); + statusConsumer.consumeLine( " Change sets:" ); + statusConsumer.consumeLine( " (1012) *--@ \"Release the next release of GPDB.\" - " + + "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 09:38 PM" ); + statusConsumer.consumeLine( " (1011) ---@ \"Release the next release of GPDB.\" - " + + "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 09:33 PM" ); + statusConsumer.consumeLine( " (1010) ---@ \"Release the next release of GPDB.\" - " + + "\"[maven-release-plugin] prepare release GPDB-1.0.51\" 02-May-2015 09:28 PM" ); + statusConsumer.consumeLine( " (1009) ---@ \"Release the next release of GPDB.\" - " + + "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 08:05 PM" ); + statusConsumer.consumeLine( " (1008) ---@ \"Release the next release of GPDB.\" - " + + "\"[maven-release-plugin] prepare release GPDB-1.0.51\" 02-May-2015 08:00 PM" ); + statusConsumer.consumeLine( " (1007) ---@ \"[maven-release-plugin] rollback the " + + "release of GPDB-1.0.51\" 02-May-2015 07:54 PM" ); + statusConsumer.consumeLine( " (1006) ---@ \"[maven-release-plugin] prepare " + + "release GPDB-1.0.51\" 02-May-2015 09:33 PM" ); + + // Test the additional collected data, Workspace, Component, Baseline. + assertEquals( "Workspace is incorrect!", "GPDBWorkspace", repo.getWorkspace() ); + assertEquals( "Workspace Alias is incorrect!", 1000, repo.getWorkspaceAlias() ); + assertEquals( "Flow Target is incorrect!", "GPDBStream", repo.getFlowTarget() ); + assertEquals( "Flow Target Alias is incorrect!", 1001, repo.getFlowTargetAlias() ); + assertEquals( "Component is incorrect!", "GPDB", repo.getComponent() ); + assertEquals( "Baseline is incorrect!", "GPDB-MAN-1.0.50", repo.getBaseline() ); + + // Test the stream parsing and isPushChanges bits. + assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() ); + repo.setPushChanges( false ); + assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() ); + repo.setPushChanges( true ); + assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() ); + + + assertNotNull( repo.getChangeSetAliases() ); + assertEquals( "Change Set Alias length is incorrect!", 7, repo.getChangeSetAliases().size() ); + assertEquals( "Change Set Alias [0] is incorrect!", new Integer(1012), repo.getChangeSetAliases().get(0)); + assertEquals( "Change Set Alias [1] is incorrect!", new Integer(1011), repo.getChangeSetAliases().get(1)); + assertEquals( "Change Set Alias [2] is incorrect!", new Integer(1010), repo.getChangeSetAliases().get(2)); + assertEquals( "Change Set Alias [3] is incorrect!", new Integer(1009), repo.getChangeSetAliases().get(3)); + assertEquals( "Change Set Alias [4] is incorrect!", new Integer(1008), repo.getChangeSetAliases().get(4)); + assertEquals( "Change Set Alias [5] is incorrect!", new Integer(1007), repo.getChangeSetAliases().get(5)); + assertEquals( "Change Set Alias [6] is incorrect!", new Integer(1006), repo.getChangeSetAliases().get(6)); + } + + public void testConsumerWithMultipleChangeSetsAndWorkItems() + { + statusConsumer.consumeLine( "Workspace: (1000) \"GPDBWorkspace\" <-> (1001) \"GPDBStream\"" ); + statusConsumer.consumeLine( " Component: (1002) \"GPDB\"" ); + statusConsumer.consumeLine( " Baseline: (1003) 49 \"GPDB-MAN-1.0.50\"" ); + statusConsumer.consumeLine( " Unresolved:" ); + statusConsumer.consumeLine( " a-- /GPDB/GPDBEAR/pom.xml.releaseBackup" ); + statusConsumer.consumeLine( " a-- /GPDB/GPDBResources/pom.xml.releaseBackup" ); + statusConsumer.consumeLine( " a-- /GPDB/GPDBWeb/pom.xml.releaseBackup" ); + statusConsumer.consumeLine( " a-- /GPDB/pom.xml.releaseBackup" ); + statusConsumer.consumeLine( " Outgoing:" ); + statusConsumer.consumeLine( " Change sets:" ); + statusConsumer.consumeLine( " (1012) *--@ 62 \"Release the next release of GPDB.\" - " + + "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 09:38 PM" ); + statusConsumer.consumeLine( " (1011) ---@ 62 \"Release the next release of GPDB.\" - " + + "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 09:33 PM" ); + statusConsumer.consumeLine( " (1010) ---@ 62 \"Release the next release of GPDB.\" - " + + "\"[maven-release-plugin] prepare release GPDB-1.0.51\" 02-May-2015 09:28 PM" ); + statusConsumer.consumeLine( " (1009) ---@ 62 \"Release the next release of GPDB.\" - " + + "\"[maven-release-plugin] rollback the release of GPDB-1.0.51\" 02-May-2015 08:05 PM" ); + statusConsumer.consumeLine( " (1008) ---@ 62 \"Release the next release of GPDB.\" - " + + "\"[maven-release-plugin] prepare release GPDB-1.0.51\" 02-May-2015 08:00 PM" ); + statusConsumer.consumeLine( " (1007) ---@ \"[maven-release-plugin] rollback the " + + "release of GPDB-1.0.51\" 02-May-2015 07:54 PM" ); + statusConsumer.consumeLine( " (1006) ---@ \"[maven-release-plugin] prepare " + + "release GPDB-1.0.51\" 02-May-2015 09:33 PM" ); + + // Test the additional collected data, Workspace, Component, Baseline. + assertEquals( "Workspace is incorrect!", "GPDBWorkspace", repo.getWorkspace() ); + assertEquals( "Workspace Alias is incorrect!", 1000, repo.getWorkspaceAlias() ); + assertEquals( "Flow Target is incorrect!", "GPDBStream", repo.getFlowTarget() ); + assertEquals( "Flow Target Alias is incorrect!", 1001, repo.getFlowTargetAlias() ); + assertEquals( "Component is incorrect!", "GPDB", repo.getComponent() ); + assertEquals( "Baseline is incorrect!", "GPDB-MAN-1.0.50", repo.getBaseline() ); + + // Test the stream parsing and isPushChanges bits. + assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() ); + repo.setPushChanges( false ); + assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() ); + repo.setPushChanges( true ); + assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() ); + + assertNotNull( repo.getChangeSetAliases() ); + assertEquals( "Change Set Alias length is incorrect!", 7, repo.getChangeSetAliases().size() ); + assertEquals( "Change Set Alias [0] is incorrect!", new Integer(1012), repo.getChangeSetAliases().get(0)); + assertEquals( "Change Set Alias [1] is incorrect!", new Integer(1011), repo.getChangeSetAliases().get(1)); + assertEquals( "Change Set Alias [2] is incorrect!", new Integer(1010), repo.getChangeSetAliases().get(2)); + assertEquals( "Change Set Alias [3] is incorrect!", new Integer(1009), repo.getChangeSetAliases().get(3)); + assertEquals( "Change Set Alias [4] is incorrect!", new Integer(1008), repo.getChangeSetAliases().get(4)); + assertEquals( "Change Set Alias [5] is incorrect!", new Integer(1007), repo.getChangeSetAliases().get(5)); + assertEquals( "Change Set Alias [6] is incorrect!", new Integer(1006), repo.getChangeSetAliases().get(6)); + } }