woodpecker/server/store/datastore/migration/common_test.go
6543 b2ce1f5da5
fix sqlite migration on column drop of uncommon schemas (#629)
* fix sqlite schema normalising

* sqlite robuster alg to extract columns form schema
2021-12-20 09:59:27 +01:00

52 lines
2.5 KiB
Go

package migration
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestRemoveColumnFromSQLITETableSchema(t *testing.T) {
schema := "CREATE TABLE repos ( repo_id INTEGER PRIMARY KEY AUTOINCREMENT, repo_user_id INTEGER, repo_owner TEXT, " +
"repo_name TEXT, repo_full_name TEXT, `repo_avatar` TEXT, repo_branch TEXT, repo_timeout INTEGER, " +
"repo_allow_pr BOOLEAN, repo_config_path TEXT, repo_visibility TEXT, repo_counter INTEGER, repo_active BOOLEAN, " +
"repo_fallback BOOLEAN, UNIQUE(repo_full_name) )"
assert.EqualValues(t, schema, removeColumnFromSQLITETableSchema(schema, ""))
assert.EqualValues(t, "CREATE TABLE repos ( repo_id INTEGER PRIMARY KEY AUTOINCREMENT, repo_user_id INTEGER, repo_owner TEXT, "+
"repo_name TEXT, repo_full_name TEXT, repo_branch TEXT, repo_timeout INTEGER, "+
"repo_allow_pr BOOLEAN, repo_config_path TEXT, repo_visibility TEXT, repo_counter INTEGER, repo_active BOOLEAN, "+
"repo_fallback BOOLEAN, UNIQUE(repo_full_name) )", removeColumnFromSQLITETableSchema(schema, "repo_avatar"))
assert.EqualValues(t, "CREATE TABLE repos ( repo_user_id INTEGER, repo_owner TEXT, "+
"repo_name TEXT, repo_full_name TEXT, `repo_avatar` TEXT, repo_timeout INTEGER, "+
"repo_allow_pr BOOLEAN, repo_config_path TEXT, repo_visibility TEXT, repo_counter INTEGER, repo_active BOOLEAN, "+
"repo_fallback BOOLEAN, UNIQUE(repo_full_name) )", removeColumnFromSQLITETableSchema(schema, "repo_id", "repo_branch", "invalid", ""))
}
func TestNormalizeSQLiteTableSchema(t *testing.T) {
assert.EqualValues(t, "", normalizeSQLiteTableSchema(``))
assert.EqualValues(t,
"CREATE TABLE repos ( repo_id INTEGER PRIMARY KEY AUTOINCREMENT, "+
"repo_user_id INTEGER, repo_owner TEXT, repo_name TEXT, repo_full_name TEXT, "+
"`repo_avatar` TEXT, repo_link TEXT, repo_clone TEXT, repo_branch TEXT, "+
"repo_timeout INTEGER, repo_allow_pr BOOLEAN, repo_config_path TEXT, "+
"repo_visibility TEXT, repo_counter INTEGER, repo_active BOOLEAN, "+
"repo_fallback BOOLEAN, UNIQUE(repo_full_name) )",
normalizeSQLiteTableSchema(`CREATE TABLE repos (
repo_id INTEGER PRIMARY KEY AUTOINCREMENT
,repo_user_id INTEGER
,repo_owner TEXT,
repo_name TEXT
,repo_full_name TEXT
,`+"`"+`repo_avatar`+"`"+` TEXT
,repo_link TEXT
,repo_clone TEXT
,repo_branch TEXT ,repo_timeout INTEGER
,repo_allow_pr BOOLEAN
,repo_config_path TEXT
, repo_visibility TEXT, repo_counter INTEGER, repo_active BOOLEAN, repo_fallback BOOLEAN,UNIQUE(repo_full_name)
)`))
}