1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // Copyright 2014 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.
- // +build generate
- package triegen_test
- // The code in this file generates captures and writes the tries generated in
- // the examples to data_test.go. To invoke it, run:
- // go test -tags=generate
- //
- // Making the generation code a "test" allows us to link in the necessary test
- // code.
- import (
- "log"
- "os"
- "os/exec"
- )
- func init() {
- const tmpfile = "tmpout"
- const dstfile = "data_test.go"
- f, err := os.Create(tmpfile)
- if err != nil {
- log.Fatalf("Could not create output file: %v", err)
- }
- defer os.Remove(tmpfile)
- defer f.Close()
- // We exit before this function returns, regardless of success or failure,
- // so there's no need to save (and later restore) the existing genWriter
- // value.
- genWriter = f
- f.Write([]byte(header))
- Example_build()
- ExampleGen_build()
- if err := exec.Command("gofmt", "-w", tmpfile).Run(); err != nil {
- log.Fatal(err)
- }
- os.Remove(dstfile)
- os.Rename(tmpfile, dstfile)
- os.Exit(0)
- }
- const header = `// This file is generated with "go test -tags generate". DO NOT EDIT!
- // +build !generate
- package triegen_test
- `
- // Stubs for generated tries. These are needed as we exclude data_test.go if
- // the generate flag is set. This will clearly make the tests fail, but that
- // is okay. It allows us to bootstrap.
- type trie struct{}
- func (t *trie) lookupString(string) (uint8, int) { return 0, 1 }
- func (t *trie) lookupStringUnsafe(string) uint64 { return 0 }
- func newRandTrie(i int) *trie { return &trie{} }
- func newMultiTrie(i int) *trie { return &trie{} }
|