github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/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 }