001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 */ 019package org.apache.maven.scm.provider.git.command.diff; 020 021import java.io.File; 022import java.util.List; 023import java.util.Map; 024 025import org.apache.maven.scm.ScmFile; 026import org.apache.maven.scm.ScmFileStatus; 027import org.apache.maven.scm.ScmTestCase; 028import org.apache.maven.scm.util.ConsumerUtils; 029import org.junit.Test; 030 031import static org.junit.Assert.assertEquals; 032import static org.junit.Assert.assertNotNull; 033import static org.junit.Assert.assertTrue; 034 035/** 036 * @author <a href="mailto:struberg@yahoo.de">Mark Struberg</a> 037 */ 038public class GitDiffConsumerTest extends ScmTestCase { 039 @Test 040 public void testEmptyLogConsumer() throws Exception { 041 GitDiffConsumer consumer = new GitDiffConsumer(null); 042 043 File f = getTestFile("/src/test/resources/git/diff/git-diff-empty.log"); 044 045 ConsumerUtils.consumeFile(f, consumer); 046 047 List<ScmFile> changedFiles = consumer.getChangedFiles(); 048 049 assertEquals(0, changedFiles.size()); 050 } 051 052 @Test 053 public void testLog1Consumer() throws Exception { 054 GitDiffConsumer consumer = new GitDiffConsumer(null); 055 056 File f = getTestFile("src/test/resources/git/diff/git-diff1.log"); 057 058 ConsumerUtils.consumeFile(f, consumer); 059 060 List<ScmFile> changedFiles = consumer.getChangedFiles(); 061 062 assertEquals(1, changedFiles.size()); 063 064 testScmFile(changedFiles.get(0), "olamy.test", ScmFileStatus.MODIFIED); 065 066 Map<String, CharSequence> differences = consumer.getDifferences(); 067 assertNotNull(differences); 068 069 StringBuilder readmeDiffs = new StringBuilder(differences.get("olamy.test")); 070 assertNotNull(readmeDiffs); 071 assertTrue(readmeDiffs.indexOf("+new line") >= 0); 072 } 073 074 @Test 075 public void testLog2Consumer() throws Exception { 076 GitDiffConsumer consumer = new GitDiffConsumer(null); 077 078 File f = getTestFile("src/test/resources/git/diff/git-diff2.log"); 079 080 ConsumerUtils.consumeFile(f, consumer); 081 082 List<ScmFile> changedFiles = consumer.getChangedFiles(); 083 084 assertEquals(2, changedFiles.size()); 085 086 testScmFile(changedFiles.get(0), "pom.xml", ScmFileStatus.MODIFIED); 087 088 testScmFile(changedFiles.get(1), "test.txt", ScmFileStatus.MODIFIED); 089 090 Map<String, CharSequence> differences = consumer.getDifferences(); 091 assertNotNull(differences); 092 093 StringBuilder addDiffs = new StringBuilder(differences.get("pom.xml")); 094 assertNotNull(addDiffs); 095 assertTrue(addDiffs.indexOf("+ <!-- test -->") >= 0); 096 097 addDiffs = new StringBuilder(differences.get("test.txt")); 098 assertNotNull(addDiffs); 099 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}