46 lines
833 B
Go
46 lines
833 B
Go
package sqlgen
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
"path/filepath"
|
|
"reflect"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestParse(t *testing.T) {
|
|
toString := func(v any) string {
|
|
txt, _ := json.MarshalIndent(v, "", " ")
|
|
return string(txt)
|
|
}
|
|
|
|
paths, err := filepath.Glob("test-files/TestParse/*.def")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
for _, defPath := range paths {
|
|
t.Run(filepath.Base(defPath), func(t *testing.T) {
|
|
parsed, err := parsePath(defPath)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
b, err := os.ReadFile(strings.TrimSuffix(defPath, "def") + "json")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
expected := &schema{}
|
|
if err := json.Unmarshal(b, expected); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if !reflect.DeepEqual(parsed, expected) {
|
|
t.Fatalf("%s != %s", toString(parsed), toString(expected))
|
|
}
|
|
})
|
|
}
|
|
}
|