001package org.apache.maven.scm.provider.jazz.command.status; 002 003/* 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, 015 * software distributed under the License is distributed on an 016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 017 * KIND, either express or implied. See the License for the 018 * specific language governing permissions and limitations 019 * under the License. 020 */ 021 022import org.apache.maven.scm.ScmFile; 023import org.apache.maven.scm.ScmFileStatus; 024import org.apache.maven.scm.log.DefaultLog; 025import org.apache.maven.scm.provider.jazz.JazzScmTestCase; 026import org.apache.maven.scm.provider.jazz.repository.JazzScmProviderRepository; 027import org.codehaus.plexus.util.cli.Commandline; 028 029import java.util.List; 030 031/** 032 * @author <a href="mailto:ChrisGWarp@gmail.com">Chris Graham</a> 033 */ 034public class JazzStatusCommandTest 035 extends JazzScmTestCase 036{ 037 private JazzScmProviderRepository repo; 038 039 private JazzStatusConsumer statusConsumer; 040 041 protected void setUp() 042 throws Exception 043 { 044 super.setUp(); 045 repo = getScmProviderRepository(); 046 statusConsumer = new JazzStatusConsumer( repo, new DefaultLog() ); 047 } 048 049 public void testCreateStatusCommand() 050 throws Exception 051 { 052 Commandline cmd = new JazzStatusCommand().createStatusCommand( repo, getScmFileSet() ).getCommandline(); 053 String expected = "scm status --username myUserName --password myPassword --wide"; 054 assertCommandLine( expected, getWorkingDirectory(), cmd ); 055 } 056 057 public void testConsumer() 058 { 059 statusConsumer.consumeLine( 060 "Workspace: (1000) \"Dave's Repository Workspace\" <-> (1001) \"SCM Plugin Stream\"" ); 061 statusConsumer.consumeLine( " Component: (1002) \"SCM Plugins\"" ); 062 statusConsumer.consumeLine( " Baseline: (1003) 1 \"Initial Baseline\"" ); 063 statusConsumer.consumeLine( " Unresolved:" ); 064 statusConsumer.consumeLine( 065 " d- /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java" ); 066 statusConsumer.consumeLine( 067 " a- /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProviderRenamed.java" ); 068 statusConsumer.consumeLine( 069 " d- /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/DeletedFile.java" ); 070 statusConsumer.consumeLine( 071 " a- /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/AddedFile.java" ); 072 statusConsumer.consumeLine( 073 " -c /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/ModifiedFile.java" ); 074 statusConsumer.consumeLine( " Outgoing:" ); 075 statusConsumer.consumeLine( " Change sets:" ); 076 statusConsumer.consumeLine( " (1008) --@ <No comment>" ); 077 statusConsumer.consumeLine( "" ); 078 079 // Test the additional collected data, Workspace, Component, Baseline. 080 assertEquals( "Workspace is incorrect!", "Dave's Repository Workspace", repo.getWorkspace() ); 081 assertEquals( "Workspace Alias is incorrect!", 1000, repo.getWorkspaceAlias() ); 082 assertEquals( "Flow Target is incorrect!", "SCM Plugin Stream", repo.getFlowTarget() ); 083 assertEquals( "Flow Target Alias is incorrect!", 1001, repo.getFlowTargetAlias() ); 084 assertEquals( "Component is incorrect!", "SCM Plugins", repo.getComponent() ); 085 assertEquals( "Baseline is incorrect!", "Initial Baseline", repo.getBaseline() ); 086 087 // Test the stream parsing and isPushChanges bits. 088 assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() ); 089 090 // Test the ScmFile and ScmFileStatus bits. 091 List<ScmFile> changedFiles = statusConsumer.getChangedFiles(); 092 assertNotNull( changedFiles ); 093 assertEquals( 5, changedFiles.size() ); 094 assertTrue( changedFiles.contains( 095 new ScmFile( "/status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java", 096 ScmFileStatus.DELETED ) ) ); 097 assertTrue( changedFiles.contains( new ScmFile( 098 "/status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProviderRenamed.java", 099 ScmFileStatus.ADDED ) ) ); 100 assertTrue( changedFiles.contains( 101 new ScmFile( "/status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/DeletedFile.java", 102 ScmFileStatus.DELETED ) ) ); 103 assertTrue( changedFiles.contains( 104 new ScmFile( "/status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/AddedFile.java", 105 ScmFileStatus.ADDED ) ) ); 106 assertTrue( changedFiles.contains( 107 new ScmFile( "/status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/ModifiedFile.java", 108 ScmFileStatus.MODIFIED ) ) ); 109 } 110 111 public void testConsumerWithStream() 112 { 113 statusConsumer.consumeLine( "Workspace: (1156) \"GPDBWorkspace\" <-> (1157) \"GPDBStream\"" ); 114 statusConsumer.consumeLine( " Component: (1158) \"GPDB\" <-> (1157) \"GPDBStream\"" ); 115 statusConsumer.consumeLine( " Baseline: (1159) 1 \"Initial Baseline\"" ); 116 117 // Test the additional collected data, Workspace, Component, Baseline. 118 assertEquals( "Workspace is incorrect!", "GPDBWorkspace", repo.getWorkspace() ); 119 assertEquals( "Workspace Alias is incorrect!", 1156, repo.getWorkspaceAlias() ); 120 assertEquals( "Flow Target is incorrect!", "GPDBStream", repo.getFlowTarget() ); 121 assertEquals( "Flow Target Alias is incorrect!", 1157, repo.getFlowTargetAlias() ); 122 assertEquals( "Component is incorrect!", "GPDB", repo.getComponent() ); 123 assertEquals( "Baseline is incorrect!", "Initial Baseline", repo.getBaseline() ); 124 125 // Test the stream parsing and isPushChanges bits. 126 assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() ); 127 repo.setPushChanges( false ); 128 assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() ); 129 repo.setPushChanges( true ); 130 assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() ); 131 } 132 133 public void testConsumerWithOutStream() 134 { 135 statusConsumer.consumeLine( "Workspace: (1156) \"GPDBWorkspace\" <-> (1156) \"GPDBWorkspace\"" ); 136 statusConsumer.consumeLine( " Component: (1158) \"GPDB\"" ); 137 statusConsumer.consumeLine( " Baseline: (1159) 1 \"Initial Baseline\"" ); 138 139 // Test the additional collected data, Workspace, Component, Baseline. 140 assertEquals( "Workspace is incorrect!", "GPDBWorkspace", repo.getWorkspace() ); 141 assertEquals( "Workspace Alias is incorrect!", 1156, repo.getWorkspaceAlias() ); 142 assertEquals( "Flow Target is incorrect!", "GPDBWorkspace", repo.getFlowTarget() ); 143 assertEquals( "Flow Target Alias is incorrect!", 1156, repo.getFlowTargetAlias() ); 144 assertEquals( "Component is incorrect!", "GPDB", repo.getComponent() ); 145 assertEquals( "Baseline is incorrect!", "Initial Baseline", repo.getBaseline() ); 146 147 // Test the stream parsing and isPushChanges bits. 148 assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() ); 149 repo.setPushChanges( false ); 150 assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() ); 151 repo.setPushChanges( true ); 152 assertFalse( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() ); 153 } 154 155 public void testConsumerWithAdditionalInfo() 156 { 157 statusConsumer.consumeLine( 158 "Workspace: (1000) \"MavenStream Workspace\" <-> (1005) \"MavenStream Workspace\"" ); 159 statusConsumer.consumeLine( 160 " Component: (1002) \"FireDragon\" <-> (1005) \"MavenR3Stream Workspace\" (outgoing addition)" ); 161 statusConsumer.consumeLine( " Baseline: (1003) 1 \"Initial Baseline\"" ); 162 statusConsumer.consumeLine( " Unresolved:" ); 163 statusConsumer.consumeLine( " a-- /FireDragon/.project" ); 164 165 // Test the additional collected data, Workspace, Component, Baseline. 166 assertEquals( "Workspace is incorrect!", "MavenStream Workspace", repo.getWorkspace() ); 167 assertEquals( "Workspace Alias is incorrect!", 1000, repo.getWorkspaceAlias() ); 168 assertEquals( "Flow Target is incorrect!", "MavenStream Workspace", repo.getFlowTarget() ); 169 assertEquals( "Flow Target Alias is incorrect!", 1005, repo.getFlowTargetAlias() ); 170 assertEquals( "Component is incorrect!", "FireDragon", repo.getComponent() ); 171 assertEquals( "Baseline is incorrect!", "Initial Baseline", repo.getBaseline() ); 172 } 173}