github.com/SAP/jenkins-library@v1.362.0/pkg/versioning/pip_test.go (about)

     1  //go:build unit
     2  // +build unit
     3  
     4  package versioning
     5  
     6  import (
     7  	"fmt"
     8  	"testing"
     9  
    10  	"github.com/SAP/jenkins-library/pkg/mock"
    11  	"github.com/stretchr/testify/assert"
    12  )
    13  
    14  func TestPipGetVersion(t *testing.T) {
    15  	t.Parallel()
    16  
    17  	t.Run("success case - setup.py", func(t *testing.T) {
    18  		fileUtils := mock.FilesMock{}
    19  		fileUtils.AddFile("setup.py", []byte(`setup(name="simple-python",version="1.2.3"`))
    20  
    21  		pip := Pip{
    22  			path:       "setup.py",
    23  			fileExists: fileUtils.FileExists,
    24  			readFile:   fileUtils.FileRead,
    25  			writeFile:  fileUtils.FileWrite,
    26  		}
    27  
    28  		version, err := pip.GetVersion()
    29  		assert.NoError(t, err)
    30  		assert.Equal(t, "1.2.3", version)
    31  	})
    32  
    33  	t.Run("success case - setup.py & version.txt", func(t *testing.T) {
    34  		fileUtils := mock.FilesMock{}
    35  		fileUtils.AddFile("setup.py", []byte(`setup(name="simple-python",`))
    36  		fileUtils.AddFile("version.txt", []byte(`1.2.4`))
    37  
    38  		pip := Pip{
    39  			path:       "setup.py",
    40  			fileExists: fileUtils.FileExists,
    41  			readFile:   fileUtils.FileRead,
    42  			writeFile:  fileUtils.FileWrite,
    43  		}
    44  
    45  		version, err := pip.GetVersion()
    46  		assert.NoError(t, err)
    47  		assert.Equal(t, "1.2.4", version)
    48  	})
    49  
    50  	t.Run("success case - setup.py & VERSION", func(t *testing.T) {
    51  		fileUtils := mock.FilesMock{}
    52  		fileUtils.AddFile("setup.py", []byte(`setup(name="simple-python",`))
    53  		fileUtils.AddFile("VERSION", []byte(`1.2.5`))
    54  
    55  		pip := Pip{
    56  			path:       "setup.py",
    57  			fileExists: fileUtils.FileExists,
    58  			readFile:   fileUtils.FileRead,
    59  			writeFile:  fileUtils.FileWrite,
    60  		}
    61  
    62  		version, err := pip.GetVersion()
    63  		assert.NoError(t, err)
    64  		assert.Equal(t, "1.2.5", version)
    65  	})
    66  
    67  	t.Run("error to read file", func(t *testing.T) {
    68  		fileUtils := mock.FilesMock{}
    69  
    70  		pip := Pip{
    71  			path:       "setup.py",
    72  			fileExists: fileUtils.FileExists,
    73  			readFile:   fileUtils.FileRead,
    74  			writeFile:  fileUtils.FileWrite,
    75  		}
    76  
    77  		_, err := pip.GetVersion()
    78  		assert.Contains(t, fmt.Sprint(err), "failed to read file 'setup.py'")
    79  	})
    80  
    81  	t.Run("error to retrieve version", func(t *testing.T) {
    82  		fileUtils := mock.FilesMock{}
    83  		fileUtils.AddFile("setup.py", []byte(`setup(name="simple-python",`))
    84  
    85  		pip := Pip{
    86  			path:       "setup.py",
    87  			fileExists: fileUtils.FileExists,
    88  			readFile:   fileUtils.FileRead,
    89  			writeFile:  fileUtils.FileWrite,
    90  		}
    91  
    92  		_, err := pip.GetVersion()
    93  		assert.Contains(t, fmt.Sprint(err), "failed to retrieve version")
    94  	})
    95  }
    96  
    97  func TestPipSetVersion(t *testing.T) {
    98  	t.Run("success case - setup.py", func(t *testing.T) {
    99  		fileUtils := mock.FilesMock{}
   100  		fileUtils.AddFile("setup.py", []byte(`setup(name="simple-python",version="1.2.3"`))
   101  
   102  		pip := Pip{
   103  			path:       "setup.py",
   104  			fileExists: fileUtils.FileExists,
   105  			readFile:   fileUtils.FileRead,
   106  			writeFile:  fileUtils.FileWrite,
   107  		}
   108  
   109  		err := pip.SetVersion("2.0.0")
   110  		assert.NoError(t, err)
   111  		content, _ := fileUtils.FileRead("setup.py")
   112  		assert.Contains(t, string(content), `version="2.0.0"`)
   113  	})
   114  
   115  	t.Run("success case - setup.py & version.txt", func(t *testing.T) {
   116  		fileUtils := mock.FilesMock{}
   117  		fileUtils.AddFile("setup.py", []byte(`setup(name="simple-python",`))
   118  		fileUtils.AddFile("version.txt", []byte(`1.2.3`))
   119  
   120  		pip := Pip{
   121  			path:       "setup.py",
   122  			fileExists: fileUtils.FileExists,
   123  			readFile:   fileUtils.FileRead,
   124  			writeFile:  fileUtils.FileWrite,
   125  		}
   126  
   127  		err := pip.SetVersion("2.0.0")
   128  		assert.NoError(t, err)
   129  		content, _ := fileUtils.FileRead("version.txt")
   130  		assert.Equal(t, "2.0.0", string(content))
   131  	})
   132  
   133  	t.Run("success case - setup.py & VERSION", func(t *testing.T) {
   134  		fileUtils := mock.FilesMock{}
   135  		fileUtils.AddFile("setup.py", []byte(`setup(name="simple-python",`))
   136  		fileUtils.AddFile("VERSION", []byte(`1.2.3`))
   137  
   138  		pip := Pip{
   139  			path:       "setup.py",
   140  			fileExists: fileUtils.FileExists,
   141  			readFile:   fileUtils.FileRead,
   142  			writeFile:  fileUtils.FileWrite,
   143  		}
   144  
   145  		err := pip.SetVersion("2.0.0")
   146  		assert.NoError(t, err)
   147  		content, _ := fileUtils.FileRead("VERSION")
   148  		assert.Equal(t, "2.0.0", string(content))
   149  	})
   150  
   151  	t.Run("error to read file", func(t *testing.T) {
   152  		fileUtils := mock.FilesMock{}
   153  
   154  		pip := Pip{
   155  			path:       "setup.py",
   156  			fileExists: fileUtils.FileExists,
   157  			readFile:   fileUtils.FileRead,
   158  			writeFile:  fileUtils.FileWrite,
   159  		}
   160  
   161  		err := pip.SetVersion("2.0.0")
   162  		assert.Contains(t, fmt.Sprint(err), "failed to read file 'setup.py'")
   163  	})
   164  
   165  	t.Run("error to retrieve version", func(t *testing.T) {
   166  		fileUtils := mock.FilesMock{}
   167  		fileUtils.AddFile("setup.py", []byte(`setup(name="simple-python",`))
   168  
   169  		pip := Pip{
   170  			path:       "setup.py",
   171  			fileExists: fileUtils.FileExists,
   172  			readFile:   fileUtils.FileRead,
   173  			writeFile:  fileUtils.FileWrite,
   174  		}
   175  
   176  		err := pip.SetVersion("2.0.0")
   177  		assert.Contains(t, fmt.Sprint(err), "failed to retrieve version")
   178  	})
   179  }
   180  
   181  func TestPipGetCoordinates(t *testing.T) {
   182  	t.Run("success case - setup.py", func(t *testing.T) {
   183  		fileUtils := mock.FilesMock{}
   184  		fileUtils.AddFile("setup.py", []byte(`setup(name="simple-python",version="1.2.3"`))
   185  
   186  		pip := Pip{
   187  			path:       "setup.py",
   188  			fileExists: fileUtils.FileExists,
   189  			readFile:   fileUtils.FileRead,
   190  			writeFile:  fileUtils.FileWrite,
   191  		}
   192  
   193  		coordinates, err := pip.GetCoordinates()
   194  		assert.NoError(t, err)
   195  		assert.Equal(t, "simple-python", coordinates.ArtifactID)
   196  		assert.Equal(t, "1.2.3", coordinates.Version)
   197  
   198  	})
   199  
   200  	t.Run("success case - only version", func(t *testing.T) {
   201  		fileUtils := mock.FilesMock{}
   202  		fileUtils.AddFile("setup.py", []byte(`setup(version="1.2.3"`))
   203  
   204  		pip := Pip{
   205  			path:       "setup.py",
   206  			fileExists: fileUtils.FileExists,
   207  			readFile:   fileUtils.FileRead,
   208  			writeFile:  fileUtils.FileWrite,
   209  		}
   210  
   211  		coordinates, err := pip.GetCoordinates()
   212  		assert.NoError(t, err)
   213  		assert.Equal(t, "", coordinates.ArtifactID)
   214  		assert.Equal(t, "1.2.3", coordinates.Version)
   215  
   216  	})
   217  
   218  	t.Run("error to retrieve setup.py", func(t *testing.T) {
   219  		fileUtils := mock.FilesMock{}
   220  
   221  		pip := Pip{
   222  			path:       "setup.py",
   223  			fileExists: fileUtils.FileExists,
   224  			readFile:   fileUtils.FileRead,
   225  			writeFile:  fileUtils.FileWrite,
   226  		}
   227  
   228  		_, err := pip.GetCoordinates()
   229  		assert.Contains(t, fmt.Sprint(err), "failed to read file 'setup.py'")
   230  	})
   231  
   232  	t.Run("error to retrieve version", func(t *testing.T) {
   233  		fileUtils := mock.FilesMock{}
   234  		fileUtils.AddFile("setup.py", []byte(`setup(name="simple-python"`))
   235  
   236  		pip := Pip{
   237  			path:       "setup.py",
   238  			fileExists: fileUtils.FileExists,
   239  			readFile:   fileUtils.FileRead,
   240  			writeFile:  fileUtils.FileWrite,
   241  		}
   242  
   243  		_, err := pip.GetCoordinates()
   244  		assert.Contains(t, fmt.Sprint(err), "failed to retrieve version")
   245  	})
   246  }