提交 d8b12def 编写于 作者: aaronchen2k2k's avatar aaronchen2k2k

unit test for table parse

上级 c230478f
DROP TABLE IF EXISTS `by_field_name`;
CREATE TABLE `by_field_name` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(45) DEFAULT NULL,
`telphone` varchar(45) DEFAULT NULL,
`mobilephone` varchar(45) DEFAULT NULL,
`email` varchar(45) DEFAULT NULL,
`url` varchar(45) DEFAULT NULL,
`ip` varchar(45) DEFAULT NULL,
`macaddress` varchar(45) DEFAULT NULL,
`creditcard` varchar(45) DEFAULT NULL,
`idcard` varchar(45) DEFAULT NULL,
`token` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
DROP TABLE IF EXISTS `by_field_type`;
CREATE TABLE `by_field_type` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`f_bit` bit(1) NOT NULL,
`f_tinyint` tinyint DEFAULT NULL,
`f_smallint` smallint DEFAULT NULL,
`f_mediumint` mediumint DEFAULT NULL,
`f_int` int DEFAULT NULL,
`f_bigint` bigint DEFAULT NULL,
`f_float` float DEFAULT NULL,
`f_double` double DEFAULT NULL,
`f_decimal` decimal(10,2) DEFAULT NULL,
`f_char` char(10) DEFAULT NULL,
`f_tinytext` tinytext,
`f_text` text,
`f_mediumtext` mediumtext,
`f_longtext` longtext,
`f_tinyblob` tinyblob,
`f_blob` blob,
`f_mediumblob` mediumblob,
`f_longblob` longblob,
`f_binary` binary(10) DEFAULT NULL,
`f_varbinary` varbinary(1000) DEFAULT NULL,
`f_date` date DEFAULT NULL,
`f_time` time DEFAULT NULL,
`f_year` year DEFAULT NULL,
`f_datetime` datetime DEFAULT NULL,
`f_timestamp` timestamp(6) NULL DEFAULT NULL,
`f_enum` enum('a','b','c') DEFAULT NULL,
`f_set` set('a','b','c') DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
DROP TABLE IF EXISTS `by_records`;
CREATE TABLE `by_records` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`f1` varchar(100) DEFAULT NULL,
`f2` varchar(100) DEFAULT NULL,
`f3` varchar(100) DEFAULT NULL,
`f4` varchar(100) DEFAULT NULL,
`f5` varchar(100) DEFAULT NULL,
`f6` varchar(100) DEFAULT NULL,
`f7` varchar(100) DEFAULT NULL,
`f8` varchar(100) DEFAULT NULL,
`f9` varchar(100) DEFAULT NULL,
`f10` varchar(100) DEFAULT NULL,
`f11` varchar(100) DEFAULT NULL,
`f12` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
package parse_table
import (
"flag"
"github.com/easysoft/zendata/internal/command"
commandConfig "github.com/easysoft/zendata/internal/command/config"
configUtils "github.com/easysoft/zendata/internal/pkg/config"
fileUtils "github.com/easysoft/zendata/pkg/utils/file"
"github.com/easysoft/zendata/pkg/utils/vari"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"log"
"os"
"path/filepath"
"strings"
"testing"
)
var (
Dsn = "" // "root:P2ssw0rd@(127.0.0.1:3306)/zd_test?charset=utf8&parseTime=True&loc=Local"
Out = "" // "demo/out/sql"
TableByFieldType = "by_field_type"
TableByFieldName = "by_field_name"
TableByRecords = "by_records"
)
func setup() {
initArgs()
os.Chdir("../../../../")
configUtils.InitConfig("")
vari.DB, _ = commandConfig.NewGormDB()
initTables()
}
func teardown() {
}
func TestMain(m *testing.M) {
setup()
code := m.Run()
teardown()
os.Exit(code)
}
func TestGenDefFromColumnDesc(t *testing.T) {
vari.GlobalVars.Table = "by_field_type"
gen(t)
}
func TestGenDefFromFieldName(t *testing.T) {
vari.GlobalVars.Table = "by_field_name"
gen(t)
}
func TestGenDefFromRecords(t *testing.T) {
vari.GlobalVars.Table = "by_records"
gen(t)
}
func gen(t *testing.T) {
mainCtrl, _ := command.InitCtrl()
mainCtrl.GenYaml("")
}
func initTables() {
initTable(TableByFieldType)
initTable(TableByFieldName)
initTable(TableByRecords)
}
func initTable(name string) {
dir := filepath.Join("cmd", "test", "unit", "parse_table")
sqls := fileUtils.ReadFile(filepath.Join(dir, name+".sql"))
arr := strings.Split(sqls, ";")
db, err := gorm.Open(mysql.Open(vari.GlobalVars.DBDsn))
if err != nil {
panic(err)
}
for _, sql := range arr {
if sql == "" {
continue
}
err = db.Exec(sql).Error
if err != nil {
panic(err)
}
}
}
func initArgs() {
flag.Parse()
argList := flag.Args()
vari.GlobalVars.DBDsn = argList[0]
vari.GlobalVars.Output = argList[1]
log.Printf("DBDsn = %s", vari.GlobalVars.DBDsn)
log.Printf("Output = %s", vari.GlobalVars.Output)
}
......@@ -23,8 +23,7 @@ import (
)
func InitConfig(root string) {
var err error = nil
vari.WorkDir = fileUtils.GetWorkDir()
vari.WorkDir, _ = fileUtils.GetWorkDir(root)
logUtils.PrintTo(fmt.Sprintf("WorkDir=%s", vari.WorkDir))
vari.CfgFile = vari.WorkDir + ".zd.conf"
......@@ -32,17 +31,6 @@ func InitConfig(root string) {
i118Utils.InitI118(vari.Config.Language)
if root != "" {
if !fileUtils.IsAbsPath(root) {
root, err = filepath.Abs(root)
if err != nil {
logUtils.PrintToWithColor(i118Utils.I118Prt.Sprintf("root_invalid", root), color.FgRed)
os.Exit(1)
}
}
vari.WorkDir = fileUtils.AddSepIfNeeded(root)
}
temp := filepath.Join(vari.WorkDir, "tmp", "cache")
if !fileUtils.FileExist(temp) {
logUtils.PrintToWithColor(i118Utils.I118Prt.Sprintf("root_invalid", vari.WorkDir), color.FgRed)
......
......@@ -122,7 +122,20 @@ func AddSepIfNeeded(pth string) string {
return pth
}
func GetWorkDir() string {
func GetWorkDir(root string) (ret string, err error) {
if root != "" {
if !IsAbsPath(root) {
root, err = filepath.Abs(root)
if err != nil {
logUtils.PrintToWithColor(i118Utils.I118Prt.Sprintf("root_invalid", root), color.FgRed)
os.Exit(1)
}
}
ret = AddSepIfNeeded(root)
return
}
dir := ""
isRelease := commonUtils.IsRelease()
logUtils.PrintTo(fmt.Sprintf("isRelease=%v", isRelease))
......@@ -162,14 +175,14 @@ func GetWorkDir() string {
}
dir, _ = filepath.Abs(dir)
dir = AddSepIfNeeded(dir)
ret = AddSepIfNeeded(dir)
if vari.Verbose {
logUtils.PrintTo(fmt.Sprintf("isRelease = %t, isRunAsBackendProcess = %t, workDir = %s \n",
isRelease, isRunAsBackendProcess, dir))
isRelease, isRunAsBackendProcess, ret))
}
return dir
return
}
func GetDirWhereRunIn() string { // where we run file in
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册