Skip to content

Commit f7185e8

Browse files
committed
Fix CapturedLogRecord returning null when sourceFile was null
1 parent 5c1ae86 commit f7185e8

File tree

4 files changed

+108
-43
lines changed

4 files changed

+108
-43
lines changed

asciidoctor-maven-commons/src/main/java/org/asciidoctor/maven/log/CapturedLogRecord.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.asciidoctor.maven.log;
22

33
import java.io.File;
4-
import java.util.Optional;
54

65
import org.asciidoctor.ast.Cursor;
76
import org.asciidoctor.log.LogRecord;
@@ -24,11 +23,13 @@ final class CapturedLogRecord extends LogRecord {
2423
}
2524

2625
public Cursor getCursor() {
27-
if (sourceFile == null)
28-
return null;
29-
30-
return Optional.ofNullable(super.getCursor())
31-
.orElse(new FileCursor(sourceFile));
26+
if (super.getCursor() != null) {
27+
return super.getCursor();
28+
}
29+
if (sourceFile != null) {
30+
return new FileCursor(sourceFile);
31+
}
32+
return null;
3233
}
3334

3435
public File getSourceFile() {
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package org.asciidoctor.maven.log;
2+
3+
import java.io.File;
4+
5+
import static org.assertj.core.api.Assertions.assertThat;
6+
7+
import org.asciidoctor.ast.Cursor;
8+
import org.asciidoctor.log.LogRecord;
9+
import org.asciidoctor.log.Severity;
10+
import org.junit.jupiter.api.Nested;
11+
import org.junit.jupiter.api.Test;
12+
13+
class CapturedLogRecordTest {
14+
15+
@Nested
16+
class WhenLogRecordsContainsCursor {
17+
18+
@Test
19+
void shouldReturnCursorFile() {
20+
final var cursorFile = new File("uno", "dos");
21+
final var recordFile = new File("tres", "quatre");
22+
final var cursor = new TestCursor(cursorFile.getAbsolutePath(), 0, null, null);
23+
24+
final var logRecord = new CapturedLogRecord(getLogRecord(cursor), recordFile);
25+
final var capturedLogRecord = new CapturedLogRecord(logRecord, cursorFile);
26+
27+
assertThat(capturedLogRecord.getCursor().getFile()).isEqualTo(cursorFile.getAbsolutePath());
28+
}
29+
30+
}
31+
32+
@Nested
33+
class WhenLogRecordsDoesNotContainsCursor {
34+
35+
@Test
36+
void shouldReturnLogRecordFileWhenCursorFileIsSet() {
37+
final var cursorFile = new File("uno", "dos");
38+
final var recordFile = new File("tres", "quatre");
39+
40+
final var logRecord = new CapturedLogRecord(getLogRecord(null), recordFile);
41+
final var capturedLogRecord = new CapturedLogRecord(logRecord, cursorFile);
42+
43+
assertThat(capturedLogRecord.getCursor().getFile()).isEqualTo(recordFile.getAbsolutePath());
44+
}
45+
46+
@Test
47+
void shouldReturnNullWhenCursorFileIsNoSet() {
48+
final var logRecord = new CapturedLogRecord(getLogRecord(null), null);
49+
final var capturedLogRecord = new CapturedLogRecord(logRecord, null);
50+
51+
assertThat(capturedLogRecord.getCursor()).isNull();
52+
}
53+
54+
}
55+
56+
private LogRecord getLogRecord(Cursor cursor) {
57+
return new LogRecord(Severity.INFO, cursor, "a message");
58+
}
59+
60+
}

asciidoctor-maven-commons/src/test/java/org/asciidoctor/maven/log/LogRecordFormatterTest.java

Lines changed: 3 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
import java.io.File;
44
import java.io.IOException;
55

6+
import static java.lang.String.format;
7+
import static org.assertj.core.api.Assertions.assertThat;
8+
69
import org.asciidoctor.ast.Cursor;
710
import org.asciidoctor.log.LogRecord;
811
import org.asciidoctor.log.Severity;
912
import org.junit.jupiter.api.Test;
1013
import org.mockito.Mockito;
1114

12-
import static java.lang.String.format;
13-
import static org.assertj.core.api.Assertions.assertThat;
14-
1515
class LogRecordFormatterTest {
1616

1717
private static final String PROJECT_NAME = "asciidoctor-maven-commons";
@@ -117,38 +117,4 @@ private String normalizePath(String formattedLogRecord) {
117117
return formattedLogRecord.replaceAll("\\\\", "/");
118118
}
119119

120-
class TestCursor implements Cursor {
121-
122-
private final int lineNumber;
123-
private final String file;
124-
private final String path;
125-
private final String dir;
126-
127-
TestCursor(String file, int lineNumber, String path, String dir) {
128-
this.file = file;
129-
this.lineNumber = lineNumber;
130-
this.path = path;
131-
this.dir = dir;
132-
}
133-
134-
@Override
135-
public int getLineNumber() {
136-
return lineNumber;
137-
}
138-
139-
@Override
140-
public String getPath() {
141-
return path;
142-
}
143-
144-
@Override
145-
public String getDir() {
146-
return dir;
147-
}
148-
149-
@Override
150-
public String getFile() {
151-
return file;
152-
}
153-
}
154120
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package org.asciidoctor.maven.log;
2+
3+
import org.asciidoctor.ast.Cursor;
4+
5+
class TestCursor implements Cursor {
6+
7+
private final int lineNumber;
8+
private final String file;
9+
private final String path;
10+
private final String dir;
11+
12+
TestCursor(String file, int lineNumber, String path, String dir) {
13+
this.file = file;
14+
this.lineNumber = lineNumber;
15+
this.path = path;
16+
this.dir = dir;
17+
}
18+
19+
@Override
20+
public int getLineNumber() {
21+
return lineNumber;
22+
}
23+
24+
@Override
25+
public String getPath() {
26+
return path;
27+
}
28+
29+
@Override
30+
public String getDir() {
31+
return dir;
32+
}
33+
34+
@Override
35+
public String getFile() {
36+
return file;
37+
}
38+
}

0 commit comments

Comments
 (0)