message/pipeline: set fallback language for tests
also add catalog comparison file.
Change-Id: I66c066fb52b8fb74d05a4be6d89a1f4ad3e701f8
Reviewed-on: https://go-review.googlesource.com/83817
Run-TryBot: Marcel van Lohuizen <mpvl@golang.org>
Reviewed-by: Nigel Tao <nigeltao@golang.org>
diff --git a/message/pipeline/pipeline_test.go b/message/pipeline/pipeline_test.go
index cb1d3b5..327e90d 100644
--- a/message/pipeline/pipeline_test.go
+++ b/message/pipeline/pipeline_test.go
@@ -14,7 +14,10 @@
"os"
"path"
"path/filepath"
+ "strings"
"testing"
+
+ "golang.org/x/text/language"
)
var genFiles = flag.Bool("gen", false, "generate output files instead of comparing")
@@ -36,10 +39,11 @@
dir := filepath.Join(path, f.Name())
pkgPath := fmt.Sprintf("%s/%s", path, f.Name())
config := Config{
- Packages: []string{pkgPath},
- Dir: filepath.Join(dir, "locales"),
- GenFile: "catalog_gen.go",
- GenPackage: pkgPath,
+ SourceLanguage: language.AmericanEnglish,
+ Packages: []string{pkgPath},
+ Dir: filepath.Join(dir, "locales"),
+ GenFile: "catalog_gen.go",
+ GenPackage: pkgPath,
}
// TODO: load config if available.
s, err := Extract(&config)
@@ -85,9 +89,19 @@
scanGot := bufio.NewScanner(bytes.NewReader(got))
scanWant := bufio.NewScanner(bytes.NewReader(want))
line := 0
+ clean := func(s string) string {
+ s = path.Clean(filepath.ToSlash(s))
+ if i := strings.LastIndex(s, "Size:"); i != -1 {
+ s = s[:i]
+ }
+ if i := strings.LastIndex(s, "Total table size"); i != -1 {
+ s = s[:i]
+ }
+ return s
+ }
for scanGot.Scan() && scanWant.Scan() {
- got := path.Clean(filepath.ToSlash(scanGot.Text()))
- want := path.Clean(filepath.ToSlash(scanWant.Text()))
+ got := clean(scanGot.Text())
+ want := clean(scanWant.Text())
if got != want {
t.Errorf("file %q differs from .want file at line %d:\n\t%s\n\t%s", gotFile, line, got, want)
break
diff --git a/message/pipeline/testdata/test1/catalog_gen.go b/message/pipeline/testdata/test1/catalog_gen.go
index 08ab3b8..8195287 100644
--- a/message/pipeline/testdata/test1/catalog_gen.go
+++ b/message/pipeline/testdata/test1/catalog_gen.go
@@ -28,7 +28,7 @@
"en_US": &dictionary{index: en_USIndex, data: en_USData},
"zh": &dictionary{index: zhIndex, data: zhData},
}
- fallback := language.MustParse("und")
+ fallback := language.MustParse("en-US")
cat, err := catalog.NewFromMap(dict, catalog.Fallback(fallback))
if err != nil {
panic(err)
diff --git a/message/pipeline/testdata/test1/catalog_gen.go.want b/message/pipeline/testdata/test1/catalog_gen.go.want
new file mode 100644
index 0000000..8195287
--- /dev/null
+++ b/message/pipeline/testdata/test1/catalog_gen.go.want
@@ -0,0 +1,83 @@
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
+
+package main
+
+import (
+ "golang.org/x/text/language"
+ "golang.org/x/text/message"
+ "golang.org/x/text/message/catalog"
+)
+
+type dictionary struct {
+ index []uint32
+ data string
+}
+
+func (d *dictionary) Lookup(key string) (data string, ok bool) {
+ p := messageKeyToIndex[key]
+ start, end := d.index[p], d.index[p+1]
+ if start == end {
+ return "", false
+ }
+ return d.data[start:end], true
+}
+
+func init() {
+ dict := map[string]catalog.Dictionary{
+ "de": &dictionary{index: deIndex, data: deData},
+ "en_US": &dictionary{index: en_USIndex, data: en_USData},
+ "zh": &dictionary{index: zhIndex, data: zhData},
+ }
+ fallback := language.MustParse("en-US")
+ cat, err := catalog.NewFromMap(dict, catalog.Fallback(fallback))
+ if err != nil {
+ panic(err)
+ }
+ message.DefaultCatalog = cat
+}
+
+var messageKeyToIndex = map[string]int{
+ "%.2[1]f miles traveled (%[1]f)": 7,
+ "%[1]s is visiting %[3]s!\n": 3,
+ "%d files remaining!": 4,
+ "%d more files remaining!": 5,
+ "%s is out of order!": 6,
+ "%s is visiting %s!\n": 2,
+ "Hello %s!\n": 1,
+ "Hello world!\n": 0,
+}
+
+var deIndex = []uint32{ // 9 elements
+ 0x00000000, 0x00000011, 0x00000023, 0x0000003d,
+ 0x00000057, 0x00000075, 0x00000094, 0x00000094,
+ 0x00000094,
+} // Size: 60 bytes
+
+const deData string = "" + // Size: 148 bytes
+ "\x04\x00\x01\x0a\x0c\x02Hallo Welt!\x04\x00\x01\x0a\x0d\x02Hallo %[1]s!" +
+ "\x04\x00\x01\x0a\x15\x02%[1]s besucht %[2]s!\x04\x00\x01\x0a\x15\x02%[1]" +
+ "s besucht %[3]s!\x02Noch zwei Bestände zu gehen!\x02Noch %[1]d Bestände " +
+ "zu gehen!"
+
+var en_USIndex = []uint32{ // 9 elements
+ 0x00000000, 0x00000012, 0x00000024, 0x00000042,
+ 0x00000060, 0x00000060, 0x000000a3, 0x000000ba,
+ 0x000000d9,
+} // Size: 60 bytes
+
+const en_USData string = "" + // Size: 217 bytes
+ "\x04\x00\x01\x0a\x0d\x02Hello world!\x04\x00\x01\x0a\x0d\x02Hello %[1]s!" +
+ "\x04\x00\x01\x0a\x19\x02%[1]s is visiting %[2]s!\x04\x00\x01\x0a\x19\x02" +
+ "%[1]s is visiting %[3]s!\x14\x01\x81\x01\x00\x02\x14\x02One file remaini" +
+ "ng!\x00&\x02There are %[1]d more files remaining!\x02%[1]s is out of ord" +
+ "er!\x02%.2[1]f miles traveled (%[1]f)"
+
+var zhIndex = []uint32{ // 9 elements
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000,
+} // Size: 60 bytes
+
+const zhData string = ""
+
+// Total table size 545 bytes (0KiB); checksum: 343E0210
diff --git a/message/pipeline/testdata/test1/extracted.gotext.json b/message/pipeline/testdata/test1/extracted.gotext.json
index e109c32..4d317af 100644
--- a/message/pipeline/testdata/test1/extracted.gotext.json
+++ b/message/pipeline/testdata/test1/extracted.gotext.json
@@ -1,5 +1,5 @@
{
- "language": "und",
+ "language": "en-US",
"messages": [
{
"id": "Hello world!",
diff --git a/message/pipeline/testdata/test1/extracted.gotext.json.want b/message/pipeline/testdata/test1/extracted.gotext.json.want
index e109c32..4d317af 100644
--- a/message/pipeline/testdata/test1/extracted.gotext.json.want
+++ b/message/pipeline/testdata/test1/extracted.gotext.json.want
@@ -1,5 +1,5 @@
{
- "language": "und",
+ "language": "en-US",
"messages": [
{
"id": "Hello world!",