@@ -106,6 +106,19 @@ func Test_updater_run(t *testing.T) {
106
106
}
107
107
108
108
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
109
122
fakeFile (t , p .Fakefs , fakeExePathLinux , 0755 , fakeNewVersion )
110
123
p .HTTPClient .M [apiPrivateVersionURL ] = newFakeGetterResponse ([]byte (fakeNewVersionJSON ), 200 , variadicS (), nil )
111
124
p .VersionF = func () string { return fakeNewVersion }
@@ -131,6 +144,23 @@ func Test_updater_run(t *testing.T) {
131
144
assertFileContent (t , p .Fakefs , fakeExePathLinux , fakeNewVersion )
132
145
})
133
146
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
+
134
164
run (t , "update coder - old to new" , func (t * testing.T , p * params ) {
135
165
fakeFile (t , p .Fakefs , fakeExePathLinux , 0755 , fakeOldVersion )
136
166
p .HTTPClient .M [apiPrivateVersionURL ] = newFakeGetterResponse ([]byte (fakeNewVersionJSON ), 200 , variadicS (), nil )
@@ -146,6 +176,23 @@ func Test_updater_run(t *testing.T) {
146
176
assertFileContent (t , p .Fakefs , fakeExePathLinux , fakeNewVersion )
147
177
})
148
178
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
+
149
196
run (t , "update coder - old to new - binary renamed" , func (t * testing.T , p * params ) {
150
197
p .ExecutablePath = "/home/user/bin/coder-cli"
151
198
fakeFile (t , p .Fakefs , p .ExecutablePath , 0755 , fakeOldVersion )
0 commit comments