github.com/elves/Elvish@v0.12.0/parse/quote_test.go (about) 1 package parse 2 3 import ( 4 "testing" 5 6 "github.com/elves/elvish/tt" 7 ) 8 9 var quoteTests = tt.Table{ 10 // Empty string is single-quoted. 11 tt.Args("").Rets(`''`), 12 13 // Bareword when possible. 14 tt.Args("x-y:z@h/d").Rets("x-y:z@h/d"), 15 16 // Single quote when there are special characters but no unprintable 17 // characters. 18 tt.Args("x$y[]ef'").Rets("'x$y[]ef'''"), 19 20 // Tilde needs quoting only leading the expression. 21 tt.Args("~x").Rets("'~x'"), 22 tt.Args("x~").Rets("x~"), 23 24 // Double quote when there is unprintable char. 25 tt.Args("a\nb").Rets(`"a\nb"`), 26 tt.Args("\x1b\"\\").Rets(`"\e\"\\"`), 27 28 // Commas and equal signs are always quoted, so that the quoted string is 29 // safe for use everywhere. 30 tt.Args("a,b").Rets(`'a,b'`), 31 tt.Args("a=b").Rets(`'a=b'`), 32 } 33 34 func TestQuote(t *testing.T) { 35 tt.Test(t, tt.Fn("Quote", Quote).ArgsFmt("(%q)").RetsFmt("%q"), quoteTests) 36 }