1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.scm.tck.command.diff;
20
21 import java.io.File;
22 import java.util.Iterator;
23 import java.util.List;
24 import java.util.Map;
25 import java.util.TreeSet;
26
27 import org.apache.maven.scm.ScmFile;
28 import org.apache.maven.scm.ScmFileSet;
29 import org.apache.maven.scm.ScmTckTestCase;
30 import org.apache.maven.scm.ScmTestCase;
31 import org.apache.maven.scm.ScmVersion;
32 import org.apache.maven.scm.command.diff.DiffScmResult;
33 import org.apache.maven.scm.provider.ScmProvider;
34 import org.apache.maven.scm.repository.ScmRepository;
35 import org.junit.Test;
36
37 import static org.junit.Assert.assertEquals;
38 import static org.junit.Assert.assertNotNull;
39 import static org.junit.Assert.assertTrue;
40
41
42
43
44
45
46
47 public abstract class DiffCommandTckTest extends ScmTckTestCase {
48
49 @Test
50 public void testDiffCommand() throws Exception {
51 ScmRepository repository = getScmRepository();
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 ScmTestCase.makeFile(getWorkingCopy(), "/readme.txt", "changed readme.txt");
68
69
70 ScmTestCase.makeFile(getWorkingCopy(), "/project.xml", "changed project.xml");
71
72 addToWorkingTree(getWorkingCopy(), new File("project.xml"), repository);
73
74
75 ScmTestCase.makeDirectory(getWorkingCopy(), "/src/test/java/org");
76
77 addToWorkingTree(getWorkingCopy(), new File("src/test/java/org"), repository);
78
79
80 ScmTestCase.makeFile(getWorkingCopy(), "/src/main/java/org/Foo.java");
81
82 addToWorkingTree(getWorkingCopy(), new File("src/main/java/org"), repository);
83
84
85 addToWorkingTree(getWorkingCopy(), new File("src/main/java/org/Foo.java"), repository);
86
87
88
89
90
91 ScmProvider provider = getScmManager().getProviderByUrl(getScmUrl());
92 ScmFileSet fileSet = new ScmFileSet(getWorkingCopy());
93 DiffScmResult result = provider.diff(repository, fileSet, null, (ScmVersion) null);
94
95 assertNotNull("The command returned a null result.", result);
96
97 assertResultIsSuccess(result);
98
99 List<ScmFile> changedFiles = result.getChangedFiles();
100
101 Map<String, CharSequence> differences = result.getDifferences();
102
103 assertEquals("Expected 3 files in the changed files list " + changedFiles, 3, changedFiles.size());
104
105 assertEquals("Expected 3 files in the differences list " + differences, 3, differences.size());
106
107
108
109
110
111 Iterator<ScmFile> files = new TreeSet<ScmFile>(changedFiles).iterator();
112
113
114 ScmFile file = files.next();
115
116 assertPath("src/main/java/org/Foo.java", file.getPath());
117
118 assertTrue(file.getStatus().isDiff());
119
120 String postRangeStr = "+/src/main/java/org/Foo.java\n\\ No newline at end of file\n";
121 String actualStr = differences.get(file.getPath()).toString();
122 assertTrue(actualStr.endsWith(postRangeStr));
123
124
125 file = files.next();
126
127 assertPath("readme.txt", file.getPath());
128
129 assertTrue(file.getStatus().isDiff());
130
131 postRangeStr =
132 "-/readme.txt\n\\ No newline at end of file\n+changed readme.txt\n\\ No newline at end of file\n";
133 actualStr = differences.get(file.getPath()).toString();
134 assertTrue(actualStr.endsWith(postRangeStr));
135
136
137 file = files.next();
138
139 assertPath("project.xml", file.getPath());
140
141 postRangeStr = "+changed project.xml\n\\ No newline at end of file\n";
142 actualStr = differences.get(file.getPath()).toString();
143 assertTrue(actualStr.endsWith(postRangeStr));
144
145 assertTrue(file.getStatus().isDiff());
146 }
147 }