summaryrefslogtreecommitdiffstats
path: root/src/terminal_test.go
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2017-01-27 17:46:56 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2017-01-27 18:56:41 +0900
commit421b9b271ac263057c81eb58f98d5a96c04ce941 (patch)
treea79c584958acc6272699a48510c4a7ad3948d00e /src/terminal_test.go
parented57dcb924112192636260fb31d0db54352c517a (diff)
Add execute-silent action
Close #823
Diffstat (limited to 'src/terminal_test.go')
-rw-r--r--src/terminal_test.go46
1 files changed, 33 insertions, 13 deletions
diff --git a/src/terminal_test.go b/src/terminal_test.go
index 5afafaa2..41941eeb 100644
--- a/src/terminal_test.go
+++ b/src/terminal_test.go
@@ -14,9 +14,11 @@ func newItem(str string) *Item {
}
func TestReplacePlaceholder(t *testing.T) {
- items1 := []*Item{newItem(" foo'bar \x1b[31mbaz\x1b[m")}
+ item1 := newItem(" foo'bar \x1b[31mbaz\x1b[m")
+ items1 := []*Item{item1, item1}
items2 := []*Item{
newItem("foo'bar \x1b[31mbaz\x1b[m"),
+ newItem("foo'bar \x1b[31mbaz\x1b[m"),
newItem("FOO'BAR \x1b[31mBAZ\x1b[m")}
var result string
@@ -27,47 +29,65 @@ func TestReplacePlaceholder(t *testing.T) {
}
// {}, preserve ansi
- result = replacePlaceholder("echo {}", false, Delimiter{}, "query", items1)
+ result = replacePlaceholder("echo {}", false, Delimiter{}, false, "query", items1)
check("echo ' foo'\\''bar \x1b[31mbaz\x1b[m'")
// {}, strip ansi
- result = replacePlaceholder("echo {}", true, Delimiter{}, "query", items1)
+ result = replacePlaceholder("echo {}", true, Delimiter{}, false, "query", items1)
check("echo ' foo'\\''bar baz'")
// {}, with multiple items
- result = replacePlaceholder("echo {}", true, Delimiter{}, "query", items2)
- check("echo 'foo'\\''bar baz' 'FOO'\\''BAR BAZ'")
+ result = replacePlaceholder("echo {}", true, Delimiter{}, false, "query", items2)
+ check("echo 'foo'\\''bar baz'")
// {..}, strip leading whitespaces, preserve ansi
- result = replacePlaceholder("echo {..}", false, Delimiter{}, "query", items1)
+ result = replacePlaceholder("echo {..}", false, Delimiter{}, false, "query", items1)
check("echo 'foo'\\''bar \x1b[31mbaz\x1b[m'")
// {..}, strip leading whitespaces, strip ansi
- result = replacePlaceholder("echo {..}", true, Delimiter{}, "query", items1)
+ result = replacePlaceholder("echo {..}", true, Delimiter{}, false, "query", items1)
check("echo 'foo'\\''bar baz'")
// {q}
- result = replacePlaceholder("echo {} {q}", true, Delimiter{}, "query", items1)
+ result = replacePlaceholder("echo {} {q}", true, Delimiter{}, false, "query", items1)
check("echo ' foo'\\''bar baz' 'query'")
// {q}, multiple items
- result = replacePlaceholder("echo {}{q}{}", true, Delimiter{}, "query 'string'", items2)
+ result = replacePlaceholder("echo {+}{q}{+}", true, Delimiter{}, false, "query 'string'", items2)
check("echo 'foo'\\''bar baz' 'FOO'\\''BAR BAZ''query '\\''string'\\''''foo'\\''bar baz' 'FOO'\\''BAR BAZ'")
- result = replacePlaceholder("echo {1}/{2}/{2,1}/{-1}/{-2}/{}/{..}/{n.t}/\\{}/\\{1}/\\{q}/{3}", true, Delimiter{}, "query", items1)
+ result = replacePlaceholder("echo {}{q}{}", true, Delimiter{}, false, "query 'string'", items2)
+ check("echo 'foo'\\''bar baz''query '\\''string'\\''''foo'\\''bar baz'")
+
+ result = replacePlaceholder("echo {1}/{2}/{2,1}/{-1}/{-2}/{}/{..}/{n.t}/\\{}/\\{1}/\\{q}/{3}", true, Delimiter{}, false, "query", items1)
check("echo 'foo'\\''bar'/'baz'/'bazfoo'\\''bar'/'baz'/'foo'\\''bar'/' foo'\\''bar baz'/'foo'\\''bar baz'/{n.t}/{}/{1}/{q}/''")
- result = replacePlaceholder("echo {1}/{2}/{-1}/{-2}/{..}/{n.t}/\\{}/\\{1}/\\{q}/{3}", true, Delimiter{}, "query", items2)
+ result = replacePlaceholder("echo {1}/{2}/{-1}/{-2}/{..}/{n.t}/\\{}/\\{1}/\\{q}/{3}", true, Delimiter{}, false, "query", items2)
+ check("echo 'foo'\\''bar'/'baz'/'baz'/'foo'\\''bar'/'foo'\\''bar baz'/{n.t}/{}/{1}/{q}/''")
+
+ result = replacePlaceholder("echo {+1}/{+2}/{+-1}/{+-2}/{+..}/{n.t}/\\{}/\\{1}/\\{q}/{+3}", true, Delimiter{}, false, "query", items2)
check("echo 'foo'\\''bar' 'FOO'\\''BAR'/'baz' 'BAZ'/'baz' 'BAZ'/'foo'\\''bar' 'FOO'\\''BAR'/'foo'\\''bar baz' 'FOO'\\''BAR BAZ'/{n.t}/{}/{1}/{q}/'' ''")
+ // forcePlus
+ result = replacePlaceholder("echo {1}/{2}/{-1}/{-2}/{..}/{n.t}/\\{}/\\{1}/\\{q}/{3}", true, Delimiter{}, true, "query", items2)
+ check("echo 'foo'\\''bar' 'FOO'\\''BAR'/'baz' 'BAZ'/'baz' 'BAZ'/'foo'\\''bar' 'FOO'\\''BAR'/'foo'\\''bar baz' 'FOO'\\''BAR BAZ'/{n.t}/{}/{1}/{q}/'' ''")
+
+ // No match
+ result = replacePlaceholder("echo {}/{+}", true, Delimiter{}, false, "query", []*Item{nil, nil})
+ check("echo /")
+
+ // No match, but with selections
+ result = replacePlaceholder("echo {}/{+}", true, Delimiter{}, false, "query", []*Item{nil, item1})
+ check("echo /' foo'\\''bar baz'")
+
// String delimiter
delim := "'"
- result = replacePlaceholder("echo {}/{1}/{2}", true, Delimiter{str: &delim}, "query", items1)
+ result = replacePlaceholder("echo {}/{1}/{2}", true, Delimiter{str: &delim}, false, "query", items1)
check("echo ' foo'\\''bar baz'/'foo'/'bar baz'")
// Regex delimiter
regex := regexp.MustCompile("[oa]+")
// foo'bar baz
- result = replacePlaceholder("echo {}/{1}/{3}/{2..3}", true, Delimiter{regex: regex}, "query", items1)
+ result = replacePlaceholder("echo {}/{1}/{3}/{2..3}", true, Delimiter{regex: regex}, false, "query", items1)
check("echo ' foo'\\''bar baz'/'f'/'r b'/''\\''bar b'")
}