File: unquote_test.go

package info (click to toggle)
golang-github-kballard-go-shellquote 0.0~git20180428.95032a8-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bookworm-backports, experimental, sid, trixie
  • size: 88 kB
  • sloc: makefile: 2
file content (55 lines) | stat: -rw-r--r-- 1,918 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package shellquote

import (
	"reflect"
	"testing"
)

func TestSimpleSplit(t *testing.T) {
	for _, elem := range simpleSplitTest {
		output, err := Split(elem.input)
		if err != nil {
			t.Errorf("Input %q, got error %#v", elem.input, err)
		} else if !reflect.DeepEqual(output, elem.output) {
			t.Errorf("Input %q, got %q, expected %q", elem.input, output, elem.output)
		}
	}
}

func TestErrorSplit(t *testing.T) {
	for _, elem := range errorSplitTest {
		_, err := Split(elem.input)
		if err != elem.error {
			t.Errorf("Input %q, got error %#v, expected error %#v", elem.input, err, elem.error)
		}
	}
}

var simpleSplitTest = []struct {
	input  string
	output []string
}{
	{"hello", []string{"hello"}},
	{"hello goodbye", []string{"hello", "goodbye"}},
	{"hello   goodbye", []string{"hello", "goodbye"}},
	{"glob* test?", []string{"glob*", "test?"}},
	{"don\\'t you know the dewey decimal system\\?", []string{"don't", "you", "know", "the", "dewey", "decimal", "system?"}},
	{"'don'\\''t you know the dewey decimal system?'", []string{"don't you know the dewey decimal system?"}},
	{"one '' two", []string{"one", "", "two"}},
	{"text with\\\na backslash-escaped newline", []string{"text", "witha", "backslash-escaped", "newline"}},
	{"text \"with\na\" quoted newline", []string{"text", "with\na", "quoted", "newline"}},
	{"\"quoted\\d\\\\\\\" text with\\\na backslash-escaped newline\"", []string{"quoted\\d\\\" text witha backslash-escaped newline"}},
	{"text with an escaped \\\n newline in the middle", []string{"text", "with", "an", "escaped", "newline", "in", "the", "middle"}},
	{"foo\"bar\"baz", []string{"foobarbaz"}},
}

var errorSplitTest = []struct {
	input string
	error error
}{
	{"don't worry", UnterminatedSingleQuoteError},
	{"'test'\\''ing", UnterminatedSingleQuoteError},
	{"\"foo'bar", UnterminatedDoubleQuoteError},
	{"foo\\", UnterminatedEscapeError},
	{"   \\", UnterminatedEscapeError},
}