github.com/jaylevin/jenkins-library@v1.230.4/pkg/cnbutils/project/resolve_path_test.go (about)

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