Support empty words in Join()
diff --git a/quote.go b/quote.go
index f45f198..f6cacee 100644
--- a/quote.go
+++ b/quote.go
@@ -36,6 +36,12 @@
// everywhere.
origLen := buf.Len()
+ if len(word) == 0 {
+ // oops, no content
+ buf.WriteString("''")
+ return
+ }
+
cur, prev := word, word
atStart := true
for len(cur) > 0 {
diff --git a/quote_test.go b/quote_test.go
index d015d72..a4d2d82 100644
--- a/quote_test.go
+++ b/quote_test.go
@@ -5,7 +5,7 @@
)
func TestSimpleJoin(t *testing.T) {
- for _, elem := range simpleTest {
+ for _, elem := range simpleJoinTest {
output := Join(elem.input...)
if output != elem.output {
t.Errorf("Input %q, got %q, expected %q", elem.input, output, elem.output)
@@ -13,7 +13,7 @@
}
}
-var simpleTest = []struct {
+var simpleJoinTest = []struct {
input []string
output string
}{
@@ -24,4 +24,5 @@
{[]string{"don't", "you", "know", "the", "dewey", "decimal", "system?"}, "don\\'t you know the dewey decimal system\\?"},
{[]string{"~user", "u~ser", " ~user", "!~user"}, "\\~user u~ser ' ~user' \\!~user"},
{[]string{"foo*", "M{ovies,usic}", "ab[cd]", "%3"}, "foo\\* M\\{ovies,usic} ab\\[cd] %3"},
+ {[]string{"one", "", "three"}, "one '' three"},
}