View Javadoc
1   package org.apache.maven.scm.provider.jazz.command.status;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   * http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import org.apache.maven.scm.ScmFile;
23  import org.apache.maven.scm.ScmFileStatus;
24  import org.apache.maven.scm.log.DefaultLog;
25  import org.apache.maven.scm.provider.jazz.JazzScmTestCase;
26  import org.apache.maven.scm.provider.jazz.repository.JazzScmProviderRepository;
27  import org.codehaus.plexus.util.cli.Commandline;
28  
29  import java.util.List;
30  
31  /**
32   * @author <a href="mailto:ChrisGWarp@gmail.com">Chris Graham</a>
33   */
34  public class JazzStatusCommandTest
35      extends JazzScmTestCase
36  {
37      private JazzScmProviderRepository repo;
38  
39      private JazzStatusConsumer statusConsumer;
40  
41      protected void setUp()
42          throws Exception
43      {
44          super.setUp();
45          repo = getScmProviderRepository();
46          statusConsumer = new JazzStatusConsumer( repo, new DefaultLog() );
47      }
48  
49      public void testCreateStatusCommand()
50          throws Exception
51      {
52          Commandline cmd = new JazzStatusCommand().createStatusCommand( repo, getScmFileSet() ).getCommandline();
53          String expected = "scm status --username myUserName --password myPassword --wide";
54          assertCommandLine( expected, getWorkingDirectory(), cmd );
55      }
56  
57      public void testConsumer()
58      {
59          statusConsumer.consumeLine(
60              "Workspace: (1000) \"Dave's Repository Workspace\" <-> (1001) \"SCM Plugin Stream\"" );
61          statusConsumer.consumeLine( "  Component: (1002) \"SCM Plugins\"" );
62          statusConsumer.consumeLine( "    Baseline: (1003) 1 \"Initial Baseline\"" );
63          statusConsumer.consumeLine( "    Unresolved:" );
64          statusConsumer.consumeLine(
65              "      d- /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java" );
66          statusConsumer.consumeLine(
67              "      a- /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProviderRenamed.java" );
68          statusConsumer.consumeLine(
69              "      d- /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/DeletedFile.java" );
70          statusConsumer.consumeLine(
71              "      a- /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/AddedFile.java" );
72          statusConsumer.consumeLine(
73              "      -c /status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/ModifiedFile.java" );
74          statusConsumer.consumeLine( "    Outgoing:" );
75          statusConsumer.consumeLine( "      Change sets:" );
76          statusConsumer.consumeLine( "        (1008) --@ <No comment>" );
77          statusConsumer.consumeLine( "" );
78  
79          // Test the additional collected data, Workspace, Component, Baseline.
80          assertEquals( "Workspace is incorrect!", "Dave's Repository Workspace", repo.getWorkspace() );
81          assertEquals( "Workspace Alias is incorrect!", 1000, repo.getWorkspaceAlias() );
82          assertEquals( "Flow Target is incorrect!", "SCM Plugin Stream", repo.getFlowTarget() );
83          assertEquals( "Flow Target Alias is incorrect!", 1001, repo.getFlowTargetAlias() );
84          assertEquals( "Component is incorrect!", "SCM Plugins", repo.getComponent() );
85          assertEquals( "Baseline is incorrect!", "Initial Baseline", repo.getBaseline() );
86  
87          // Test the stream parsing and isPushChanges bits.
88          assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
89  
90          // Test the ScmFile and ScmFileStatus bits.
91          List<ScmFile> changedFiles = statusConsumer.getChangedFiles();
92          assertNotNull( changedFiles );
93          assertEquals( 5, changedFiles.size() );
94          assertTrue( changedFiles.contains(
95              new ScmFile( "/status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java",
96                           ScmFileStatus.DELETED ) ) );
97          assertTrue( changedFiles.contains( new ScmFile(
98              "/status-test-project/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProviderRenamed.java",
99              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 }