Skip to content

Commit 408be80

Browse files
Correctly handle multiline strings in snapshot output
1 parent 7b3b65d commit 408be80

File tree

13 files changed

+61
-41
lines changed

13 files changed

+61
-41
lines changed

bindings/go/scip/testutil/format.go

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -164,35 +164,31 @@ func FormatSnapshot(
164164
return b.String(), formattingError
165165
}
166166

167-
func writeDocumentation(b *strings.Builder, documentation string, prefix string, override bool) {
168-
// At least get the first line of documentation if there is leading whitespace
169-
documentation = strings.TrimSpace(documentation)
167+
func writeMultiline(b *strings.Builder, prefix string, paragraph string) {
168+
for _, s := range strings.Split(paragraph, "\n") {
169+
b.WriteString(prefix)
170+
b.WriteString("> ")
171+
b.WriteString(s)
172+
}
173+
}
170174

175+
func writeDocumentation(b *strings.Builder, documentation string, prefix string, override bool) {
171176
b.WriteString(prefix)
172177
if override {
173178
b.WriteString("override_")
174179
}
175-
b.WriteString("documentation ")
180+
b.WriteString("documentation")
176181

177-
truncatedDocumentation := documentation
178-
newlineIndex := strings.Index(documentation, "\n")
179-
if newlineIndex >= 0 {
180-
truncatedDocumentation = documentation[0:newlineIndex]
181-
}
182-
b.WriteString(truncatedDocumentation)
182+
writeMultiline(b, prefix, documentation)
183183
}
184184

185185
func writeDiagnostic(b *strings.Builder, prefix string, diagnostic *scip.Diagnostic) {
186186
b.WriteString(prefix)
187187
b.WriteString("diagnostic ")
188-
b.WriteString(diagnostic.Severity.String() + ": ")
188+
b.WriteString(diagnostic.Severity.String())
189+
b.WriteRune(':')
189190

190-
message := diagnostic.Message
191-
newlineIndex := strings.Index(message, "\n")
192-
if newlineIndex >= 0 {
193-
message = message[0:newlineIndex]
194-
}
195-
b.WriteString(message)
191+
writeMultiline(b, prefix, diagnostic.Message)
196192
}
197193

198194
// isRangeLess compares two SCIP ranges (which are encoded as []int32).

cmd/scip/tests/snapshots/output/cyclic-reference/cycle1.repro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# Test cyclic references between files.
22
definition hello().
33
# ^^^^^^^^ definition cycle1.repro/hello().
4-
# documentation signature of hello().
4+
# documentation
5+
# > signature of hello().
56
reference hello().
67
# ^^^^^^^^ reference cycle1.repro/hello().
78
reference hello2().

cmd/scip/tests/snapshots/output/cyclic-reference/cycle2.repro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# Test cyclic references between files.
22
definition hello2().
33
# ^^^^^^^^^ definition cycle2.repro/hello2().
4-
# documentation signature of hello2().
4+
# documentation
5+
# > signature of hello2().
56
reference hello().
67
# ^^^^^^^^ reference cycle1.repro/hello().
78
reference hello2().
Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
definition deprecatedMethod.
22
# ^^^^^^^^^^^^^^^^^ definition diagnostics.repro/deprecatedMethod.
3-
# documentation signature of deprecatedMethod.
4-
# diagnostic Warning: deprecated identifier
3+
# documentation
4+
# > signature of deprecatedMethod.
5+
# diagnostic Warning:
6+
# > deprecated identifier
57
reference deprecatedMethod.
68
# ^^^^^^^^^^^^^^^^^ reference diagnostics.repro/deprecatedMethod.
7-
# diagnostic Warning: deprecated identifier
9+
# diagnostic Warning:
10+
# > deprecated identifier
811

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
definition readFileSync.
22
# ^^^^^^^^^^^^^ definition duplicate.repro/readFileSync.
3-
# documentation signature of readFileSync.
3+
# documentation
4+
# > signature of readFileSync.
45
definition readFileSync.
56
# ^^^^^^^^^^^^^ definition duplicate.repro/readFileSync.
6-
# documentation signature of readFileSync.
7+
# documentation
8+
# > signature of readFileSync.
79

cmd/scip/tests/snapshots/output/forward-def/forward_def.repro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
# ^^^^ forward_definition forward_def.repro/abc#
33
definition abc#
44
# ^^^^ definition forward_def.repro/abc#
5-
# documentation signature of abc#
5+
# documentation
6+
# > signature of abc#
67
reference abc#
78
# ^^^^ reference forward_def.repro/abc#
89

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# Test how to implement a symbol from an external workspace.
22
definition bird# implements global implementation animal.repro/animal#
33
# ^^^^^ definition bird.repro/bird#
4-
# documentation signature of bird#
4+
# documentation
5+
# > signature of bird#
56
# relationship implementation animal.repro/animal# implementation
67
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference implementation animal.repro/animal#
78

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
# Test how to implement a symbol within the same workspace.
22
definition animal#
33
# ^^^^^^^ definition animal.repro/animal#
4-
# documentation signature of animal#
4+
# documentation
5+
# > signature of animal#
56
definition dog# implements animal#
67
# ^^^^ definition animal.repro/dog#
7-
# documentation signature of dog#
8+
# documentation
9+
# > signature of dog#
810
# relationship animal.repro/animal# implementation
911
# ^^^^^^^ reference animal.repro/animal#
1012
definition cat# implements animal#
1113
# ^^^^ definition animal.repro/cat#
12-
# documentation signature of cat#
14+
# documentation
15+
# > signature of cat#
1316
# relationship animal.repro/animal# implementation
1417
# ^^^^^^^ reference animal.repro/animal#
1518

cmd/scip/tests/snapshots/output/local-document/local1.repro

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
# docstring: local is a local method
22
definition localExample
33
# ^^^^^^^^^^^^ definition local Example
4-
# documentation signature of localExample
5-
# documentation : local is a local method
4+
# documentation
5+
# > signature of localExample
6+
# documentation
7+
# > : local is a local method
68
reference localExample
79
# ^^^^^^^^^^^^ reference local Example
810

cmd/scip/tests/snapshots/output/relationships/defined_by.repro

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
definition M_f.
22
# ^^^^ definition defined_by.repro/M_f.
3-
# documentation signature of M_f.
3+
# documentation
4+
# > signature of M_f.
45

56
definition C1_f.
67
# ^^^^^ definition defined_by.repro/C1_f.
7-
# documentation signature of C1_f.
8+
# documentation
9+
# > signature of C1_f.
810

911
reference C2_f.
1012
# ^^^^^ reference defined_by.repro/C1_f.

0 commit comments

Comments
 (0)