@@ -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 )