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  }