generate: Significantly improve testGenerateRun
This commit is contained in:
parent
423f547da3
commit
94041f2abc
@ -6,9 +6,9 @@ import "os/exec"
|
|||||||
import "testing"
|
import "testing"
|
||||||
import "path/filepath"
|
import "path/filepath"
|
||||||
|
|
||||||
func testGenerateRun(test *testing.T, protocol *Protocol, imports string, testCase string) {
|
func testGenerateRun(test *testing.T, protocol *Protocol, title, imports, testCase string) {
|
||||||
// reset data directory
|
// reset data directory
|
||||||
dir := "test/generate-run"
|
dir := filepath.Join("test", title)
|
||||||
err := os.RemoveAll(dir)
|
err := os.RemoveAll(dir)
|
||||||
if err != nil { test.Fatal(err) }
|
if err != nil { test.Fatal(err) }
|
||||||
err = os.MkdirAll(dir, 0750)
|
err = os.MkdirAll(dir, 0750)
|
||||||
@ -58,14 +58,21 @@ func testGenerateRun(test *testing.T, protocol *Protocol, imports string, testCa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func testDecode(data []byte, message Message, correct Message) {
|
func testDecode(correct Message, data any) {
|
||||||
decoder := tape.NewDecoder(bytes.NewBuffer(data))
|
var flat []byte
|
||||||
|
switch data := data.(type) {
|
||||||
|
case []byte: flat = data
|
||||||
|
case tu.Snake: flat = data.Flatten()
|
||||||
|
}
|
||||||
|
message := reflect.New(reflect.ValueOf(correct).Elem().Type()).Interface().(Message)
|
||||||
|
log.Println("before: ", message)
|
||||||
|
decoder := tape.NewDecoder(bytes.NewBuffer(flat))
|
||||||
n, err := message.Decode(decoder)
|
n, err := message.Decode(decoder)
|
||||||
if err != nil { log.Fatalf("at %d: %v\n", n, err) }
|
if err != nil { log.Fatalf("at %d: %v\n", n, err) }
|
||||||
log.Println("got: ", message)
|
log.Println("got: ", message)
|
||||||
log.Println("correct:", correct)
|
log.Println("correct:", correct)
|
||||||
if n != len(data) {
|
if n != len(flat) {
|
||||||
log.Fatalf("n incorrect: %d != %d\n", n, len(data))
|
log.Fatalf("n incorrect: %d != %d\n", n, len(flat))
|
||||||
}
|
}
|
||||||
if !reflect.DeepEqual(message, correct) {
|
if !reflect.DeepEqual(message, correct) {
|
||||||
log.Fatalln("not equal")
|
log.Fatalln("not equal")
|
||||||
@ -77,7 +84,7 @@ func testGenerateRun(test *testing.T, protocol *Protocol, imports string, testCa
|
|||||||
imports, setup, testCase, teardown, static)
|
imports, setup, testCase, teardown, static)
|
||||||
|
|
||||||
// build and run test
|
// build and run test
|
||||||
command := exec.Command("go", "run", "./generate/test/generate-run")
|
command := exec.Command("go", "run", "./" + filepath.Join("generate", dir))
|
||||||
workingDirAbs, err := filepath.Abs("..")
|
workingDirAbs, err := filepath.Abs("..")
|
||||||
if err != nil { test.Fatal(err) }
|
if err != nil { test.Fatal(err) }
|
||||||
command.Dir = workingDirAbs
|
command.Dir = workingDirAbs
|
||||||
|
Loading…
x
Reference in New Issue
Block a user