@@ -106,6 +106,19 @@ func Test_updater_run(t *testing.T) {
106106 }
107107
108108 run (t , "update coder - noop" , func (t * testing.T , p * params ) {
109+ fakeNewVersion := "v" + fakeNewVersion
110+ fakeFile (t , p .Fakefs , fakeExePathLinux , 0755 , fakeNewVersion )
111+ p .HTTPClient .M [apiPrivateVersionURL ] = newFakeGetterResponse ([]byte (fakeNewVersionJSON ), 200 , variadicS (), nil )
112+ p .VersionF = func () string { return fakeNewVersion }
113+ u := fromParams (p )
114+ assertFileContent (t , p .Fakefs , fakeExePathLinux , fakeNewVersion )
115+ err := u .Run (p .Ctx , false , fakeCoderURL , "" )
116+ assert .Success (t , "update coder - noop" , err )
117+ assertFileContent (t , p .Fakefs , fakeExePathLinux , fakeNewVersion )
118+ })
119+
120+ run (t , "update coder - should be noop but versions have leading v" , func (t * testing.T , p * params ) {
121+ fakeNewVersion := "v" + fakeNewVersion
109122 fakeFile (t , p .Fakefs , fakeExePathLinux , 0755 , fakeNewVersion )
110123 p .HTTPClient .M [apiPrivateVersionURL ] = newFakeGetterResponse ([]byte (fakeNewVersionJSON ), 200 , variadicS (), nil )
111124 p .VersionF = func () string { return fakeNewVersion }
@@ -131,6 +144,23 @@ func Test_updater_run(t *testing.T) {
131144 assertFileContent (t , p .Fakefs , fakeExePathLinux , fakeNewVersion )
132145 })
133146
147+ run (t , "update coder - explicit version - leading v" , func (t * testing.T , p * params ) {
148+ fakeNewVersion := "v" + fakeNewVersion
149+ fakeOldVersion := "v" + fakeOldVersion
150+ fakeFile (t , p .Fakefs , fakeExePathLinux , 0755 , fakeOldVersion )
151+ p .HTTPClient .M [apiPrivateVersionURL ] = newFakeGetterResponse ([]byte (fakeOldVersionJSON ), 200 , variadicS (), nil )
152+ p .HTTPClient .M [fakeGithubReleaseURL ] = newFakeGetterResponse ([]byte (fakeGithubReleaseJSON ), 200 , variadicS (), nil )
153+ p .HTTPClient .M [fakeAssetURLLinux ] = newFakeGetterResponse (fakeValidTgzBytes , 200 , variadicS (), nil )
154+ p .VersionF = func () string { return fakeOldVersion }
155+ p .ConfirmF = fakeConfirmYes
156+ p .Execer .M [p .ExecutablePath + ".new --version" ] = fakeExecerResult {[]byte (fakeNewVersion ), nil }
157+ u := fromParams (p )
158+ assertFileContent (t , p .Fakefs , fakeExePathLinux , fakeOldVersion )
159+ err := u .Run (p .Ctx , false , fakeCoderURL , fakeNewVersion )
160+ assert .Success (t , "update coder - explicit version specified" , err )
161+ assertFileContent (t , p .Fakefs , fakeExePathLinux , strings .TrimPrefix (fakeNewVersion , "v" )) // TODO: stop hard-coding this
162+ })
163+
134164 run (t , "update coder - old to new" , func (t * testing.T , p * params ) {
135165 fakeFile (t , p .Fakefs , fakeExePathLinux , 0755 , fakeOldVersion )
136166 p .HTTPClient .M [apiPrivateVersionURL ] = newFakeGetterResponse ([]byte (fakeNewVersionJSON ), 200 , variadicS (), nil )
@@ -146,6 +176,23 @@ func Test_updater_run(t *testing.T) {
146176 assertFileContent (t , p .Fakefs , fakeExePathLinux , fakeNewVersion )
147177 })
148178
179+ run (t , "update coder - old to new - leading v" , func (t * testing.T , p * params ) {
180+ fakeNewVersion := "v" + fakeNewVersion
181+ fakeOldVersion := "v" + fakeOldVersion
182+ fakeFile (t , p .Fakefs , fakeExePathLinux , 0755 , fakeOldVersion )
183+ p .HTTPClient .M [apiPrivateVersionURL ] = newFakeGetterResponse ([]byte (fakeNewVersionJSON ), 200 , variadicS (), nil )
184+ p .HTTPClient .M [fakeGithubReleaseURL ] = newFakeGetterResponse ([]byte (fakeGithubReleaseJSON ), 200 , variadicS (), nil )
185+ p .HTTPClient .M [fakeAssetURLLinux ] = newFakeGetterResponse (fakeValidTgzBytes , 200 , variadicS (), nil )
186+ p .VersionF = func () string { return fakeOldVersion }
187+ p .ConfirmF = fakeConfirmYes
188+ p .Execer .M [p .ExecutablePath + ".new --version" ] = fakeExecerResult {[]byte (fakeNewVersion ), nil }
189+ u := fromParams (p )
190+ assertFileContent (t , p .Fakefs , fakeExePathLinux , fakeOldVersion )
191+ err := u .Run (p .Ctx , false , fakeCoderURL , "" )
192+ assert .Success (t , "update coder - old to new" , err )
193+ assertFileContent (t , p .Fakefs , fakeExePathLinux , strings .TrimPrefix (fakeNewVersion , "v" )) // TODO: stop hard-coding this
194+ })
195+
149196 run (t , "update coder - old to new - binary renamed" , func (t * testing.T , p * params ) {
150197 p .ExecutablePath = "/home/user/bin/coder-cli"
151198 fakeFile (t , p .Fakefs , p .ExecutablePath , 0755 , fakeOldVersion )
0 commit comments