1 package org.apache.maven.scm.provider.jazz.command.status;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
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
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
88 assertTrue( "isPushChangesAndHaveFlowTargets is incorrect!", repo.isPushChangesAndHaveFlowTargets() );
89
90
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
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
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
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
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
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 }