mirror of
https://github.com/genuinetools/reg.git
synced 2024-08-18 21:10:23 -04:00
69 lines
1.6 KiB
Go
69 lines
1.6 KiB
Go
// 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{} }
|