28 Commits

Author SHA1 Message Date
Tobias Warneke
1ec708fe30 [maven-release-plugin] prepare release java-diff-utils-parent-4.9 2020-11-01 21:32:21 +01:00
Tobias Warneke
fcf83e918f 2020-11-01 20:03:18 +01:00
Alon Harel
4ee56d2554 make patch serializable (#101) 2020-10-26 13:34:23 +01:00
Tobias Warneke
21f9e9d415 [maven-release-plugin] prepare for next development iteration 2020-09-27 22:08:04 +02:00
Tobias Warneke
76ae5f3b6f [maven-release-plugin] prepare release java-diff-utils-parent-4.8 2020-09-27 22:07:59 +02:00
Tobias Warneke
7d88486bdc 2020-09-27 22:04:44 +02:00
Tobias Warneke
694e93143d 2020-09-27 22:03:18 +02:00
Tobias Warneke
dac751bf73 fixes #98 - deleted file mode 2020-09-27 21:48:59 +02:00
Tobias Warneke
f76abb58f6 improved the documentation of DeltyType a bit
fixed #99
2020-09-27 18:13:03 +02:00
Tobias Warneke
de04bd688a 2020-08-09 21:44:28 +02:00
Tobias Warneke
e38cd3a99f 2020-08-09 21:38:16 +02:00
Tobias Warneke
96f7fbdebd finishes pull request #93 2020-08-04 07:35:09 +02:00
Morten Telling
d3524314eb Mark no file with /dev/null to align with git diff (#93)
If you run git diff locally with a staged new file the diff will indicate that the file did not exist before with `--- /dev/null`.
I believe this should align with this?
2020-08-04 07:29:55 +02:00
Tobias Warneke
85c3199570 changes jgit version 2020-08-04 07:27:41 +02:00
Tobias Warneke
dbe601c2fc fixes #83 2020-07-03 23:44:48 +02:00
Tobias Warneke
fc7c714264 Merge origin/master 2020-07-03 22:59:18 +02:00
Tobias Warneke
dcc29eee7e fixes #84 Seems to be solved by a previous issue. A test case was included from issue 84. 2020-07-03 22:59:04 +02:00
iamhlbx
f0f5d241c7 fixes #89 to get exact add/remove lines'positions (#90) 2020-07-03 16:58:44 +02:00
iamhlbx
e11c1599ee update .gitignore to ignore *.iml files (#88) 2020-07-01 14:25:54 +02:00
Tobias
73c4c307a9 Update CHANGELOG.md 2020-06-21 22:38:11 +02:00
Tobias Warneke
8006986dd8 fixes #85 2020-06-21 02:04:14 +02:00
Tobias Warneke
f292c97dae fixes #79
open #85
2020-06-21 01:29:57 +02:00
Tobias Warneke
7620f919c2 fixes #80 2020-05-24 22:56:28 +02:00
Tobias Warneke
a8e4ce2eff fixes #65 2020-05-17 17:16:14 +02:00
Tobias
9bd7aaa0f2 Update README.md 2020-04-23 23:47:42 +02:00
Tobias
80c17a30d9 Update README.md 2020-04-23 23:21:18 +02:00
Tobias Warneke
b5569703c8 2020-04-23 23:18:28 +02:00
Tobias Warneke
47fe8e0ea6 [maven-release-plugin] prepare for next development iteration 2020-04-23 22:19:33 +02:00
32 changed files with 781 additions and 69 deletions

2
.gitignore vendored
View File

@@ -2,3 +2,5 @@
build/
nbproject/
target/
*.iml

View File

@@ -5,7 +5,23 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
This project uses a custom versioning scheme (and not [Semantic Versioning](https://semver.org/spec/v2.0.0.html)).
## [Unreleased]
## [unreleased]
### Changed
* make patch serializable
## [4.8]
### Changed
* some bugfixes regarding unified diff writer
* UnifiedDiffReader improved for **deleted file mode** and better timestamp recognition
* UnifiedDiffReader improved for **new file mode** and better timestamp recognition
## [4.7]
### Changed
* minor bug fixes
* optional include equal parts of original and revised data

View File

@@ -14,6 +14,10 @@ Main reason to build this library was the lack of easy-to-use libraries with all
**This is originally a fork of java-diff-utils from Google Code Archive.**
## API
Javadocs of the actual release version: [JavaDocs java-diff-utils](https://java-diff-utils.github.io/java-diff-utils/4.7/docs/api/)
## Examples
Look [here](https://github.com/wumpz/java-diff-utils/wiki) to find more helpful informations and examples.

View File

@@ -1 +0,0 @@
theme: jekyll-theme-minimal

View File

@@ -4,7 +4,7 @@
<parent>
<groupId>io.github.java-diff-utils</groupId>
<artifactId>java-diff-utils-parent</artifactId>
<version>4.7</version>
<version>4.9</version>
</parent>
<artifactId>java-diff-utils-jgit</artifactId>
<name>java-diff-utils-jgit</name>
@@ -20,7 +20,7 @@
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
<version>4.4.1.201607150455-r</version>
<version>5.8.1.202007141445-r</version>
<exclusions>
<exclusion>
<groupId>com.googlecode.javaewah</groupId>

View File

@@ -82,6 +82,6 @@ public class HistogramDiffTest {
assertEquals(revList, patched);
System.out.println(logdata);
assertEquals(17, logdata.size());
assertEquals(19, logdata.size());
}
}

View File

@@ -7,7 +7,7 @@
<parent>
<groupId>io.github.java-diff-utils</groupId>
<artifactId>java-diff-utils-parent</artifactId>
<version>4.7</version>
<version>4.9</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -51,6 +51,16 @@
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<trimStackTrace>false</trimStackTrace>
<systemPropertyVariables>
<java.util.logging.config.file>target/test-classes/logging.properties</java.util.logging.config.file>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@@ -33,6 +33,7 @@ public final class UnifiedDiffUtils {
private static final Pattern UNIFIED_DIFF_CHUNK_REGEXP = Pattern
.compile("^@@\\s+-(?:(\\d+)(?:,(\\d+))?)\\s+\\+(?:(\\d+)(?:,(\\d+))?)\\s+@@$");
private static final String NULL_FILE_INDICATOR = "/dev/null";
/**
* Parse the given text in unified format and creates the list of deltas for it.
@@ -97,19 +98,31 @@ public final class UnifiedDiffUtils {
List<String> oldChunkLines = new ArrayList<>();
List<String> newChunkLines = new ArrayList<>();
List<Integer> removePosition = new ArrayList<>();
List<Integer> addPosition = new ArrayList<>();
int removeNum = 0;
int addNum = 0;
for (String[] raw_line : rawChunk) {
tag = raw_line[0];
rest = raw_line[1];
if (" ".equals(tag) || "-".equals(tag)) {
removeNum++;
oldChunkLines.add(rest);
if ("-".equals(tag)) {
removePosition.add(old_ln - 1 + removeNum);
}
}
if (" ".equals(tag) || "+".equals(tag)) {
addNum++;
newChunkLines.add(rest);
if ("+".equals(tag)) {
addPosition.add(new_ln - 1 + addNum);
}
}
}
patch.addDelta(new ChangeDelta<>(new Chunk<>(
old_ln - 1, oldChunkLines), new Chunk<>(
new_ln - 1, newChunkLines)));
old_ln - 1, oldChunkLines, removePosition), new Chunk<>(
new_ln - 1, newChunkLines, addPosition)));
rawChunk.clear();
}
}
@@ -131,8 +144,8 @@ public final class UnifiedDiffUtils {
int contextSize) {
if (!patch.getDeltas().isEmpty()) {
List<String> ret = new ArrayList<>();
ret.add("--- " + Optional.ofNullable(originalFileName).orElse(""));
ret.add("+++ " + Optional.ofNullable(revisedFileName).orElse(""));
ret.add("--- " + Optional.ofNullable(originalFileName).orElse(NULL_FILE_INDICATOR));
ret.add("+++ " + Optional.ofNullable(revisedFileName).orElse(NULL_FILE_INDICATOR));
List<AbstractDelta<String>> patchDeltas = new ArrayList<>(
patch.getDeltas());

View File

@@ -15,6 +15,7 @@
*/
package com.github.difflib.patch;
import java.io.Serializable;
import java.util.List;
import java.util.Objects;
@@ -22,7 +23,7 @@ import java.util.Objects;
* Abstract delta between a source and a target.
* @author Tobias Warneke (t.warneke@gmx.net)
*/
public abstract class AbstractDelta<T> {
public abstract class AbstractDelta<T> implements Serializable {
private final Chunk<T> source;
private final Chunk<T> target;
private final DeltaType type;

View File

@@ -15,6 +15,7 @@
*/
package com.github.difflib.patch;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -33,10 +34,24 @@ import java.util.Objects;
* @author <a href="dm.naumenko@gmail.com>Dmitry Naumenko</a>
* @param <T> The type of the compared elements in the 'lines'.
*/
public final class Chunk<T> {
public final class Chunk<T> implements Serializable {
private final int position;
private List<T> lines;
private final List<Integer> changePosition;
/**
* Creates a chunk and saves a copy of affected lines
*
* @param position the start position
* @param lines the affected lines
* @param changePosition the positions of changed lines
*/
public Chunk(int position, List<T> lines, List<Integer> changePosition) {
this.position = position;
this.lines = new ArrayList<>(lines);
this.changePosition = changePosition;
}
/**
* Creates a chunk and saves a copy of affected lines
@@ -45,8 +60,20 @@ public final class Chunk<T> {
* @param lines the affected lines
*/
public Chunk(int position, List<T> lines) {
this(position, lines, null);
}
/**
* Creates a chunk and saves a copy of affected lines
*
* @param position the start position
* @param lines the affected lines
* @param changePosition the positions of changed lines
*/
public Chunk(int position, T[] lines, List<Integer> changePosition) {
this.position = position;
this.lines = new ArrayList<>(lines);
this.lines = Arrays.asList(lines);
this.changePosition = changePosition;
}
/**
@@ -56,8 +83,7 @@ public final class Chunk<T> {
* @param lines the affected lines
*/
public Chunk(int position, T[] lines) {
this.position = position;
this.lines = Arrays.asList(lines);
this(position, lines, null);
}
/**
@@ -96,6 +122,13 @@ public final class Chunk<T> {
return lines;
}
/**
* @return the positions of changed lines of chunk in the text
*/
public List<Integer> getChangePosition() {
return changePosition;
}
public int size() {
return lines.size();
}

View File

@@ -16,7 +16,18 @@
package com.github.difflib.patch;
/**
* Specifies the type of the delta.
* Specifies the type of the delta. There are three types of modifications from
* the original to get the revised text.
*
* CHANGE: a block of data of the original is replaced by another block of data.
* DELETE: a block of data of the original is removed
* INSERT: at a position of the original a block of data is inserted
*
* to be complete there is also
*
* EQUAL: a block of data of original and the revised text is equal
*
* which is no change at all.
*
*/
public enum DeltaType {

View File

@@ -21,6 +21,8 @@ package com.github.difflib.patch;
import static java.util.Comparator.comparing;
import com.github.difflib.algorithm.Change;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -32,7 +34,7 @@ import java.util.ListIterator;
* @author <a href="dm.naumenko@gmail.com">Dmitry Naumenko</a>
* @param <T> The type of the compared elements in the 'lines'.
*/
public final class Patch<T> {
public final class Patch<T> implements Serializable {
private final List<AbstractDelta<T>> deltas;

View File

@@ -61,6 +61,7 @@ public final class DiffRowGenerator {
}
return list;
};
public static final Pattern SPLIT_BY_WORD_PATTERN = Pattern.compile("\\s+|[,.\\[\\](){}/\\\\*+\\-#]");
/**
@@ -106,7 +107,7 @@ public final class DiffRowGenerator {
*/
static void wrapInTag(List<String> sequence, int startPosition,
int endPosition, Tag tag, BiFunction<Tag, Boolean, String> tagGenerator,
Function<String, String> processDiffs) {
Function<String, String> processDiffs, boolean replaceLinefeedWithSpace) {
int endPos = endPosition;
while (endPos >= startPosition) {
@@ -115,6 +116,9 @@ public final class DiffRowGenerator {
while (endPos > startPosition) {
if (!"\n".equals(sequence.get(endPos - 1))) {
break;
} else if (replaceLinefeedWithSpace) {
sequence.set(endPos - 1, " ");
break;
}
endPos--;
}
@@ -133,7 +137,11 @@ public final class DiffRowGenerator {
//search position for end tag
while (endPos > startPosition) {
if ("\n".equals(sequence.get(endPos - 1))) {
break;
if (replaceLinefeedWithSpace) {
sequence.set(endPos - 1, " ");
} else {
break;
}
}
if (processDiffs != null) {
sequence.set(endPos - 1,
@@ -159,6 +167,7 @@ public final class DiffRowGenerator {
private final Function<String, String> processDiffs;
private final boolean showInlineDiffs;
private final boolean replaceOriginalLinefeedInChangesWithSpaces;
private DiffRowGenerator(Builder builder) {
showInlineDiffs = builder.showInlineDiffs;
@@ -178,6 +187,8 @@ public final class DiffRowGenerator {
reportLinesUnchanged = builder.reportLinesUnchanged;
lineNormalizer = builder.lineNormalizer;
processDiffs = builder.processDiffs;
replaceOriginalLinefeedInChangesWithSpaces = builder.replaceOriginalLinefeedInChangesWithSpaces;
Objects.requireNonNull(inlineDiffSplitter);
Objects.requireNonNull(lineNormalizer);
@@ -313,7 +324,7 @@ public final class DiffRowGenerator {
if (inlineDelta.getType() == DeltaType.DELETE) {
wrapInTag(origList, inlineOrig.getPosition(), inlineOrig
.getPosition()
+ inlineOrig.size(), Tag.DELETE, oldTag, processDiffs);
+ inlineOrig.size(), Tag.DELETE, oldTag, processDiffs, replaceOriginalLinefeedInChangesWithSpaces && mergeOriginalRevised);
} else if (inlineDelta.getType() == DeltaType.INSERT) {
if (mergeOriginalRevised) {
origList.addAll(inlineOrig.getPosition(),
@@ -321,11 +332,11 @@ public final class DiffRowGenerator {
inlineRev.getPosition() + inlineRev.size()));
wrapInTag(origList, inlineOrig.getPosition(),
inlineOrig.getPosition() + inlineRev.size(),
Tag.INSERT, newTag, processDiffs);
Tag.INSERT, newTag, processDiffs, false);
} else {
wrapInTag(revList, inlineRev.getPosition(),
inlineRev.getPosition() + inlineRev.size(),
Tag.INSERT, newTag, processDiffs);
Tag.INSERT, newTag, processDiffs, false);
}
} else if (inlineDelta.getType() == DeltaType.CHANGE) {
if (mergeOriginalRevised) {
@@ -334,15 +345,15 @@ public final class DiffRowGenerator {
inlineRev.getPosition() + inlineRev.size()));
wrapInTag(origList, inlineOrig.getPosition() + inlineOrig.size(),
inlineOrig.getPosition() + inlineOrig.size() + inlineRev.size(),
Tag.CHANGE, newTag, processDiffs);
Tag.CHANGE, newTag, processDiffs, false);
} else {
wrapInTag(revList, inlineRev.getPosition(),
inlineRev.getPosition() + inlineRev.size(),
Tag.CHANGE, newTag, processDiffs);
Tag.CHANGE, newTag, processDiffs, false);
}
wrapInTag(origList, inlineOrig.getPosition(),
inlineOrig.getPosition() + inlineOrig.size(),
Tag.CHANGE, oldTag, processDiffs);
Tag.CHANGE, oldTag, processDiffs, replaceOriginalLinefeedInChangesWithSpaces && mergeOriginalRevised);
}
}
StringBuilder origResult = new StringBuilder();
@@ -385,10 +396,10 @@ public final class DiffRowGenerator {
private boolean showInlineDiffs = false;
private boolean ignoreWhiteSpaces = false;
private BiFunction<Tag, Boolean, String> oldTag =
(tag, f) -> f ? "<span class=\"editOldInline\">" : "</span>";
private BiFunction<Tag, Boolean, String> newTag =
(tag, f) -> f ? "<span class=\"editNewInline\">" : "</span>";
private BiFunction<Tag, Boolean, String> oldTag
= (tag, f) -> f ? "<span class=\"editOldInline\">" : "</span>";
private BiFunction<Tag, Boolean, String> newTag
= (tag, f) -> f ? "<span class=\"editNewInline\">" : "</span>";
private int columnWidth = 0;
private boolean mergeOriginalRevised = false;
@@ -397,6 +408,7 @@ public final class DiffRowGenerator {
private Function<String, String> lineNormalizer = LINE_NORMALIZER_FOR_HTML;
private Function<String, String> processDiffs = null;
private BiPredicate<String, String> equalizer = null;
private boolean replaceOriginalLinefeedInChangesWithSpaces = false;
private Builder() {
}
@@ -445,7 +457,7 @@ public final class DiffRowGenerator {
this.oldTag = generator;
return this;
}
/**
* Generator for Old-Text-Tags.
*
@@ -467,7 +479,7 @@ public final class DiffRowGenerator {
this.newTag = generator;
return this;
}
/**
* Generator for New-Text-Tags.
*
@@ -494,8 +506,8 @@ public final class DiffRowGenerator {
/**
* Set the column width of generated lines of original and revised texts.
*
* @param width the width to set. Making it < 0 doesn't have any sense. Default 80. @return
* builder with config ured ignoreBlankLines parameter
* @param width the width to set. Making it < 0 doesn't make any sense. Default 80.
* @return builder with config of column width
*/
public Builder columnWidth(int width) {
if (width >= 0) {
@@ -575,5 +587,17 @@ public final class DiffRowGenerator {
this.equalizer = equalizer;
return this;
}
/**
* Sometimes it happens that a change contains multiple lines. If there is no correspondence
* in old and new. To keep the merged line more readable the linefeeds could be replaced
* by spaces.
* @param replace
* @return
*/
public Builder replaceOriginalLinefeedInChangesWithSpaces(boolean replace) {
this.replaceOriginalLinefeedInChangesWithSpaces = replace;
return this;
}
}
}

View File

@@ -29,6 +29,8 @@ public final class UnifiedDiffFile {
private String toFile;
private String toTimestamp;
private String index;
private String newFileMode;
private String deletedFileMode;
private Patch<String> patch = new Patch<>();
public String getDiffCommand() {
@@ -92,4 +94,20 @@ public final class UnifiedDiffFile {
file.patch = patch;
return file;
}
public void setNewFileMode(String newFileMode) {
this.newFileMode = newFileMode;
}
public String getNewFileMode() {
return newFileMode;
}
public String getDeletedFileMode() {
return deletedFileMode;
}
public void setDeletedFileMode(String deletedFileMode) {
this.deletedFileMode = deletedFileMode;
}
}

View File

@@ -39,7 +39,7 @@ import java.util.regex.Pattern;
public final class UnifiedDiffReader {
static final Pattern UNIFIED_DIFF_CHUNK_REGEXP = Pattern.compile("^@@\\s+-(?:(\\d+)(?:,(\\d+))?)\\s+\\+(?:(\\d+)(?:,(\\d+))?)\\s+@@");
static final Pattern TIMESTAMP_REGEXP = Pattern.compile("(\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}\\.\\d{3,})");
static final Pattern TIMESTAMP_REGEXP = Pattern.compile("(\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}\\.\\d{3,})(?: [+-]\\d+)?");
private final InternalUnifiedDiffReader READER;
private final UnifiedDiff data = new UnifiedDiff();
@@ -49,6 +49,10 @@ public final class UnifiedDiffReader {
private final UnifiedDiffLine FROM_FILE = new UnifiedDiffLine(true, "^---\\s", this::processFromFile);
private final UnifiedDiffLine TO_FILE = new UnifiedDiffLine(true, "^\\+\\+\\+\\s", this::processToFile);
private final UnifiedDiffLine NEW_FILE_MODE = new UnifiedDiffLine(true, "^new\\sfile\\smode\\s(\\d+)", this::processNewFileMode);
private final UnifiedDiffLine DELETED_FILE_MODE = new UnifiedDiffLine(true, "^deleted\\sfile\\smode\\s(\\d+)", this::processDeletedFileMode);
private final UnifiedDiffLine CHUNK = new UnifiedDiffLine(false, UNIFIED_DIFF_CHUNK_REGEXP, this::processChunk);
private final UnifiedDiffLine LINE_NORMAL = new UnifiedDiffLine("^\\s", this::processNormalLine);
private final UnifiedDiffLine LINE_DEL = new UnifiedDiffLine("^-", this::processDelLine);
@@ -66,13 +70,14 @@ public final class UnifiedDiffReader {
// [/^-/, del], [/^\+/, add], [/^\\ No newline at end of file$/, eof]];
private UnifiedDiff parse() throws IOException, UnifiedDiffParserException {
String headerTxt = "";
LOG.log(Level.INFO, "header parsing");
LOG.log(Level.FINE, "header parsing");
String line = null;
while (READER.ready()) {
line = READER.readLine();
LOG.log(Level.INFO, "parsing line {0}", line);
LOG.log(Level.FINE, "parsing line {0}", line);
if (DIFF_COMMAND.validLine(line) || INDEX.validLine(line)
|| FROM_FILE.validLine(line) || TO_FILE.validLine(line)) {
|| FROM_FILE.validLine(line) || TO_FILE.validLine(line)
|| NEW_FILE_MODE.validLine(line)) {
break;
} else {
headerTxt += line + "\n";
@@ -85,26 +90,28 @@ public final class UnifiedDiffReader {
while (line != null) {
if (!CHUNK.validLine(line)) {
initFileIfNecessary();
while (!CHUNK.validLine(line)) {
if (processLine(line, DIFF_COMMAND, INDEX, FROM_FILE, TO_FILE) == false) {
while (line != null && !CHUNK.validLine(line)) {
if (processLine(line, DIFF_COMMAND, INDEX, FROM_FILE, TO_FILE, NEW_FILE_MODE, DELETED_FILE_MODE) == false) {
throw new UnifiedDiffParserException("expected file start line not found");
}
line = READER.readLine();
}
}
processLine(line, CHUNK);
while ((line = READER.readLine()) != null) {
if (processLine(line, LINE_NORMAL, LINE_ADD, LINE_DEL) == false) {
throw new UnifiedDiffParserException("expected data line not found");
}
if ((originalTxt.size() == old_size && revisedTxt.size() == new_size)
|| (old_size==0 && new_size==0 && originalTxt.size() == this.old_ln
if (line != null) {
processLine(line, CHUNK);
while ((line = READER.readLine()) != null) {
if (processLine(line, LINE_NORMAL, LINE_ADD, LINE_DEL) == false) {
throw new UnifiedDiffParserException("expected data line not found");
}
if ((originalTxt.size() == old_size && revisedTxt.size() == new_size)
|| (old_size == 0 && new_size == 0 && originalTxt.size() == this.old_ln
&& revisedTxt.size() == this.new_ln)) {
finalizeChunk();
break;
finalizeChunk();
break;
}
}
line = READER.readLine();
}
line = READER.readLine();
if (line == null || line.startsWith("--")) {
break;
}
@@ -113,7 +120,10 @@ public final class UnifiedDiffReader {
if (READER.ready()) {
String tailTxt = "";
while (READER.ready()) {
tailTxt += READER.readLine() + "\n";
if (tailTxt.length() > 0) {
tailTxt += "\n";
}
tailTxt += READER.readLine();
}
data.setTailTxt(tailTxt);
}
@@ -137,13 +147,16 @@ public final class UnifiedDiffReader {
}
private boolean processLine(String line, UnifiedDiffLine... rules) throws UnifiedDiffParserException {
if (line == null) {
return false;
}
for (UnifiedDiffLine rule : rules) {
if (rule.processLine(line)) {
LOG.info(" >>> processed rule " + rule.toString());
LOG.fine(" >>> processed rule " + rule.toString());
return true;
}
}
LOG.info(" >>> no rule matched " + line);
LOG.warning(" >>> no rule matched " + line);
return false;
//throw new UnifiedDiffParserException("parsing error at line " + line);
}
@@ -161,7 +174,7 @@ public final class UnifiedDiffReader {
private void processDiff(MatchResult match, String line) {
//initFileIfNecessary();
LOG.log(Level.INFO, "start {0}", line);
LOG.log(Level.FINE, "start {0}", line);
String[] fromTo = parseFileNames(READER.lastLine());
actualFile.setFromFile(fromTo[0]);
actualFile.setToFile(fromTo[1]);
@@ -223,7 +236,7 @@ public final class UnifiedDiffReader {
private void processIndex(MatchResult match, String line) {
//initFileIfNecessary();
LOG.log(Level.INFO, "index {0}", line);
LOG.log(Level.FINE, "index {0}", line);
actualFile.setIndex(line.substring(6));
}
@@ -239,14 +252,25 @@ public final class UnifiedDiffReader {
actualFile.setToTimestamp(extractTimestamp(line));
}
private void processNewFileMode(MatchResult match, String line) {
//initFileIfNecessary();
actualFile.setNewFileMode(match.group(1));
}
private void processDeletedFileMode(MatchResult match, String line) {
//initFileIfNecessary();
actualFile.setDeletedFileMode(match.group(1));
}
private String extractFileName(String _line) {
Matcher matcher = TIMESTAMP_REGEXP.matcher(_line);
String line = _line;
if (matcher.find()) {
line = line.substring(0, matcher.start());
}
line = line.split("\t")[0];
return line.substring(4).replaceFirst("^(a|b|old|new)(\\/)?", "")
.replace(TIMESTAMP_REGEXP.toString(), "").trim();
.trim();
}
private String extractTimestamp(String line) {

View File

@@ -59,7 +59,7 @@ public class UnifiedDiffWriter {
writer.accept("index " + file.getIndex());
}
writer.accept("--- " + file.getFromFile());
writer.accept("--- " + (file.getFromFile() == null ? "/dev/null" : file.getFromFile()));
if (file.getToFile() != null) {
writer.accept("+++ " + file.getToFile());
@@ -96,7 +96,7 @@ public class UnifiedDiffWriter {
}
// don't forget to process the last set of Deltas
processDeltas(writer, originalLines, deltas, contextSize,
processDeltas(writer, originalLines, deltas, contextSize,
patchDeltas.size() == 1 && file.getFromFile() == null);
}
@@ -156,7 +156,7 @@ public class UnifiedDiffWriter {
AbstractDelta<String> nextDelta = deltas.get(deltaIndex);
int intermediateStart = curDelta.getSource().getPosition()
+ curDelta.getSource().getLines().size();
for (line = intermediateStart; line < nextDelta.getSource().getPosition()
for (line = intermediateStart; line < nextDelta.getSource().getPosition()
&& line < origLines.size(); line++) {
// output the code between the last Delta and this one
buffer.add(" " + origLines.get(line));

View File

@@ -1,5 +1,6 @@
package com.github.difflib;
import com.github.difflib.patch.Chunk;
import com.github.difflib.patch.Patch;
import com.github.difflib.patch.PatchFailedException;
import java.io.BufferedReader;
@@ -8,9 +9,11 @@ import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import static java.util.stream.Collectors.joining;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
import org.junit.jupiter.api.Test;
@@ -119,13 +122,51 @@ public class GenerateUnifiedDiffTest {
List<String> udiff = UnifiedDiffUtils.generateUnifiedDiff(null, "revised",
original, patch, 10);
assertEquals("--- ", udiff.get(0));
assertEquals("--- /dev/null", udiff.get(0));
assertEquals("+++ revised", udiff.get(1));
assertEquals("@@ -0,0 +1,2 @@", udiff.get(2));
UnifiedDiffUtils.parseUnifiedDiff(udiff);
}
/**
* Issue 89
*/
@Test
public void testChagngePosition() throws IOException {
final List<String> patchLines = fileToLines(TestConstants.MOCK_FOLDER + "issue89_patch.txt");
final Patch<String> patch = UnifiedDiffUtils.parseUnifiedDiff(patchLines);
List<Integer> realRemoveListOne = Collections.singletonList(3);
List<Integer> realAddListOne = Arrays.asList(3, 7, 8, 9, 10, 11, 12, 13, 14);
validateChangePosition(patch, 0, realRemoveListOne, realAddListOne);
List<Integer> realRemoveListTwo = new ArrayList<>();
List<Integer> realAddListTwo = Arrays.asList(27, 28);
validateChangePosition(patch, 1, realRemoveListTwo, realAddListTwo);
}
private void validateChangePosition(Patch<String> patch, int index, List<Integer> realRemoveList,
List<Integer> realAddList ) {
final Chunk originChunk = patch.getDeltas().get(index).getSource();
List<Integer> removeList = originChunk.getChangePosition();
assertEquals(realRemoveList.size(), removeList.size());
for (Integer ele: realRemoveList) {
assertTrue(realRemoveList.contains(ele));
}
for (Integer ele: removeList) {
assertTrue(realAddList.contains(ele));
}
final Chunk targetChunk = patch.getDeltas().get(index).getTarget();
List<Integer> addList = targetChunk.getChangePosition();
assertEquals(realAddList.size(), addList.size());
for (Integer ele: realAddList) {
assertTrue(addList.contains(ele));
}
for (Integer ele: addList) {
assertTrue(realAddList.contains(ele));
}
}
private void verify(List<String> origLines, List<String> revLines,
String originalFile, String revisedFile) {
Patch<String> patch = DiffUtils.diff(origLines, revLines);

View File

@@ -1,12 +1,20 @@
package com.github.difflib.patch;
import com.github.difflib.DiffUtils;
import java.util.Arrays;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.fail;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Arrays;
import java.util.List;
import org.junit.jupiter.api.Test;
import com.github.difflib.DiffUtils;
public class PatchTest {
@Test
@@ -47,4 +55,27 @@ public class PatchTest {
fail(e.getMessage());
}
}
@Test
public void testPatch_Serializable() throws IOException, ClassNotFoundException {
final List<String> changeTest_from = Arrays.asList("aaa", "bbb", "ccc", "ddd");
final List<String> changeTest_to = Arrays.asList("aaa", "bxb", "cxc", "ddd");
final Patch<String> patch = DiffUtils.diff(changeTest_from, changeTest_to);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(baos);
out.writeObject(patch);
out.close();
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream in = new ObjectInputStream(bais);
Patch<String> result = (Patch<String>) in.readObject();
in.close();
try {
assertEquals(changeTest_to, DiffUtils.patch(changeTest_from, result));
} catch (PatchFailedException e) {
fail(e.getMessage());
}
}
}

View File

@@ -3,10 +3,12 @@ package com.github.difflib.text;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.regex.Pattern;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -498,4 +500,125 @@ public class DiffRowGeneratorTest {
assertEquals("This~//~**/**is~//~**/**a~//~**/**test~.~", rows.get(0).getOldLine());
}
@Test
public void testProblemTooManyDiffRowsIssue65() {
DiffRowGenerator generator = DiffRowGenerator.create()
.showInlineDiffs(true)
.reportLinesUnchanged(true)
.oldTag(f -> "~")
.newTag(f -> "**")
.mergeOriginalRevised(true)
.inlineDiffByWord(false)
.replaceOriginalLinefeedInChangesWithSpaces(true)
.build();
List<DiffRow> diffRows = generator.generateDiffRows(
Arrays.asList("Ich möchte nicht mit einem Bot sprechen.", "Ich soll das schon wieder wiederholen?"),
Arrays.asList("Ich möchte nicht mehr mit dir sprechen. Leite mich weiter.", "Kannst du mich zum Kundendienst weiterleiten?"));
print(diffRows);
assertThat(diffRows).hasSize(2);
}
@Test
public void testProblemTooManyDiffRowsIssue65_NoMerge() {
DiffRowGenerator generator = DiffRowGenerator.create()
.showInlineDiffs(true)
.reportLinesUnchanged(true)
.oldTag(f -> "~")
.newTag(f -> "**")
.mergeOriginalRevised(false)
.inlineDiffByWord(false)
.build();
List<DiffRow> diffRows = generator.generateDiffRows(
Arrays.asList("Ich möchte nicht mit einem Bot sprechen.", "Ich soll das schon wieder wiederholen?"),
Arrays.asList("Ich möchte nicht mehr mit dir sprechen. Leite mich weiter.", "Kannst du mich zum Kundendienst weiterleiten?"));
System.out.println(diffRows);
assertThat(diffRows).hasSize(2);
}
@Test
public void testProblemTooManyDiffRowsIssue65_DiffByWord() {
DiffRowGenerator generator = DiffRowGenerator.create()
.showInlineDiffs(true)
.reportLinesUnchanged(true)
.oldTag(f -> "~")
.newTag(f -> "**")
.mergeOriginalRevised(true)
.inlineDiffByWord(true)
.build();
List<DiffRow> diffRows = generator.generateDiffRows(
Arrays.asList("Ich möchte nicht mit einem Bot sprechen.", "Ich soll das schon wieder wiederholen?"),
Arrays.asList("Ich möchte nicht mehr mit dir sprechen. Leite mich weiter.", "Kannst du mich zum Kundendienst weiterleiten?"));
System.out.println(diffRows);
assertThat(diffRows).hasSize(2);
}
@Test
public void testProblemTooManyDiffRowsIssue65_NoInlineDiff() {
DiffRowGenerator generator = DiffRowGenerator.create()
.showInlineDiffs(false)
.reportLinesUnchanged(true)
.oldTag(f -> "~")
.newTag(f -> "**")
.mergeOriginalRevised(true)
.inlineDiffByWord(false)
.build();
List<DiffRow> diffRows = generator.generateDiffRows(
Arrays.asList("Ich möchte nicht mit einem Bot sprechen.", "Ich soll das schon wieder wiederholen?"),
Arrays.asList("Ich möchte nicht mehr mit dir sprechen. Leite mich weiter.", "Kannst du mich zum Kundendienst weiterleiten?"));
System.out.println(diffRows);
assertThat(diffRows).hasSize(2);
}
@Test
public void testLinefeedInStandardTagsWithLineWidthIssue81() {
List<String> original = Arrays.asList(("American bobtail jaguar. American bobtail bombay but turkish angora and tomcat.\n"
+ "Russian blue leopard. Lion. Tabby scottish fold for russian blue, so savannah yet lynx. Tomcat singapura, cheetah.\n"
+ "Bengal tiger panther but singapura but bombay munchkin for cougar.").split("\n"));
List<String> revised = Arrays.asList(("bobtail jaguar. American bobtail turkish angora and tomcat.\n"
+ "Russian blue leopard. Lion. Tabby scottish folded for russian blue, so savannah yettie? lynx. Tomcat singapura, cheetah.\n"
+ "Bengal tiger panther but singapura but bombay munchkin for cougar. And more.").split("\n"));
DiffRowGenerator generator = DiffRowGenerator.create()
.showInlineDiffs(true)
.ignoreWhiteSpaces(true)
.columnWidth(100)
.build();
List<DiffRow> deltas = generator.generateDiffRows(original, revised);
System.out.println(deltas);
}
@Test
public void testIssue86WrongInlineDiff() throws IOException {
String original = Files.lines(Paths.get("target/test-classes/com/github/difflib/text/issue_86_original.txt")).collect(joining("\n"));
String revised = Files.lines(Paths.get("target/test-classes/com/github/difflib/text/issue_86_revised.txt")).collect(joining("\n"));
DiffRowGenerator generator = DiffRowGenerator.create()
.showInlineDiffs(true)
.mergeOriginalRevised(false)
.inlineDiffByWord(true)
.oldTag( f -> "~" )
.newTag( f -> "**" )
.build();
List<DiffRow> rows = generator.generateDiffRows(
Arrays.asList(original.split("\n")),
Arrays.asList(revised.split("\n")));
for (DiffRow diff : rows) {
System.out.println(diff);
}
}
}

View File

@@ -21,6 +21,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
@@ -42,7 +43,7 @@ public class UnifiedDiffReaderTest {
assertThat(file1.getFromFile()).isEqualTo("src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt");
assertThat(file1.getPatch().getDeltas().size()).isEqualTo(3);
assertThat(diff.getTail()).isEqualTo("2.17.1.windows.2\n\n");
assertThat(diff.getTail()).isEqualTo("2.17.1.windows.2\n");
}
@Test
@@ -100,7 +101,7 @@ public class UnifiedDiffReaderTest {
assertThat(first.getSource().size()).isGreaterThan(0);
assertThat(first.getTarget().size()).isGreaterThan(0);
assertThat(diff.getTail()).isEqualTo("2.17.1.windows.2\n\n");
assertThat(diff.getTail()).isEqualTo("2.17.1.windows.2\n");
}
@Test
@@ -141,7 +142,7 @@ public class UnifiedDiffReaderTest {
assertThat(diff.getTail()).isNull();
assertThat(diff.getHeader()).isNull();
}
@Test
public void testParseIssue51() throws IOException {
UnifiedDiff diff = UnifiedDiffReader.parseUnifiedDiff(
@@ -154,7 +155,85 @@ public class UnifiedDiffReaderTest {
UnifiedDiffFile file1 = diff.getFiles().get(0);
assertThat(file1.getFromFile()).isEqualTo("f1");
assertThat(file1.getPatch().getDeltas().size()).isEqualTo(1);
UnifiedDiffFile file2 = diff.getFiles().get(1);
assertThat(file2.getFromFile()).isEqualTo("f2");
assertThat(file2.getPatch().getDeltas().size()).isEqualTo(1);
assertThat(diff.getTail()).isNull();
}
@Test
public void testParseIssue79() throws IOException {
UnifiedDiff diff = UnifiedDiffReader.parseUnifiedDiff(
UnifiedDiffReaderTest.class.getResourceAsStream("problem_diff_issue79.diff"));
assertThat(diff.getFiles().size()).isEqualTo(1);
UnifiedDiffFile file1 = diff.getFiles().get(0);
assertThat(file1.getFromFile()).isEqualTo("test/Issue.java");
assertThat(file1.getPatch().getDeltas().size()).isEqualTo(0);
assertThat(diff.getTail()).isNull();
assertThat(diff.getHeader()).isNull();
}
@Test
public void testParseIssue84() throws IOException {
UnifiedDiff diff = UnifiedDiffReader.parseUnifiedDiff(
UnifiedDiffReaderTest.class.getResourceAsStream("problem_diff_issue84.diff"));
assertThat(diff.getFiles().size()).isEqualTo(2);
UnifiedDiffFile file1 = diff.getFiles().get(0);
assertThat(file1.getFromFile()).isEqualTo("config/ant-phase-verify.xml");
assertThat(file1.getPatch().getDeltas().size()).isEqualTo(1);
UnifiedDiffFile file2 = diff.getFiles().get(1);
assertThat(file2.getFromFile()).isEqualTo("/dev/null");
assertThat(file2.getPatch().getDeltas().size()).isEqualTo(1);
assertThat(diff.getTail()).isEqualTo("2.7.4");
assertThat(diff.getHeader()).startsWith("From b53e612a2ab5ff15d14860e252f84c0f343fe93a Mon Sep 17 00:00:00 2001");
}
@Test
public void testParseIssue85() throws IOException {
UnifiedDiff diff = UnifiedDiffReader.parseUnifiedDiff(
UnifiedDiffReaderTest.class.getResourceAsStream("problem_diff_issue85.diff"));
assertThat(diff.getFiles().size()).isEqualTo(1);
assertEquals(1, diff.getFiles().size());
final UnifiedDiffFile file1 = diff.getFiles().get(0);
assertEquals("diff -r 83e41b73d115 -r a4438263b228 tests/test-check-pyflakes.t",
file1.getDiffCommand());
assertEquals("tests/test-check-pyflakes.t", file1.getFromFile());
assertEquals("tests/test-check-pyflakes.t", file1.getToFile());
assertEquals(1, file1.getPatch().getDeltas().size());
assertNull(diff.getTail());
}
@Test
public void testTimeStampRegexp() {
assertThat("2019-04-18 13:49:39.516149751 +0200").matches(UnifiedDiffReader.TIMESTAMP_REGEXP);
}
@Test
public void testParseIssue98() throws IOException {
UnifiedDiff diff = UnifiedDiffReader.parseUnifiedDiff(
UnifiedDiffReaderTest.class.getResourceAsStream("problem_diff_issue98.diff"));
assertThat(diff.getFiles().size()).isEqualTo(1);
assertEquals(1, diff.getFiles().size());
final UnifiedDiffFile file1 = diff.getFiles().get(0);
assertEquals("100644",
file1.getDeletedFileMode());
assertEquals("src/test/java/se/bjurr/violations/lib/model/ViolationTest.java", file1.getFromFile());
assertThat(diff.getTail()).isEqualTo("2.25.1");
}
}

View File

@@ -72,7 +72,7 @@ public class UnifiedDiffWriterTest {
String[] lines = writer.toString().split("\\n");
assertEquals("--- null", lines[0]);
assertEquals("--- /dev/null", lines[0]);
assertEquals("+++ revised", lines[1]);
assertEquals("@@ -0,0 +1,2 @@", lines[2]);
}

View File

@@ -0,0 +1,7 @@
MessageTime,MessageType,Instrument,InstrumentState,TradePrice,TradeVolume,TradeCond,TradeId,AskPrice1,AskVol1,BidPrice1,BidVol1,AskPrice2,AskVol2,BidPrice2,BidVol2,AskPrice3,AskVol3,BidPrice3,BidVol3,AskPrice4,AskVol4,BidPrice4,BidVol4,AskPrice5,AskVol5,BidPrice5,BidVol5
2020-04-04T08:00:00.000Z,S,HHD_MAY20,Open,,,,,,,,,,,,,,,,,,,,,,,,
2020-04-04T08:00:00.000Z,S,FHK_C23.5_MAY20,Open,,,,,,,,,,,,,,,,,,,,,,,,
2020-04-04T13:49:11.522Z,Q,HHD_MAY20,,,,,,2.6,10,2.6,10,,,,,,,,,,,,,,,,
2020-04-04T13:49:18.210Z,T,HHD_MAY20,,2.6,1,Screen,0,,,,,,,,,,,,,,,,,,,,
2020-04-04T17:00:00.000Z,S,HHD_MAY20,Close,,,,,,,,,,,,,,,,,,,,,,,,
2020-04-04T17:00:00.000Z,S,FHK_C23.5_MAY20,Close,,,,,,,,,,,,,,,,,,,,,,,,

View File

@@ -0,0 +1,8 @@
MessageTime,MessageType,Instrument,InstrumentState,TradePrice,TradeVolume,TradeCond,TradeId,AskPrice1,AskVol1,BidPrice1,BidVol1,AskPrice2,AskVol2,BidPrice2,BidVol2,AskPrice3,AskVol3,BidPrice3,BidVol3,AskPrice4,AskVol4,BidPrice4,BidVol4,AskPrice5,AskVol5,BidPrice5,BidVol5
2020-04-02T08:00:00.000Z,S,HHD_MAY20,Open,,,,,,,,,,,,,,,,,,,,,,,,
2020-04-02T08:00:00.000Z,S,FHK_C23.5_MAY20,Open,,,,,,,,,,,,,,,,,,,,,,,,
2020-04-04T13:49:11.522Z,Q,HHD_MAY20,,,,,,2.6,10,2.6,10,,,,,,,,,,,,,,,,
2020-04xs-04T17dw:00:00.000Z,Sdwdw,HHD_MAY20dwdw,Closdwde,,,,,,,,,,,,,,,,,,,,,,,,
2020-04-04T13:49:18.210Z,T,HHD_MAY20,,2.6,2,Screen,0,,,,,,,,,,,,,,,,,,,,
2020-04-04T17:00:00.000Z,S,HHD_MAY20,Close,,,,,,,,,,,,,,,,,,,,,,,,
2020-04-04T17:00:00.000Z,S,FHK_C23.5_MAY20,Close,,,,,,,,,,,,,,,,,,,,,,,,

View File

@@ -8,4 +8,5 @@ diff -U0 old/f2 new/f2
--- old/f2 2019-09-25 14:38:14.000000000 +0200
+++ new/f2 2019-09-25 14:38:32.000000000 +0200
@@ -1 +1 @@
-a\nc
-a\nc
+a\nb\nd

View File

@@ -0,0 +1,3 @@
diff --git a/test/Issue.java b/test/Issue.java
new file mode 100644
index 00000000..9702606e

View File

@@ -0,0 +1,109 @@
From b53e612a2ab5ff15d14860e252f84c0f343fe93a Mon Sep 17 00:00:00 2001
From: nmancus1 <nmancus1
Date: Thu, 4 Jun 2020 11:46:34 -0400
Subject: [PATCH] minor: Add input file for Java14 instanceof with pattern
matching (#7290)
---
config/ant-phase-verify.xml | 2 +
.../InputJava14InstanceofWithPatternMatching.java | 76 ++++++++++++++++++++++
2 files changed, 78 insertions(+)
create mode 100644 src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammar/java14/InputJava14InstanceofWithPatternMatching.java
diff --git a/config/ant-phase-verify.xml b/config/ant-phase-verify.xml
index d27ffef..e0285ce 100644
--- a/config/ant-phase-verify.xml
+++ b/config/ant-phase-verify.xml
@@ -148,6 +148,8 @@
<exclude name="**/InputMainFrameModelIncorrectClass.java"/>
<exclude name="**/InputBeforeExecutionExclusionFileFilterIncorrectClass.java"/>
<exclude name="**/InputJavaParser.java"/>
+ <!-- until https://github.com/checkstyle/checkstyle/issues/7290 -->
+ <exclude name="**/InputJava14InstanceofWithPatternMatching.java"/>
<!-- Cannot parse until Java 14 support -->
<exclude name="**/InputJava14Records.java"/>
</fileset>
diff --git a/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammar/java14/InputJava14InstanceofWithPatternMatching.java b/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammar/java14/InputJava14InstanceofWithPatternMatching.java
new file mode 100644
index 0000000..8fa3eba
--- /dev/null
+++ b/src/test/resources-noncompilable/com/puppycrawl/tools/checkstyle/grammar/java14/InputJava14InstanceofWithPatternMatching.java
@@ -0,0 +1,76 @@
+//non-compiled with javac: Compilable with Java14
+package com.puppycrawl.tools.checkstyle.grammar.java14;
+
+import java.util.Arrays;
+import java.util.Locale;
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ ...... I removed it
+ }
+ }
+}
--
2.7.4

View File

@@ -0,0 +1,31 @@
# HG changeset patch
# User Anton Shestakov <av6@dwimlabs.net>
# Date 1591442367 -28800
# Node ID a4438263b228dd3e2983d59095c6180b1411f0e8
# Parent 83e41b73d115e3717943c2e5a83d36d05670384c
tests: skip pyflakes for mercurial/thirdparty/
The current version of pyflakes (2.2.0) correctly detects one issue:
mercurial/thirdparty/selectors2.py:335:40 '...'.format(...) has unused arguments at position(s): 1
But we're not interested in fixing lint errors in third-party code, so we need
to exclude at least selectors2.py. And in the discussion for this patch it was
decided to just skip the entire thirdparty directory.
Differential Revision: https://phab.mercurial-scm.org/D8619
diff -r 83e41b73d115 -r a4438263b228 tests/test-check-pyflakes.t
--- a/tests/test-check-pyflakes.t Tue Jun 09 17:13:26 2020 -0400
+++ b/tests/test-check-pyflakes.t Sat Jun 06 19:19:27 2020 +0800
@@ -16,9 +16,7 @@
$ testrepohg locate 'set:**.py or grep("^#!.*python")' \
> -X hgext/fsmonitor/pywatchman \
> -X mercurial/pycompat.py -X contrib/python-zstandard \
- > -X mercurial/thirdparty/cbor \
- > -X mercurial/thirdparty/concurrent \
- > -X mercurial/thirdparty/zope \
+ > -X mercurial/thirdparty \
> 2>/dev/null \
> | xargs $PYTHON -m pyflakes 2>/dev/null | "$TESTDIR/filterpyflakes.py"
contrib/perf.py:*:* undefined name 'xrange' (glob) (?)

View File

@@ -0,0 +1,55 @@
From fd940c6f66126734e82c00889e7c987e11deea91 Mon Sep 17 00:00:00 2001
From: Tomas Bjerre <tomas.bjerre85@gmail.com>
Date: Sun, 6 Sep 2020 11:20:34 +0200
Subject: [PATCH] removing file
---
.../violations/lib/model/ViolationTest.java | 37 -------------------
1 file changed, 37 deletions(-)
delete mode 100644 src/test/java/se/bjurr/violations/lib/model/ViolationTest.java
diff --git a/src/test/java/se/bjurr/violations/lib/model/ViolationTest.java b/src/test/java/se/bjurr/violations/lib/model/ViolationTest.java
deleted file mode 100644
index 3e40b52..0000000
--- a/src/test/java/se/bjurr/violations/lib/model/ViolationTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package se.bjurr.violations.lib.model;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static se.bjurr.violations.lib.model.SEVERITY.ERROR;
-import static se.bjurr.violations.lib.model.Violation.violationBuilder;
-import static se.bjurr.violations.lib.reports.Parser.CHECKSTYLE;
-
-import org.junit.Test;
-import se.bjurr.violations.lib.model.Violation.ViolationBuilder;
-import uk.co.jemos.podam.api.PodamFactoryImpl;
-
-public class ViolationTest {
-
- @Test
- public void testThatFilePathsAreAlwaysFronSlashes() {
- final Violation violation =
- violationBuilder() //
- .setParser(CHECKSTYLE) //
- .setFile("c:\\path\\to\\file.xml") //
- .setMessage("message") //
- .setSeverity(ERROR) //
- .setStartLine(1) //
- .build();
- assertThat(violation.getFile()) //
- .isEqualTo("c:/path/to/file.xml");
- }
-
- @Test
- public void testThatCopyConstructorWorks() {
- final ViolationBuilder originalBuilder =
- new PodamFactoryImpl().manufacturePojo(ViolationBuilder.class);
- final Violation original = originalBuilder.build();
- final Violation copied = new Violation(original);
- assertThat(copied) //
- .isEqualTo(original);
- }
-}
--
2.25.1

View File

@@ -0,0 +1,8 @@
handlers=java.util.logging.ConsoleHandler
.level=INFO
com.github.difflib.unifieddiff.level=FINE
java.util.logging.ConsoleHandler.level=INFO
#java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter

View File

@@ -0,0 +1,29 @@
--- Origin.java 2020-06-11 11:06:21.000000000 +0800
+++ Update.java 2020-06-11 10:59:48.000000000 +0800
@@ -1,9 +1,17 @@
package checkstyle_demo.PatchSuppression.MultiChangeInOneFile;
-public class Origin {
+public class Update {
public void test1() {
}
+
+ public void test2() {
+
+ }
+
+ public void test3() {
+
+ }
}
class BasicTest {
@@ -16,5 +24,7 @@
class Test2 {
public void test1() {
System.out.println();
+ System.out.println();
+ System.out.println();
}
}

View File

@@ -0,0 +1,30 @@
package checkstyle_demo.PatchSuppression.MultiChangeInOneFile;
public class issue89_revised {
public void test1() {
}
public void test2() {
}
public void test3() {
}
}
class Test {
private int i;
void foo() {
i++;
}
}
class Test2 {
public void test1() {
System.out.println();
System.out.println();
System.out.println();
}
}

View File

@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.java-diff-utils</groupId>
<artifactId>java-diff-utils-parent</artifactId>
<version>4.7</version>
<version>4.9</version>
<name>java-diff-utils-parent</name>
<packaging>pom</packaging>
<modules>
@@ -29,7 +29,7 @@
<connection>scm:git:https://github.com/java-diff-utils/java-diff-utils.git</connection>
<developerConnection>scm:git:ssh://git@github.com:java-diff-utils/java-diff-utils.git</developerConnection>
<url>https://github.com/java-diff-utils/java-diff-utils.git</url>
<tag>java-diff-utils-parent-4.7</tag>
<tag>java-diff-utils-parent-4.9</tag>
</scm>
<issueManagement>
<system>GitHub Issues</system>