File: config_test.go

package info (click to toggle)
reflex 0.3.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 172 kB
  • sloc: sh: 24; makefile: 4
file content (89 lines) | stat: -rw-r--r-- 2,103 bytes parent folder | download | duplicates (4)
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package main

import (
	"reflect"
	"strings"
	"testing"
	"time"

	"github.com/kr/pretty"
)

func TestReadConfigs(t *testing.T) {
	const in = `-g '*.go' echo {}

# Some comment here
-r '^a[0-9]+\.txt$' --only-dirs --substitute='[]' echo []

-g '*.go' -s --only-files echo hi

-r foo -r bar -R baz -g a \
	-G b -G c echo "hello
world"
`

	got, err := readConfigsFromReader(strings.NewReader(in), "test input")
	if err != nil {
		t.Fatal(err)
	}
	want := []*Config{
		{
			command:         []string{"echo", "{}"},
			source:          "test input, line 1",
			globs:           []string{"*.go"},
			subSymbol:       "{}",
			shutdownTimeout: 500 * time.Millisecond,
		},
		{
			command:         []string{"echo", "[]"},
			source:          "test input, line 4",
			regexes:         []string{`^a[0-9]+\.txt$`},
			subSymbol:       "[]",
			shutdownTimeout: 500 * time.Millisecond,
			onlyDirs:        true,
		},
		{
			command:         []string{"echo", "hi"},
			source:          "test input, line 6",
			globs:           []string{"*.go"},
			subSymbol:       "{}",
			startService:    true,
			shutdownTimeout: 500 * time.Millisecond,
			onlyFiles:       true,
		},
		{
			command:         []string{"echo", "hello\nworld"},
			source:          "test input, line 8",
			regexes:         []string{"foo", "bar"},
			globs:           []string{"a"},
			inverseRegexes:  []string{"baz"},
			inverseGlobs:    []string{"b", "c"},
			subSymbol:       "{}",
			shutdownTimeout: 500 * time.Millisecond,
		},
	}
	if !reflect.DeepEqual(got, want) {
		t.Errorf("readConfigsFromReader: got diffs:\n%s",
			strings.Join(pretty.Diff(got, want), "\n"))
	}
}

func TestReadConfigsBad(t *testing.T) {
	for _, in := range []string{
		"",
		"--abc echo hi",
		"-g '*.go'",
		"--substitute='' echo hi",
		"-s echo {}",
		"--only-files --only-dirs echo hi",
	} {
		r := strings.NewReader(in)
		if configs, err := readConfigsFromReader(r, "test input"); err == nil {
			for _, config := range configs {
				if _, err := NewReflex(config); err == nil {
					t.Errorf("readConfigsFromReader(%q): got nil error", in)
				}
			}
		}
	}
}