kcl-lang.io/kpm@v0.8.7-0.20240520061008-9fc4c5efc8c7/pkg/package/package_test.go (about) 1 package pkg 2 3 import ( 4 "os" 5 "path/filepath" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 "kcl-lang.io/kpm/pkg/env" 10 "kcl-lang.io/kpm/pkg/opt" 11 "kcl-lang.io/kpm/pkg/reporter" 12 "kcl-lang.io/kpm/pkg/runner" 13 "kcl-lang.io/kpm/pkg/utils" 14 ) 15 16 const testDataDir = "test_data" 17 18 func getTestDir(subDir string) string { 19 pwd, _ := os.Getwd() 20 testDir := filepath.Join(pwd, testDataDir) 21 testDir = filepath.Join(testDir, subDir) 22 23 return testDir 24 } 25 26 func initTestDir(subDir string) string { 27 testDir := getTestDir(subDir) 28 // clean the test data 29 _ = os.RemoveAll(testDir) 30 _ = os.Mkdir(testDir, 0755) 31 32 return testDir 33 } 34 35 func TestLoadKclPkg(t *testing.T) { 36 testDir := initTestDir("test_init_empty_mod") 37 kclPkg, err := LoadKclPkg(testDir) 38 if err == nil && kclPkg != nil { 39 t.Errorf("Failed to 'LoadKclPkg'.") 40 } 41 42 mfile := NewModFile(&opt.InitOptions{Name: "test_name", InitPath: testDir}) 43 _ = mfile.StoreModFile() 44 45 kclPkg, err = LoadKclPkg(testDir) 46 if err != nil { 47 t.Errorf("Failed to 'LoadKclPkg'.") 48 } 49 assert.Equal(t, kclPkg.ModFile.Pkg.Name, "test_name") 50 assert.Equal(t, kclPkg.ModFile.Pkg.Version, "0.0.1") 51 assert.Equal(t, kclPkg.ModFile.Pkg.Edition, runner.GetKclVersion()) 52 assert.Equal(t, len(kclPkg.ModFile.Dependencies.Deps), 0) 53 assert.Equal(t, len(kclPkg.Dependencies.Deps), 0) 54 } 55 56 func TestCheck(t *testing.T) { 57 testDir := getTestDir("test_check") 58 dep := Dependency{ 59 FullName: "test_full_name", 60 Sum: "", 61 } 62 63 testFullDir := filepath.Join(testDir, "test_full_name") 64 65 assert.Equal(t, check(dep, testFullDir), false) 66 dep.Sum = "sdfsldk" 67 assert.Equal(t, check(dep, testFullDir), false) 68 dep.Sum = "okQqHgQaR1il7vOPuZPPVostthK5nUJkZAZVgXMqU3Q=" 69 assert.Equal(t, check(dep, testFullDir), true) 70 } 71 72 func TestGetPkgName(t *testing.T) { 73 kclPkg := KclPkg{ 74 ModFile: ModFile{ 75 Pkg: Package{ 76 Name: "test", 77 }, 78 }, 79 } 80 assert.Equal(t, kclPkg.GetPkgName(), "test") 81 } 82 83 func TestValidateKpmHome(t *testing.T) { 84 kclPkg := NewKclPkg(&opt.InitOptions{ 85 Name: "test_name", 86 InitPath: "test_home_path", 87 }) 88 oldValue := os.Getenv(env.PKG_PATH) 89 os.Setenv(env.PKG_PATH, "test_home_path") 90 err := kclPkg.ValidateKpmHome(os.Getenv(env.PKG_PATH)) 91 assert.Equal(t, err.Error(), "environment variable KCL_PKG_PATH cannot be set to the same path as the current KCL package.\n") 92 assert.Equal(t, err.Type(), reporter.InvalidKpmHomeInCurrentPkg) 93 os.Setenv(env.PKG_PATH, oldValue) 94 } 95 96 func TestLoadKclPkgFromTar(t *testing.T) { 97 testDir := getTestDir("load_kcl_tar") 98 assert.Equal(t, utils.DirExists(filepath.Join(testDir, "kcl1-v0.0.3")), false) 99 100 kclPkg, err := LoadKclPkgFromTar(filepath.Join(testDir, "kcl1-v0.0.3.tar")) 101 assert.Equal(t, err, nil) 102 assert.Equal(t, kclPkg.HomePath, filepath.Join(testDir, "kcl1-v0.0.3")) 103 assert.Equal(t, kclPkg.ModFile.Pkg.Name, "kcl1") 104 assert.Equal(t, kclPkg.ModFile.Pkg.Edition, "0.0.1") 105 assert.Equal(t, kclPkg.ModFile.Pkg.Version, "0.0.3") 106 107 assert.Equal(t, len(kclPkg.ModFile.Deps), 2) 108 assert.Equal(t, kclPkg.ModFile.Deps["konfig"].Name, "konfig") 109 assert.Equal(t, kclPkg.ModFile.Deps["konfig"].FullName, "konfig_v0.0.1") 110 assert.Equal(t, kclPkg.ModFile.Deps["konfig"].Git.Url, "https://github.com/awesome-kusion/konfig.git") 111 assert.Equal(t, kclPkg.ModFile.Deps["konfig"].Git.Tag, "v0.0.1") 112 113 assert.Equal(t, kclPkg.ModFile.Deps["oci_konfig"].Name, "oci_konfig") 114 assert.Equal(t, kclPkg.ModFile.Deps["oci_konfig"].FullName, "oci_konfig_0.0.1") 115 assert.Equal(t, kclPkg.ModFile.Deps["oci_konfig"].Oci.Tag, "0.0.1") 116 117 assert.Equal(t, len(kclPkg.Deps), 2) 118 assert.Equal(t, kclPkg.Deps["konfig"].Name, "konfig") 119 assert.Equal(t, kclPkg.Deps["konfig"].FullName, "konfig_v0.0.1") 120 assert.Equal(t, kclPkg.Deps["konfig"].Git.Url, "https://github.com/awesome-kusion/konfig.git") 121 assert.Equal(t, kclPkg.Deps["konfig"].Git.Tag, "v0.0.1") 122 assert.Equal(t, kclPkg.Deps["konfig"].Sum, "XFvHdBAoY/+qpJWmj8cjwOwZO8a3nX/7SE35cTxQOFU=") 123 124 assert.Equal(t, kclPkg.Deps["oci_konfig"].Name, "oci_konfig") 125 assert.Equal(t, kclPkg.Deps["oci_konfig"].FullName, "oci_konfig_0.0.1") 126 assert.Equal(t, kclPkg.Deps["oci_konfig"].Oci.Reg, "ghcr.io") 127 assert.Equal(t, kclPkg.Deps["oci_konfig"].Oci.Repo, "awesome-kusion/oci_konfig") 128 assert.Equal(t, kclPkg.Deps["oci_konfig"].Oci.Tag, "0.0.1") 129 assert.Equal(t, kclPkg.Deps["oci_konfig"].Sum, "sLr3e6W4RPrXYyswdOSiKqkHes1QHX2tk6SwxAPDqqo=") 130 131 assert.Equal(t, kclPkg.GetPkgTag(), "0.0.3") 132 assert.Equal(t, kclPkg.GetPkgName(), "kcl1") 133 assert.Equal(t, kclPkg.GetPkgFullName(), "kcl1_0.0.3") 134 assert.Equal(t, kclPkg.GetPkgTarName(), "kcl1_0.0.3.tar") 135 136 assert.Equal(t, utils.DirExists(filepath.Join(testDir, "kcl1-v0.0.3")), true) 137 err = os.RemoveAll(filepath.Join(testDir, "kcl1-v0.0.3")) 138 assert.Equal(t, err, nil) 139 }