From b1247d2d0d51108c910a73891ff3116e5f032ab1 Mon Sep 17 00:00:00 2001 From: "Kali Kaneko (leap communications)" Date: Sat, 12 Jan 2019 18:39:45 +0100 Subject: [pkg] all your deps are vendored to us --- .../x/text/message/pipeline/pipeline_test.go | 126 +++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 vendor/golang.org/x/text/message/pipeline/pipeline_test.go (limited to 'vendor/golang.org/x/text/message/pipeline/pipeline_test.go') diff --git a/vendor/golang.org/x/text/message/pipeline/pipeline_test.go b/vendor/golang.org/x/text/message/pipeline/pipeline_test.go new file mode 100644 index 0000000..293101b --- /dev/null +++ b/vendor/golang.org/x/text/message/pipeline/pipeline_test.go @@ -0,0 +1,126 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package pipeline + +import ( + "bufio" + "bytes" + "encoding/json" + "flag" + "fmt" + "io/ioutil" + "os" + "path" + "path/filepath" + "strings" + "testing" + + "golang.org/x/text/language" +) + +var genFiles = flag.Bool("gen", false, "generate output files instead of comparing") + +// setHelper is testing.T.Helper on Go 1.9+, overridden by go19_test.go. +var setHelper = func(t *testing.T) {} + +func TestFullCycle(t *testing.T) { + const path = "./testdata" + dirs, err := ioutil.ReadDir(path) + if err != nil { + t.Fatal(err) + } + for _, f := range dirs { + t.Run(f.Name(), func(t *testing.T) { + chk := func(t *testing.T, err error) { + setHelper(t) + if err != nil { + t.Fatal(err) + } + } + dir := filepath.Join(path, f.Name()) + pkgPath := fmt.Sprintf("%s/%s", path, f.Name()) + config := Config{ + 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) + chk(t, err) + chk(t, s.Import()) + chk(t, s.Merge()) + // TODO: + // for range s.Config.Actions { + // // TODO: do the actions. + // } + chk(t, s.Export()) + chk(t, s.Generate()) + + writeJSON(t, filepath.Join(dir, "extracted.gotext.json"), s.Extracted) + checkOutput(t, dir) + }) + } +} + +func checkOutput(t *testing.T, p string) { + filepath.Walk(p, func(p string, f os.FileInfo, err error) error { + if f.IsDir() { + return nil + } + if filepath.Ext(p) != ".want" { + return nil + } + gotFile := p[:len(p)-len(".want")] + got, err := ioutil.ReadFile(gotFile) + if err != nil { + t.Errorf("failed to read %q", p) + return nil + } + if *genFiles { + if err := ioutil.WriteFile(p, got, 0644); err != nil { + t.Fatal(err) + } + } + want, err := ioutil.ReadFile(p) + if err != nil { + t.Errorf("failed to read %q", p) + } else { + scanGot := bufio.NewScanner(bytes.NewReader(got)) + scanWant := bufio.NewScanner(bytes.NewReader(want)) + line := 0 + clean := func(s string) string { + if i := strings.LastIndex(s, "//"); i != -1 { + s = s[:i] + } + return path.Clean(filepath.ToSlash(s)) + } + for scanGot.Scan() && scanWant.Scan() { + 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 + } + line++ + } + if scanGot.Scan() || scanWant.Scan() { + t.Errorf("file %q differs from .want file at line %d.", gotFile, line) + } + } + return nil + }) +} + +func writeJSON(t *testing.T, path string, x interface{}) { + data, err := json.MarshalIndent(x, "", " ") + if err != nil { + t.Fatal(err) + } + if err := ioutil.WriteFile(path, data, 0644); err != nil { + t.Fatal(err) + } +} -- cgit v1.2.3