aboutsummaryrefslogtreecommitdiff
path: root/tests/gotext.go
diff options
context:
space:
mode:
Diffstat (limited to 'tests/gotext.go')
-rw-r--r--tests/gotext.go528
1 files changed, 288 insertions, 240 deletions
diff --git a/tests/gotext.go b/tests/gotext.go
index dfcbc99..18e2ab0 100644
--- a/tests/gotext.go
+++ b/tests/gotext.go
@@ -4,25 +4,68 @@ import (
"bytes"
"fmt"
"os"
-
- g "gobang"
+ "reflect"
)
+func showColour() bool {
+ return os.Getenv("NO_COLOUR") == ""
+}
+
+func testStart(name string) {
+ fmt.Fprintf(os.Stderr, "%s:\n", name)
+}
+
+func testing(message string, body func()) {
+ if showColour() {
+ fmt.Fprintf(
+ os.Stderr,
+ "\033[0;33mtesting\033[0m: %s... ",
+ message,
+ )
+ body()
+ fmt.Fprintf(os.Stderr, "\033[0;32mOK\033[0m.\n")
+ } else {
+ fmt.Fprintf(os.Stderr, "testing: %s... ", message)
+ body()
+ fmt.Fprintf(os.Stderr, "OK.\n")
+ }
+}
+
+func assertEq(given any, expected any) {
+ if !reflect.DeepEqual(given, expected) {
+ if showColour() {
+ fmt.Fprintf(os.Stderr, "\033[0;31mERR\033[0m.\n")
+ } else {
+ fmt.Fprintf(os.Stderr, "ERR.\n")
+ }
+ fmt.Fprintf(os.Stderr, "given != expected\n")
+ fmt.Fprintf(os.Stderr, "given: %#v\n", given)
+ fmt.Fprintf(os.Stderr, "expected: %#v\n", expected)
+ os.Exit(1)
+ }
+}
+
func src(payload string) string {
- f := g.Must(os.CreateTemp("", "gotext-temp-*.go"))
- g.Must(f.WriteString(payload))
- g.TErrorIf(f.Close())
+ f, err := os.CreateTemp("", "gotext-temp-*.go")
+ assertEq(err, nil)
+
+ _, err = f.WriteString(payload)
+ assertEq(err, nil)
+
+ err = f.Close()
+ assertEq(err, nil)
+
return f.Name()
}
func test_formatComment() {
- g.TestStart("formatComment()")
+ testStart("formatComment()")
- g.Testing("formatting comments FIXME", func() {
+ testing("formatting comments FIXME", func() {
table := []struct{
in string
out string
@@ -34,30 +77,33 @@ func test_formatComment() {
}
for _, row := range table {
- g.TAssertEqual(formatComment(row.in), row.out)
+ assertEq(formatComment(row.in), row.out)
}
})
}
func test_processFiles() {
- g.TestStart("processFiles()")
+ testStart("processFiles()")
- g.Testing("simple commented file", func() {
- fname := src(g.Heredoc(`
- package main
+ testing("simple commented file", func() {
+ const s = `package main
- func main() {
- // TRANSLATORS: a comment
- i18n.G("foo")
- }
- `))
+func main() {
+ // TRANSLATORS: a comment
+ i18n.G("foo")
+}
+`
+
+ fname := src(s)
defer os.Remove(fname)
- msgIDs := g.TMust(processFiles(argsT{
+
+ msgIDs, err := processFiles(argsT{
subArgs: []string{fname},
keyword: "i18n.G",
- }))
+ })
+ assertEq(err, nil)
- g.TAssertEqual(msgIDs, map[string][]msgIDT{
+ assertEq(msgIDs, map[string][]msgIDT{
"foo": []msgIDT{
msgIDT{
comment: "#. TRANSLATORS: a comment\n",
@@ -68,25 +114,28 @@ func test_processFiles() {
})
})
- g.Testing("process multiple entries", func() {
- fname := src(g.Heredoc(`
- package main
+ testing("process multiple entries", func() {
+ const s = `package main
+
+func main() {
+ // TRANSLATORS: comment 1
+ i18n.G("foo")
- func main() {
- // TRANSLATORS: comment 1
- i18n.G("foo")
+ // TRANSLATORS: comment 2
+ i18n.G("foo")
+}
+`
- // TRANSLATORS: comment 2
- i18n.G("foo")
- }
- `))
+ fname := src(s)
defer os.Remove(fname)
- msgIDs := g.TMust(processFiles(argsT{
+
+ msgIDs, err := processFiles(argsT{
subArgs: []string{fname},
keyword: "i18n.G",
- }))
+ })
+ assertEq(err, nil)
- g.TAssertEqual(msgIDs, map[string][]msgIDT{
+ assertEq(msgIDs, map[string][]msgIDT{
"foo": []msgIDT{
{
comment: "#. TRANSLATORS: comment 1\n",
@@ -102,21 +151,25 @@ func test_processFiles() {
})
})
- g.Testing("process files with concat", func() {
- fname := src(g.Heredoc(`
- package main
+ testing("process files with concat", func() {
+ const s = `package main
+
+func main() {
+ // TRANSLATORS: a comment
+ i18n.G("foo\n" + "bar\n" + "baz")
+}
+`
+
+ fname := src(s)
+ defer os.Remove(fname)
- func main() {
- // TRANSLATORS: a comment
- i18n.G("foo\n" + "bar\n" + "baz")
- }
- `))
- msgIDs := g.TMust(processFiles(argsT{
+ msgIDs, err := processFiles(argsT{
subArgs: []string{fname},
keyword: "i18n.G",
- }))
+ })
+ assertEq(err, nil)
- g.TAssertEqual(msgIDs, map[string][]msgIDT{
+ assertEq(msgIDs, map[string][]msgIDT{
"foo\\nbar\\nbaz": []msgIDT{
{
comment: "#. TRANSLATORS: a comment\n",
@@ -127,45 +180,48 @@ func test_processFiles() {
})
})
- g.Testing("file with quote", func() {
- fname := src(fmt.Sprintf(g.Heredoc(`
- package main
+ testing("file with quote", func() {
+ const s = `package main
- func main() {
- i18n.G(%[1]s foo "bar"%[1]s)
- }
- `), "`"))
+func main() {
+ i18n.G(%[1]s foo "bar"%[1]s)
+}
+`
+
+ fname := src(fmt.Sprintf(s, "`"))
defer os.Remove(fname)
- msgIDs := g.TMust(processFiles(argsT{
+
+ msgIDs, err := processFiles(argsT{
subArgs: []string{fname},
keyword: "i18n.G",
- }))
+ })
+ assertEq(err, nil)
out := bytes.NewBuffer([]byte(""))
writePotFile(out, msgIDs)
- expected := fmt.Sprintf(g.Heredoc(`
- #, fuzzy
- msgid ""
- msgstr ""
- "Language: \n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
-
- #: %s:4
- msgid " foo \"bar\""
- msgstr ""
-
- `), fname)
- g.TAssertEqual(out.String(), expected)
+ const expectedRaw = `msgid ""
+msgstr ""
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: %s:4
+msgid " foo \"bar\""
+msgstr ""
+
+`
+
+ expected := fmt.Sprintf(expectedRaw, fname)
+ assertEq(out.String(), expected)
})
}
func test_writePotFile() {
- g.TestStart("writePotFile()")
+ testStart("writePotFile()")
- g.Testing("write simple file", func() {
+ testing("write simple file", func() {
msgIDs := map[string][]msgIDT{
"foo": []msgIDT{
{
@@ -178,25 +234,23 @@ func test_writePotFile() {
out := bytes.NewBuffer([]byte(""))
writePotFile(out, msgIDs)
- expected := g.Heredoc(`
- #, fuzzy
- msgid ""
- msgstr ""
- "Language: \n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
-
- #. foo
- #: fname:2
- msgid "foo"
- msgstr ""
-
- `)
- g.TAssertEqual(out.String(), expected)
+ const expected = `msgid ""
+msgstr ""
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. foo
+#: fname:2
+msgid "foo"
+msgstr ""
+
+`
+ assertEq(out.String(), expected)
})
- g.Testing("write template with 2 entries", func() {
+ testing("write template with 2 entries", func() {
msgIDs := map[string][]msgIDT{
"foo": []msgIDT{
{
@@ -214,26 +268,25 @@ func test_writePotFile() {
out := bytes.NewBuffer([]byte(""))
writePotFile(out, msgIDs)
- expected := g.Heredoc(`
- #, fuzzy
- msgid ""
- msgstr ""
- "Language: \n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
-
- #. comment1
- #. comment2
- #: fname:2 fname:4
- msgid "foo"
- msgstr ""
-
- `)
- g.TAssertEqual(out.String(), expected)
+ const expected = `msgid ""
+msgstr ""
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. comment1
+#. comment2
+#: fname:2 fname:4
+msgid "foo"
+msgstr ""
+
+`
+
+ assertEq(out.String(), expected)
})
- g.Testing("template without comment", func() {
+ testing("template without comment", func() {
msgIDs := map[string][]msgIDT{
"foo": []msgIDT{
{
@@ -245,24 +298,23 @@ func test_writePotFile() {
out := bytes.NewBuffer([]byte(""))
writePotFile(out, msgIDs)
- expected := g.Heredoc(`
- #, fuzzy
- msgid ""
- msgstr ""
- "Language: \n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
-
- #: fname:2
- msgid "foo"
- msgstr ""
-
- `)
- g.TAssertEqual(out.String(), expected)
+ const expected = `msgid ""
+msgstr ""
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: fname:2
+msgid "foo"
+msgstr ""
+
+`
+
+ assertEq(out.String(), expected)
})
- g.Testing("output without location", func() {
+ testing("output without location", func() {
msgIDs := map[string][]msgIDT{
"foo": []msgIDT{
{
@@ -275,24 +327,23 @@ func test_writePotFile() {
out := bytes.NewBuffer([]byte(""))
writePotFile(out, msgIDs)
- expected := g.Heredoc(`
- #, fuzzy
- msgid ""
- msgstr ""
- "Language: \n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
-
- #: fname:2
- msgid "foo"
- msgstr ""
-
- `)
- g.TAssertEqual(out.String(), expected)
+ const expected = `msgid ""
+msgstr ""
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: fname:2
+msgid "foo"
+msgstr ""
+
+`
+
+ assertEq(out.String(), expected)
})
- g.Testing("output with hint", func() {
+ testing("output with hint", func() {
msgIDs := map[string][]msgIDT{
"foo": []msgIDT{
{
@@ -306,25 +357,24 @@ func test_writePotFile() {
out := bytes.NewBuffer([]byte(""))
writePotFile(out, msgIDs)
- expected := g.Heredoc(`
- #, fuzzy
- msgid ""
- msgstr ""
- "Language: \n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
-
- #: fname:2
- #, c-format
- msgid "foo"
- msgstr ""
-
- `)
- g.TAssertEqual(out.String(), expected)
+ const expected = `msgid ""
+msgstr ""
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: fname:2
+#, c-format
+msgid "foo"
+msgstr ""
+
+`
+
+ assertEq(out.String(), expected)
})
- g.Testing("output with plural", func() {
+ testing("output with plural", func() {
msgIDs := map[string][]msgIDT{
"foo": []msgIDT{
{
@@ -338,26 +388,25 @@ func test_writePotFile() {
out := bytes.NewBuffer([]byte(""))
writePotFile(out, msgIDs)
- expected := g.Heredoc(`
- #, fuzzy
- msgid ""
- msgstr ""
- "Language: \n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
-
- #: fname:2
- msgid "foo"
- msgid_plural "plural"
- msgstr[0] ""
- msgstr[1] ""
-
- `)
- g.TAssertEqual(out.String(), expected)
+ const expected = `msgid ""
+msgstr ""
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: fname:2
+msgid "foo"
+msgid_plural "plural"
+msgstr[0] ""
+msgstr[1] ""
+
+`
+
+ assertEq(out.String(), expected)
})
- g.Testing("multiline output", func() {
+ testing("multiline output", func() {
msgIDs := map[string][]msgIDT{
"foo\\nbar\\nbaz": []msgIDT{
{
@@ -369,28 +418,27 @@ func test_writePotFile() {
}
out := bytes.NewBuffer([]byte(""))
writePotFile(out, msgIDs)
- expected := g.Heredoc(`
- #, fuzzy
- msgid ""
- msgstr ""
- "Language: \n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
-
- #. foo
- #: fname:2
- msgid ""
- "foo\n"
- "bar\n"
- "baz"
- msgstr ""
-
- `)
- g.TAssertEqual(out.String(), expected)
+ const expected = `msgid ""
+msgstr ""
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. foo
+#: fname:2
+msgid ""
+"foo\n"
+"bar\n"
+"baz"
+msgstr ""
+
+`
+
+ assertEq(out.String(), expected)
})
- g.Testing("output tidy output", func() {
+ testing("output tidy output", func() {
msgIDs := map[string][]msgIDT{
"foo\\nbar\\nbaz": []msgIDT{
{
@@ -407,70 +455,70 @@ func test_writePotFile() {
}
out := bytes.NewBuffer([]byte(""))
writePotFile(out, msgIDs)
- expected := g.Heredoc(`
- #, fuzzy
- msgid ""
- msgstr ""
- "Language: \n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
-
- #: fname:2
- msgid ""
- "foo\n"
- "bar\n"
- "baz"
- msgstr ""
-
- #: fname:4
- msgid "zzz\n"
- msgstr ""
-
- `)
- g.TAssertEqual(out.String(), expected)
+ const expected = `msgid ""
+msgstr ""
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: fname:2
+msgid ""
+"foo\n"
+"bar\n"
+"baz"
+msgstr ""
+
+#: fname:4
+msgid "zzz\n"
+msgstr ""
+
+`
+
+ assertEq(out.String(), expected)
})
- g.Testing("source with double quotes", func() {
- fname := src(g.Heredoc(`
- package main
+ testing("source with double quotes", func() {
+ const s = `package main
+
+func main() {
+ i18n.G("foo \"bar\"")
+}
+`
- func main() {
- i18n.G("foo \"bar\"")
- }
- `))
+ fname := src(s)
defer os.Remove(fname)
- msgIDs := g.TMust(processFiles(argsT{
+
+ msgIDs, err := processFiles(argsT{
subArgs: []string{fname},
keyword: "i18n.G",
- }))
+ })
+ assertEq(err, nil)
out := bytes.NewBuffer([]byte(""))
writePotFile(out, msgIDs)
- expected := fmt.Sprintf(g.Heredoc(`
- #, fuzzy
- msgid ""
- msgstr ""
- "Language: \n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
-
- #: %[1]s:4
- msgid "foo \"bar\""
- msgstr ""
-
- `), fname)
- g.TAssertEqual(out.String(), expected)
+ const expectedRaw = `msgid ""
+msgstr ""
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: %[1]s:4
+msgid "foo \"bar\""
+msgstr ""
+
+`
+
+ expected := fmt.Sprintf(expectedRaw, fname)
+ assertEq(out.String(), expected)
})
}
func MainTest() {
- g.Init()
-
test_formatComment()
test_processFiles()
test_writePotFile()