kcl-lang.io/kpm@v0.8.7-0.20240520061008-9fc4c5efc8c7/pkg/runner/entry_test.go (about) 1 package runner 2 3 import ( 4 "path/filepath" 5 "strings" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 "kcl-lang.io/kpm/pkg/constants" 10 "kcl-lang.io/kpm/pkg/reporter" 11 ) 12 13 func TestFindModRootFrom(t *testing.T) { 14 // find root from local file 15 absPath, err := filepath.Abs("./testdata_external/external/main.k") 16 assert.Equal(t, err, nil) 17 root, err := FindModRootFrom(absPath) 18 assert.Equal(t, err, (*reporter.KpmEvent)(nil)) 19 assert.Equal(t, root, filepath.Dir(absPath)) 20 21 // find root from dir 22 absPath, err = filepath.Abs("./testdata_external/external/") 23 assert.Equal(t, err, nil) 24 root, err = FindModRootFrom(absPath) 25 assert.Equal(t, err, (*reporter.KpmEvent)(nil)) 26 assert.Equal(t, root, absPath) 27 28 // find root from kfile parent 29 absPath, err = filepath.Abs("./testdata/test_find_mod/sub/main.k") 30 assert.Equal(t, err, nil) 31 root, err = FindModRootFrom(absPath) 32 assert.Equal(t, err, (*reporter.KpmEvent)(nil)) 33 assert.Equal(t, root, filepath.Dir(filepath.Dir(absPath))) 34 35 // find root from kfile parent 36 absPath, err = filepath.Abs("./testdata/test_find_mod/sub") 37 assert.Equal(t, err, nil) 38 root, err = FindModRootFrom(absPath) 39 assert.Equal(t, err, (*reporter.KpmEvent)(nil)) 40 assert.Equal(t, root, filepath.Dir(absPath)) 41 } 42 43 func TestGetSourceKindFrom(t *testing.T) { 44 assert.Equal(t, string(GetSourceKindFrom("./testdata_external/external/main.k")), constants.FileEntry) 45 assert.Equal(t, string(GetSourceKindFrom("main.tar")), constants.TarEntry) 46 assert.Equal(t, string(GetSourceKindFrom("oci://test_url")), constants.UrlEntry) 47 assert.Equal(t, string(GetSourceKindFrom("https://github.com/test_org/test")), constants.GitEntry) 48 assert.Equal(t, string(GetSourceKindFrom("test_ref:0.0.1")), constants.RefEntry) 49 assert.Equal(t, string(GetSourceKindFrom("invalid input")), "") 50 } 51 52 func TestFindRunEntryFrom(t *testing.T) { 53 res, err := FindRunEntryFrom([]string{"./testdata_external/external/main.k", "./testdata_external/external"}) 54 assert.Equal(t, err, (*reporter.KpmEvent)(nil)) 55 assert.Equal(t, res.packageSource, "./testdata_external/external") 56 57 res, err = FindRunEntryFrom([]string{"./testdata_external/external/main.k", "./testdata_external/external", "./testdata/test_find_mod/sub/main.k"}) 58 assert.Equal(t, err.Type(), reporter.CompileFailed) 59 assert.Equal(t, strings.Contains(err.Error(), "cannot compile multiple packages"), true) 60 assert.Equal(t, res, (*Entry)(nil)) 61 }