Skip to content

Commit 67a26dd

Browse files
committed
fix legacy unit test
1 parent 99d4a26 commit 67a26dd

File tree

1 file changed

+22
-12
lines changed

1 file changed

+22
-12
lines changed

modules/csv/csv_test.go

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"bytes"
99
"encoding/csv"
1010
"io"
11+
"strconv"
1112
"strings"
1213
"testing"
1314

@@ -21,14 +22,23 @@ func TestCreateReader(t *testing.T) {
2122
assert.Equal(t, ',', rd.Comma)
2223
}
2324

24-
//nolint
25+
func decodeSlashes(s string) string {
26+
s = strings.ReplaceAll(s, "\n", "\\n")
27+
s = strings.ReplaceAll(s, "\"", "\\\"")
28+
decoded, err := strconv.Unquote(`"` + s + `"`)
29+
if err != nil {
30+
panic("unable to decode string:" + err.Error() + "\n" + s)
31+
}
32+
return decoded
33+
}
34+
2535
func TestCreateReaderAndDetermineDelimiter(t *testing.T) {
2636
var cases = []struct {
2737
csv string
2838
expectedRows [][]string
2939
expectedDelimiter rune
3040
}{
31-
// case 0 - semicolon delmited
41+
// case 0 - semicolon delimited
3242
{
3343
csv: `a;b;c
3444
1;2;3
@@ -47,11 +57,11 @@ a, b c
4757
e f
4858
g h i
4959
j l
50-
m n,
60+
m n,\t
5161
p q r
5262
u
5363
v w x
54-
y
64+
y\t\t
5565
`,
5666
expectedRows: [][]string{
5767
{"col1", "col2", "col3"},
@@ -74,7 +84,7 @@ y
7484
a, b, c
7585
d,e,f
7686
,h, i
77-
j, ,
87+
j, ,\x20
7888
, , `,
7989
expectedRows: [][]string{
8090
{"col1", "col2", "col3"},
@@ -89,7 +99,7 @@ j, ,
8999
}
90100

91101
for n, c := range cases {
92-
rd, err := CreateReaderAndDetermineDelimiter(nil, strings.NewReader(c.csv))
102+
rd, err := CreateReaderAndDetermineDelimiter(nil, strings.NewReader(decodeSlashes(c.csv)))
93103
assert.NoError(t, err, "case %d: should not throw error: %v\n", n, err)
94104
assert.EqualValues(t, c.expectedDelimiter, rd.Comma, "case %d: delimiter should be '%c', got '%c'", n, c.expectedDelimiter, rd.Comma)
95105
rows, err := rd.ReadAll()
@@ -222,7 +232,7 @@ John Doe [email protected] This,note,had,a,lot,of,commas,to,test,delimters`,
222232
}
223233

224234
for n, c := range cases {
225-
delimiter := determineDelimiter(&markup.RenderContext{Filename: c.filename}, []byte(c.csv))
235+
delimiter := determineDelimiter(&markup.RenderContext{Filename: c.filename}, []byte(decodeSlashes(c.csv)))
226236
assert.EqualValues(t, c.expectedDelimiter, delimiter, "case %d: delimiter should be equal, expected '%c' got '%c'", n, c.expectedDelimiter, delimiter)
227237
}
228238
}
@@ -287,7 +297,7 @@ abc | |123
287297
}
288298

289299
for n, c := range cases {
290-
modifiedText := removeQuotedString(c.text)
300+
modifiedText := removeQuotedString(decodeSlashes(c.text))
291301
assert.EqualValues(t, c.expectedText, modifiedText, "case %d: modified text should be equal", n)
292302
}
293303
}
@@ -353,7 +363,7 @@ John Doe [email protected] This,note,had,a,lot,of,commas,to,test,delimters`,
353363
quoted,
354364
text," a
355365
2 "some,
356-
quoted,
366+
quoted,\t
357367
text," b
358368
3 "some,
359369
quoted,
@@ -442,7 +452,7 @@ jkl`,
442452
}
443453

444454
for n, c := range cases {
445-
delimiter := guessDelimiter([]byte(c.csv))
455+
delimiter := guessDelimiter([]byte(decodeSlashes(c.csv)))
446456
assert.EqualValues(t, c.expectedDelimiter, delimiter, "case %d: delimiter should be equal, expected '%c' got '%c'", n, c.expectedDelimiter, delimiter)
447457
}
448458
}
@@ -459,7 +469,7 @@ func TestGuessFromBeforeAfterQuotes(t *testing.T) {
459469
quoted,
460470
text," a
461471
2 "some,
462-
quoted,
472+
quoted,\t
463473
text," b
464474
3 "some,
465475
quoted,
@@ -534,7 +544,7 @@ a|"he said, ""here I am"""`,
534544
}
535545

536546
for n, c := range cases {
537-
delimiter := guessFromBeforeAfterQuotes([]byte(c.csv))
547+
delimiter := guessFromBeforeAfterQuotes([]byte(decodeSlashes(c.csv)))
538548
assert.EqualValues(t, c.expectedDelimiter, delimiter, "case %d: delimiter should be equal, expected '%c' got '%c'", n, c.expectedDelimiter, delimiter)
539549
}
540550
}

0 commit comments

Comments
 (0)