123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package command
- import (
- "io/ioutil"
- "os"
- "path/filepath"
- "testing"
- "git.i2edu.net/i2/go-zero/tools/goctl/model/sql/gen"
- "git.i2edu.net/i2/go-zero/tools/goctl/config"
- "git.i2edu.net/i2/go-zero/tools/goctl/util"
- "github.com/stretchr/testify/assert"
- )
- var (
- sql = "-- 用户表 --\nCREATE TABLE `user` (\n `id` bigint(10) NOT NULL AUTO_INCREMENT,\n `name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户名称',\n `password` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户密码',\n `mobile` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号',\n `gender` char(5) COLLATE utf8mb4_general_ci NOT NULL COMMENT '男|女|未公开',\n `nickname` varchar(255) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户昵称',\n `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,\n `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n PRIMARY KEY (`id`),\n UNIQUE KEY `name_index` (`name`),\n UNIQUE KEY `mobile_index` (`mobile`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;\n\n"
- cfg = &config.Config{
- NamingFormat: "gozero",
- }
- )
- func TestFromDDl(t *testing.T) {
- err := gen.Clean()
- assert.Nil(t, err)
- err = fromDDl("./user.sql", t.TempDir(), cfg, true, false)
- assert.Equal(t, errNotMatched, err)
- // case dir is not exists
- unknownDir := filepath.Join(t.TempDir(), "test", "user.sql")
- err = fromDDl(unknownDir, t.TempDir(), cfg, true, false)
- assert.True(t, func() bool {
- switch err.(type) {
- case *os.PathError:
- return true
- default:
- return false
- }
- }())
- // case empty src
- err = fromDDl("", t.TempDir(), cfg, true, false)
- if err != nil {
- assert.Equal(t, "expected path or path globbing patterns, but nothing found", err.Error())
- }
- tempDir := filepath.Join(t.TempDir(), "test")
- err = util.MkdirIfNotExist(tempDir)
- if err != nil {
- return
- }
- user1Sql := filepath.Join(tempDir, "user1.sql")
- user2Sql := filepath.Join(tempDir, "user2.sql")
- err = ioutil.WriteFile(user1Sql, []byte(sql), os.ModePerm)
- if err != nil {
- return
- }
- err = ioutil.WriteFile(user2Sql, []byte(sql), os.ModePerm)
- if err != nil {
- return
- }
- _, err = os.Stat(user1Sql)
- assert.Nil(t, err)
- _, err = os.Stat(user2Sql)
- assert.Nil(t, err)
- err = fromDDl(filepath.Join(tempDir, "user*.sql"), tempDir, cfg, true, false)
- assert.Nil(t, err)
- _, err = os.Stat(filepath.Join(tempDir, "usermodel.go"))
- assert.Nil(t, err)
- }
|