github.com/Ali-iotechsys/sqlboiler/v4@v4.0.0-20221208124957-6aec9a5f1f71/drivers/sqlboiler-sqlite3/driver/sqlite3_test.go (about) 1 package driver 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "flag" 7 "fmt" 8 "math/rand" 9 "os" 10 "os/exec" 11 "path/filepath" 12 "testing" 13 "time" 14 15 "github.com/stretchr/testify/require" 16 "github.com/volatiletech/sqlboiler/v4/drivers" 17 _ "modernc.org/sqlite" 18 ) 19 20 var ( 21 flagOverwriteGolden = flag.Bool("overwrite-golden", false, "Overwrite the golden file with the current execution results") 22 ) 23 24 func TestDriver(t *testing.T) { 25 rand.Seed(time.Now().Unix()) 26 b, err := os.ReadFile("testdatabase.sql") 27 if err != nil { 28 t.Fatal(err) 29 } 30 31 tmpName := filepath.Join(os.TempDir(), fmt.Sprintf("sqlboiler-sqlite3-%d.sql", rand.Int())) 32 33 out := &bytes.Buffer{} 34 createDB := exec.Command("sqlite3", tmpName) 35 createDB.Stdout = out 36 createDB.Stderr = out 37 createDB.Stdin = bytes.NewReader(b) 38 39 t.Log("sqlite file:", tmpName) 40 if err := createDB.Run(); err != nil { 41 t.Logf("sqlite output:\n%s\n", out.Bytes()) 42 t.Fatal(err) 43 } 44 t.Logf("sqlite output:\n%s\n", out.Bytes()) 45 46 tests := []struct { 47 name string 48 config drivers.Config 49 goldenJson string 50 }{ 51 { 52 name: "default", 53 config: drivers.Config{ 54 "dbname": tmpName, 55 }, 56 goldenJson: "sqlite3.golden.json", 57 }, 58 } 59 60 for _, tt := range tests { 61 t.Run(tt.name, func(t *testing.T) { 62 s := &SQLiteDriver{} 63 info, err := s.Assemble(tt.config) 64 if err != nil { 65 t.Fatal(err) 66 } 67 68 got, err := json.MarshalIndent(info, "", "\t") 69 if err != nil { 70 t.Fatal(err) 71 } 72 73 if *flagOverwriteGolden { 74 if err = os.WriteFile(tt.goldenJson, got, 0664); err != nil { 75 t.Fatal(err) 76 } 77 t.Log("wrote:", string(got)) 78 return 79 } 80 81 want, err := os.ReadFile(tt.goldenJson) 82 if err != nil { 83 t.Fatal(err) 84 } 85 86 require.JSONEq(t, string(want), string(got)) 87 }) 88 } 89 90 }