Skip to content

Commit

Permalink
Correctly handle multiline strings in snapshot output
Browse files Browse the repository at this point in the history
  • Loading branch information
varungandhi-src committed Dec 25, 2023
1 parent 7b3b65d commit 408be80
Show file tree
Hide file tree
Showing 13 changed files with 61 additions and 41 deletions.
30 changes: 13 additions & 17 deletions bindings/go/scip/testutil/format.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,35 +164,31 @@ func FormatSnapshot(
return b.String(), formattingError
}

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

func writeDocumentation(b *strings.Builder, documentation string, prefix string, override bool) {
b.WriteString(prefix)
if override {
b.WriteString("override_")
}
b.WriteString("documentation ")
b.WriteString("documentation")

truncatedDocumentation := documentation
newlineIndex := strings.Index(documentation, "\n")
if newlineIndex >= 0 {
truncatedDocumentation = documentation[0:newlineIndex]
}
b.WriteString(truncatedDocumentation)
writeMultiline(b, prefix, documentation)
}

func writeDiagnostic(b *strings.Builder, prefix string, diagnostic *scip.Diagnostic) {
b.WriteString(prefix)
b.WriteString("diagnostic ")
b.WriteString(diagnostic.Severity.String() + ": ")
b.WriteString(diagnostic.Severity.String())
b.WriteRune(':')

message := diagnostic.Message
newlineIndex := strings.Index(message, "\n")
if newlineIndex >= 0 {
message = message[0:newlineIndex]
}
b.WriteString(message)
writeMultiline(b, prefix, diagnostic.Message)
}

// isRangeLess compares two SCIP ranges (which are encoded as []int32).
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# Test cyclic references between files.
definition hello().
# ^^^^^^^^ definition cycle1.repro/hello().
# documentation signature of hello().
# documentation
# > signature of hello().
reference hello().
# ^^^^^^^^ reference cycle1.repro/hello().
reference hello2().
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# Test cyclic references between files.
definition hello2().
# ^^^^^^^^^ definition cycle2.repro/hello2().
# documentation signature of hello2().
# documentation
# > signature of hello2().
reference hello().
# ^^^^^^^^ reference cycle1.repro/hello().
reference hello2().
Expand Down
9 changes: 6 additions & 3 deletions cmd/scip/tests/snapshots/output/diagnostics/diagnostics.repro
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
definition deprecatedMethod.
# ^^^^^^^^^^^^^^^^^ definition diagnostics.repro/deprecatedMethod.
# documentation signature of deprecatedMethod.
# diagnostic Warning: deprecated identifier
# documentation
# > signature of deprecatedMethod.
# diagnostic Warning:
# > deprecated identifier
reference deprecatedMethod.
# ^^^^^^^^^^^^^^^^^ reference diagnostics.repro/deprecatedMethod.
# diagnostic Warning: deprecated identifier
# diagnostic Warning:
# > deprecated identifier

6 changes: 4 additions & 2 deletions cmd/scip/tests/snapshots/output/duplicates/duplicate.repro
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
definition readFileSync.
# ^^^^^^^^^^^^^ definition duplicate.repro/readFileSync.
# documentation signature of readFileSync.
# documentation
# > signature of readFileSync.
definition readFileSync.
# ^^^^^^^^^^^^^ definition duplicate.repro/readFileSync.
# documentation signature of readFileSync.
# documentation
# > signature of readFileSync.

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
# ^^^^ forward_definition forward_def.repro/abc#
definition abc#
# ^^^^ definition forward_def.repro/abc#
# documentation signature of abc#
# documentation
# > signature of abc#
reference abc#
# ^^^^ reference forward_def.repro/abc#

Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# Test how to implement a symbol from an external workspace.
definition bird# implements global implementation animal.repro/animal#
# ^^^^^ definition bird.repro/bird#
# documentation signature of bird#
# documentation
# > signature of bird#
# relationship implementation animal.repro/animal# implementation
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference implementation animal.repro/animal#

9 changes: 6 additions & 3 deletions cmd/scip/tests/snapshots/output/implementation/animal.repro
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
# Test how to implement a symbol within the same workspace.
definition animal#
# ^^^^^^^ definition animal.repro/animal#
# documentation signature of animal#
# documentation
# > signature of animal#
definition dog# implements animal#
# ^^^^ definition animal.repro/dog#
# documentation signature of dog#
# documentation
# > signature of dog#
# relationship animal.repro/animal# implementation
# ^^^^^^^ reference animal.repro/animal#
definition cat# implements animal#
# ^^^^ definition animal.repro/cat#
# documentation signature of cat#
# documentation
# > signature of cat#
# relationship animal.repro/animal# implementation
# ^^^^^^^ reference animal.repro/animal#

6 changes: 4 additions & 2 deletions cmd/scip/tests/snapshots/output/local-document/local1.repro
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
# docstring: local is a local method
definition localExample
# ^^^^^^^^^^^^ definition local Example
# documentation signature of localExample
# documentation : local is a local method
# documentation
# > signature of localExample
# documentation
# > : local is a local method
reference localExample
# ^^^^^^^^^^^^ reference local Example

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
definition M_f.
# ^^^^ definition defined_by.repro/M_f.
# documentation signature of M_f.
# documentation
# > signature of M_f.

definition C1_f.
# ^^^^^ definition defined_by.repro/C1_f.
# documentation signature of C1_f.
# documentation
# > signature of C1_f.

reference C2_f.
# ^^^^^ reference defined_by.repro/C1_f.
Expand Down
12 changes: 8 additions & 4 deletions cmd/scip/tests/snapshots/output/relationships/mixed.repro
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
definition local1
# ^^^^^^ definition local 1
# documentation signature of local1
# documentation
# > signature of local1
definition local2
# ^^^^^^ definition local 2
# documentation signature of local2
# documentation
# > signature of local2
definition local3
# ^^^^^^ definition local 3
# documentation signature of local3
# documentation
# > signature of local3
definition local4 implements local1 references local2 type_defines local3
# ^^^^^^ definition local 4
# documentation signature of local4
# documentation
# > signature of local4
# relationship local 1 implementation
# relationship local 2 reference
# relationship local 3 type_definition
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
definition local1
# ^^^^^^ definition local 1
# documentation signature of local1
# documentation
# > signature of local1
definition local2 references local1
# ^^^^^^ definition local 2
# documentation signature of local2
# documentation
# > signature of local2
# relationship local 1 reference
# ^^^^^^ reference local 1

Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
definition local1
# ^^^^^^ definition local 1
# documentation signature of local1
# documentation
# > signature of local1
definition local2 type_defines local1
# ^^^^^^ definition local 2
# documentation signature of local2
# documentation
# > signature of local2
# relationship local 1 type_definition
# ^^^^^^ reference local 1

0 comments on commit 408be80

Please sign in to comment.