github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/cnbutils/project/resolve_path_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package project_test 5 6 import ( 7 "path/filepath" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12 13 "github.com/SAP/jenkins-library/pkg/cnbutils" 14 "github.com/SAP/jenkins-library/pkg/cnbutils/project" 15 "github.com/SAP/jenkins-library/pkg/mock" 16 ) 17 18 func TestResolvePath(t *testing.T) { 19 t.Run("project descriptor and no path is maintained, it is located in the root", func(t *testing.T) { 20 utils := &cnbutils.MockUtils{ 21 FilesMock: &mock.FilesMock{}, 22 } 23 utils.AddFile("project.toml", []byte("")) 24 25 location, err := project.ResolvePath("project.toml", "", utils) 26 require.NoError(t, err) 27 28 assert.Equal(t, "project.toml", location) 29 }) 30 31 t.Run("project descriptor and path is is a file, it is located in the root", func(t *testing.T) { 32 utils := &cnbutils.MockUtils{ 33 FilesMock: &mock.FilesMock{}, 34 } 35 utils.CurrentDir = "/workdir" 36 utils.AddFile("project.toml", []byte("")) 37 utils.AddFile("test/file.zip", []byte("")) 38 39 location, err := project.ResolvePath("project.toml", "test/file.zip", utils) 40 require.NoError(t, err) 41 42 assert.Equal(t, "/workdir/project.toml", location) 43 }) 44 45 t.Run("project descriptor and path is is a dir, it is located in the path", func(t *testing.T) { 46 utils := &cnbutils.MockUtils{ 47 FilesMock: &mock.FilesMock{}, 48 } 49 utils.AddFile("test/project.toml", []byte("")) 50 51 location, err := project.ResolvePath("project.toml", "test", utils) 52 require.NoError(t, err) 53 54 assert.Equal(t, filepath.Join("test", "project.toml"), location) 55 }) 56 57 t.Run("project descriptor does not exist, empty string", func(t *testing.T) { 58 utils := &cnbutils.MockUtils{ 59 FilesMock: &mock.FilesMock{}, 60 } 61 location, err := project.ResolvePath("project.toml", "", utils) 62 require.NoError(t, err) 63 64 assert.Equal(t, "", location) 65 }) 66 }