From 4c5584aaae3ee12c0918d8c7fe43dd1095f23d04 Mon Sep 17 00:00:00 2001 From: go-jet Date: Thu, 8 Aug 2019 10:51:59 +0200 Subject: [PATCH] Update circle ci for MySQL tests. --- .circleci/config.yml | 34 ++++++++++++++--- generator/internal/metadata/column_info.go | 2 +- internal/jet/testutils.go | 4 -- internal/testutils/test_utils.go | 44 +++++++++++++--------- tests/mysql/alltypes_test.go | 15 ++++---- tests/mysql/select_test.go | 12 +++--- tests/postgres/alltypes_test.go | 15 +++----- tests/postgres/select_test.go | 4 +- 8 files changed, 77 insertions(+), 53 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2357279..be15bb3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -14,6 +14,14 @@ jobs: POSTGRES_PASSWORD: jet POSTGRES_DB: jetdb + - image: circleci/php:7.1-apache-node-browsers # The primary container where steps are run + - image: circleci/mysql:8.0.4 + environment: + MYSQL_ROOT_PASSWORD: rootpw + MYSQL_DATABASE: test_db + MYSQL_USER: user + MYSQL_PASSWORD: passw0rd + working_directory: /go/src/github.com/go-jet/jet environment: # environment variables for the build itself @@ -28,6 +36,7 @@ jobs: command: | go get github.com/google/uuid go get github.com/lib/pq + go get github.com/go-sql-driver/mysql go get github.com/pkg/profile go get gotest.tools/assert @@ -48,14 +57,29 @@ jobs: echo Failed waiting for Postgres && exit 1 - run: - name: Init Postgres database + name: Waiting for MySQL to be ready command: | - cd tests - go run ./init/init.go - cd .. + for i in `seq 1 10`; + do + nc -z 127.0.0.1 3306 && echo Success && exit 0 + echo -n . + sleep 1 + done + echo Failed waiting for MySQL && exit 1 + - run: + name: Install MySQL CLI; + command: | + sudo apt-get install default-mysql-client + + - run: + name: Init Postgres and MySQL database + command: | + cd tests + go run ./init/init.go + cd .. - run: mkdir -p $TEST_RESULTS - - run: go test -v . ./tests -coverpkg=github.com/go-jet/jet,github.com/go-jet/jet/execution/...,github.com/go-jet/jet/generator/...,github.com/go-jet/jet/internal/... -coverprofile=cover.out 2>&1 | go-junit-report > $TEST_RESULTS/results.xml + - run: go test -v ./... -coverpkg=github.com/go-jet/jet/postgres/...,github.com/go-jet/mysql/...,github.com/go-jet/jet/execution/...,github.com/go-jet/jet/generator/...,github.com/go-jet/jet/internal/... -coverprofile=cover.out 2>&1 | go-junit-report > $TEST_RESULTS/results.xml - run: name: Upload code coverage diff --git a/generator/internal/metadata/column_info.go b/generator/internal/metadata/column_info.go index 0f8e882..988355c 100644 --- a/generator/internal/metadata/column_info.go +++ b/generator/internal/metadata/column_info.go @@ -85,7 +85,7 @@ func (c ColumnInfo) GoBaseType() string { case "uuid": return "uuid.UUID" default: - fmt.Println("Unsupported sql type: " + c.DataType + ", " + c.EnumName + ", using string instead for model type.") + fmt.Println("Unsupported sql type: " + c.DataType + ", using string instead for model type.") return "string" } } diff --git a/internal/jet/testutils.go b/internal/jet/testutils.go index 5d5dff7..e73e117 100644 --- a/internal/jet/testutils.go +++ b/internal/jet/testutils.go @@ -1,7 +1,6 @@ package jet import ( - "fmt" "gotest.tools/assert" "testing" ) @@ -106,9 +105,6 @@ func assertStatement(t *testing.T, query Statement, expectedQuery string, expect queryStr, args, err := query.Sql() assert.NilError(t, err) - fmt.Println(queryStr) - - //fmt.Println(queryStr) assert.Equal(t, queryStr, expectedQuery) assert.DeepEqual(t, args, expectedArgs) } diff --git a/internal/testutils/test_utils.go b/internal/testutils/test_utils.go index 5a0011e..349d4db 100644 --- a/internal/testutils/test_utils.go +++ b/internal/testutils/test_utils.go @@ -8,27 +8,14 @@ import ( "github.com/go-jet/jet/internal/jet" "gotest.tools/assert" "io/ioutil" + "os" + "path/filepath" "runtime" "strings" "testing" "time" ) -func JsonPrint(v interface{}) { - jsonText, _ := json.MarshalIndent(v, "", "\t") - fmt.Println(string(jsonText)) -} - -func JsonSave(v interface{}, path string) { - jsonText, _ := json.MarshalIndent(v, "", "\t") - - err := ioutil.WriteFile(path, jsonText, 0644) - - if err != nil { - panic(err) - } -} - func AssertExec(t *testing.T, stmt jet.Statement, db execution.DB, rowsAffected ...int64) { res, err := stmt.Exec(db) @@ -47,6 +34,16 @@ func AssertExecErr(t *testing.T, stmt jet.Statement, db execution.DB, errorStr s assert.Error(t, err, errorStr) } +func getFullPath(relativePath string) string { + goPath := os.Getenv("GOPATH") + return filepath.Join(goPath, "src/github.com/go-jet/jet/tests", relativePath) +} + +func PrintJson(v interface{}) { + jsonText, _ := json.MarshalIndent(v, "", "\t") + fmt.Println(string(jsonText)) +} + func AssertJSON(t *testing.T, data interface{}, expectedJSON string) { jsonData, err := json.MarshalIndent(data, "", "\t") assert.NilError(t, err) @@ -54,8 +51,21 @@ func AssertJSON(t *testing.T, data interface{}, expectedJSON string) { assert.Equal(t, "\n"+string(jsonData)+"\n", expectedJSON) } -func AssertJSONFile(t *testing.T, data interface{}, jsonFilePath string) { - fileJSONData, err := ioutil.ReadFile(jsonFilePath) +func SaveJsonFile(v interface{}, testRelativePath string) { + jsonText, _ := json.MarshalIndent(v, "", "\t") + + filePath := getFullPath(testRelativePath) + err := ioutil.WriteFile(filePath, jsonText, 0644) + + if err != nil { + panic(err) + } +} + +func AssertJSONFile(t *testing.T, data interface{}, testRelativePath string) { + + filePath := getFullPath(testRelativePath) + fileJSONData, err := ioutil.ReadFile(filePath) assert.NilError(t, err) if runtime.GOOS == "windows" { diff --git a/tests/mysql/alltypes_test.go b/tests/mysql/alltypes_test.go index a36d09f..2eb65a3 100644 --- a/tests/mysql/alltypes_test.go +++ b/tests/mysql/alltypes_test.go @@ -1,7 +1,6 @@ package mysql import ( - "fmt" "github.com/go-jet/jet/internal/testutils" "github.com/go-jet/jet/tests/.gentestdata/mysql/test_sample/model" . "github.com/go-jet/jet/tests/.gentestdata/mysql/test_sample/table" @@ -26,7 +25,7 @@ func TestAllTypes(t *testing.T) { assert.NilError(t, err) - //testutils.JsonPrint(dest) + //testutils.PrintJson(dest) testutils.AssertJSON(t, dest, allTypesJson) } @@ -96,7 +95,7 @@ LIMIT ?; assert.NilError(t, err) - //testutils.JsonPrint(dest) + //testutils.PrintJson(dest) testutils.AssertJSON(t, dest, ` [ @@ -421,7 +420,7 @@ LIMIT ?; assert.NilError(t, err) - //testutils.JsonPrint(dest) + //testutils.PrintJson(dest) testutils.AssertJSONFile(t, dest, "./testdata/common/int_operators.json") } @@ -523,7 +522,7 @@ func TestTimeExpressions(t *testing.T) { CURRENT_TIME(3), ) - fmt.Println(query.Sql()) + //fmt.Println(query.Sql()) testutils.AssertStatementSql(t, query, ` SELECT CAST(? AS TIME), @@ -711,7 +710,7 @@ func TestTimestampExpressions(t *testing.T) { CURRENT_TIMESTAMP(2), ) - fmt.Println(query.DebugSql()) + //fmt.Println(query.DebugSql()) testutils.AssertDebugStatementSql(t, query, ` SELECT all_types.timestamp = all_types.timestamp, @@ -756,7 +755,7 @@ func TestTimeLiterals(t *testing.T) { TimestampT(timeT).AS("timestampT"), ).FROM(AllTypes).LIMIT(1) - fmt.Println(query.Sql()) + //fmt.Println(query.Sql()) testutils.AssertStatementSql(t, query, ` SELECT CAST(? AS DATE) AS "date", @@ -783,7 +782,7 @@ LIMIT ?; err = query.Query(db, &dest) assert.NilError(t, err) - testutils.JsonPrint(dest) + //testutils.PrintJson(dest) testutils.AssertJSON(t, dest, ` { diff --git a/tests/mysql/select_test.go b/tests/mysql/select_test.go index c693ca6..2f8b26d 100644 --- a/tests/mysql/select_test.go +++ b/tests/mysql/select_test.go @@ -63,8 +63,8 @@ ORDER BY actor.actor_id; assert.Equal(t, len(dest), 200) assert.DeepEqual(t, dest[0], actor1) - //testutils.JsonPrint(dest) - //testutils.JsonSave(dest, "mysql/testdata/all_actors.json") + //testutils.PrintJson(dest) + //testutils.SaveJsonFile(dest, "mysql/testdata/all_actors.json") testutils.AssertJSONFile(t, dest, "mysql/testdata/all_actors.json") } @@ -129,11 +129,11 @@ ORDER BY payment.customer_id, SUM(payment.amount) ASC; assert.NilError(t, err) - //testutils.JsonPrint(dest) + //testutils.PrintJson(dest) assert.Equal(t, len(dest), 174) - //testutils.JsonSave(dest, "mysql/testdata/customer_payment_sum.json") + //testutils.SaveJsonFile(dest, "mysql/testdata/customer_payment_sum.json") testutils.AssertJSONFile(t, dest, "mysql/testdata/customer_payment_sum.json") } @@ -169,7 +169,7 @@ func TestSubQuery(t *testing.T) { err := query.Query(db, &dest) assert.NilError(t, err) - //testutils.JsonSave(dest, "mysql/testdata/r_rating_films.json") + //testutils.SaveJsonFile(dest, "mysql/testdata/r_rating_films.json") testutils.AssertJSONFile(t, dest, "mysql/testdata/r_rating_films.json") } @@ -317,7 +317,7 @@ LIMIT ?; //assert.Equal(t, len(dest[0].Films), 10) //assert.Equal(t, len(dest[0].Films[0].Actors), 10) - //testutils.JsonSave(dest, "./mysql/testdata/lang_film_actor_inventory_rental.json") + //testutils.SaveJsonFile(dest, "./mysql/testdata/lang_film_actor_inventory_rental.json") testutils.AssertJSONFile(t, dest, "./mysql/testdata/lang_film_actor_inventory_rental.json") } diff --git a/tests/postgres/alltypes_test.go b/tests/postgres/alltypes_test.go index fb8b2a2..2504420 100644 --- a/tests/postgres/alltypes_test.go +++ b/tests/postgres/alltypes_test.go @@ -1,7 +1,6 @@ package postgres import ( - "fmt" "github.com/go-jet/jet/internal/testutils" "github.com/go-jet/jet/postgres" . "github.com/go-jet/jet/postgres" @@ -94,7 +93,7 @@ LIMIT $5; assert.NilError(t, err) - //testutils.JsonPrint(dest) + //testutils.PrintJson(dest) testutils.AssertJSON(t, dest, ` [ @@ -233,11 +232,7 @@ func TestStringOperators(t *testing.T) { TO_HEX(AllTypes.IntegerPtr), ) - //_, args, _ := query.Sql() - //fmt.Println(query.Sql()) - //fmt.Println(args[15]) - fmt.Println(query.Sql()) err := query.Query(db, &struct{}{}) @@ -408,7 +403,7 @@ LIMIT $35; assert.NilError(t, err) - //testutils.JsonPrint(dest) + //testutils.PrintJson(dest) testutils.AssertJSONFile(t, dest, "./testdata/common/float_operators.json") } @@ -485,7 +480,7 @@ func TestIntegerOperators(t *testing.T) { CBRT(ABSi(AllTypes.BigInt)).AS("cbrt"), ).LIMIT(2) - fmt.Println(query.Sql()) + //fmt.Println(query.Sql()) testutils.AssertStatementSql(t, query, ` SELECT all_types.big_int AS "all_types.big_int", @@ -547,8 +542,8 @@ LIMIT $22; assert.NilError(t, err) - //testutils.JsonSave("./testdata/common/int_operators.json", dest) - //testutils.JsonPrint(dest) + //testutils.SaveJsonFile("./testdata/common/int_operators.json", dest) + //testutils.PrintJson(dest) testutils.AssertJSONFile(t, dest, "./testdata/common/int_operators.json") } diff --git a/tests/postgres/select_test.go b/tests/postgres/select_test.go index 6cea901..cfd522d 100644 --- a/tests/postgres/select_test.go +++ b/tests/postgres/select_test.go @@ -1051,11 +1051,11 @@ ORDER BY customer.customer_id, SUM(payment.amount) ASC; assert.NilError(t, err) - //testutils.JsonPrint(dest) + //testutils.PrintJson(dest) assert.Equal(t, len(dest), 104) - //testutils.JsonSave(dest, "postgres/testdata/customer_payment_sum.json") + //testutils.SaveJsonFile(dest, "postgres/testdata/customer_payment_sum.json") testutils.AssertJSONFile(t, dest, "postgres/testdata/customer_payment_sum.json") }