View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.scm.provider.git.command.diff;
20  
21  import java.io.File;
22  import java.util.List;
23  import java.util.Map;
24  
25  import org.apache.maven.scm.ScmFile;
26  import org.apache.maven.scm.ScmFileStatus;
27  import org.apache.maven.scm.ScmTestCase;
28  import org.apache.maven.scm.util.ConsumerUtils;
29  import org.junit.Test;
30  
31  import static org.junit.Assert.assertEquals;
32  import static org.junit.Assert.assertNotNull;
33  import static org.junit.Assert.assertTrue;
34  
35  /**
36   * @author <a href="mailto:struberg@yahoo.de">Mark Struberg</a>
37   */
38  public class GitDiffConsumerTest extends ScmTestCase {
39      @Test
40      public void testEmptyLogConsumer() throws Exception {
41          GitDiffConsumer consumer = new GitDiffConsumer(null);
42  
43          File f = getTestFile("/src/test/resources/git/diff/git-diff-empty.log");
44  
45          ConsumerUtils.consumeFile(f, consumer);
46  
47          List<ScmFile> changedFiles = consumer.getChangedFiles();
48  
49          assertEquals(0, changedFiles.size());
50      }
51  
52      @Test
53      public void testLog1Consumer() throws Exception {
54          GitDiffConsumer consumer = new GitDiffConsumer(null);
55  
56          File f = getTestFile("src/test/resources/git/diff/git-diff1.log");
57  
58          ConsumerUtils.consumeFile(f, consumer);
59  
60          List<ScmFile> changedFiles = consumer.getChangedFiles();
61  
62          assertEquals(1, changedFiles.size());
63  
64          testScmFile(changedFiles.get(0), "olamy.test", ScmFileStatus.MODIFIED);
65  
66          Map<String, CharSequence> differences = consumer.getDifferences();
67          assertNotNull(differences);
68  
69          StringBuilder readmeDiffs = new StringBuilder(differences.get("olamy.test"));
70          assertNotNull(readmeDiffs);
71          assertTrue(readmeDiffs.indexOf("+new line") >= 0);
72      }
73  
74      @Test
75      public void testLog2Consumer() throws Exception {
76          GitDiffConsumer consumer = new GitDiffConsumer(null);
77  
78          File f = getTestFile("src/test/resources/git/diff/git-diff2.log");
79  
80          ConsumerUtils.consumeFile(f, consumer);
81  
82          List<ScmFile> changedFiles = consumer.getChangedFiles();
83  
84          assertEquals(2, changedFiles.size());
85  
86          testScmFile(changedFiles.get(0), "pom.xml", ScmFileStatus.MODIFIED);
87  
88          testScmFile(changedFiles.get(1), "test.txt", ScmFileStatus.MODIFIED);
89  
90          Map<String, CharSequence> differences = consumer.getDifferences();
91          assertNotNull(differences);
92  
93          StringBuilder addDiffs = new StringBuilder(differences.get("pom.xml"));
94          assertNotNull(addDiffs);
95          assertTrue(addDiffs.indexOf("+  <!-- test -->") >= 0);
96  
97          addDiffs = new StringBuilder(differences.get("test.txt"));
98          assertNotNull(addDiffs);
99          assertTrue(addDiffs.indexOf("+maven-scm git provider works fine :-)") >= 0);
100     }
101 
102     @Test
103     public void testLog3Consumer() throws Exception {
104         GitDiffConsumer consumer = new GitDiffConsumer(null);
105 
106         File f = getTestFile("src/test/resources/git/diff/git-diff3.log");
107 
108         ConsumerUtils.consumeFile(f, consumer);
109 
110         List<ScmFile> changedFiles = consumer.getChangedFiles();
111 
112         assertEquals(1, changedFiles.size());
113 
114         testScmFile(changedFiles.get(0), "pom.xml", ScmFileStatus.MODIFIED);
115 
116         Map<String, CharSequence> differences = consumer.getDifferences();
117         assertNotNull(differences);
118 
119         CharSequence addDiffs = differences.get("pom.xml");
120         assertNotNull(addDiffs);
121         assertEquals("", addDiffs.toString());
122     }
123 
124     @Test
125     public void testLog4Consumer() throws Exception {
126         GitDiffConsumer consumer = new GitDiffConsumer(null);
127 
128         File f = getTestFile("src/test/resources/git/diff/git-diff4.log");
129 
130         ConsumerUtils.consumeFile(f, consumer);
131 
132         List<ScmFile> changedFiles = consumer.getChangedFiles();
133 
134         assertEquals(1, changedFiles.size());
135 
136         testScmFile(changedFiles.get(0), "pom.xml", ScmFileStatus.MODIFIED);
137 
138         Map<String, CharSequence> differences = consumer.getDifferences();
139         assertNotNull(differences);
140 
141         StringBuilder addDiffs = new StringBuilder(differences.get("pom.xml"));
142         assertNotNull(addDiffs);
143         assertTrue(addDiffs.indexOf("+  <!-- test -->") >= 0);
144     }
145 
146     private void testScmFile(ScmFile fileToTest, String expectedFilePath, ScmFileStatus expectedStatus) {
147         assertEquals(expectedFilePath, fileToTest.getPath());
148         assertEquals(expectedStatus, fileToTest.getStatus());
149     }
150 }