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  }