@@ -256,3 +256,49 @@ func TestCoreDownload(t *testing.T) {
256256 require .NoError (t , err )
257257 require .FileExists (t , cli .DownloadDir ().Join ("packages" , "core-ArduinoCore-samd-1.8.12.tar.bz2" ).String ())
258258}
259+
260+ func TestCoreInstall (t * testing.T ) {
261+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
262+ defer env .CleanUp ()
263+
264+ _ , _ , err := cli .Run ("core" , "update-index" )
265+ require .NoError (t , err )
266+
267+ // Install a specific core version
268+ _ , _ , err = cli .Run ("core" , "install" , "arduino:avr@1.6.16" )
269+ require .NoError (t , err )
270+ stdout , _ , err := cli .Run ("core" , "list" , "--format" , "json" )
271+ require .NoError (t , err )
272+ requirejson .Query (t , stdout , ".[] | select(.id == \" arduino:avr\" ) | .installed==\" 1.6.16\" " , "true" )
273+
274+ // Replace it with the same with --no-overwrite (should NOT fail)
275+ _ , _ , err = cli .Run ("core" , "install" , "arduino:avr@1.6.16" , "--no-overwrite" )
276+ require .NoError (t , err )
277+
278+ // Replace it with a more recent one with --no-overwrite (should fail)
279+ _ , _ , err = cli .Run ("core" , "install" , "arduino:avr@1.6.17" , "--no-overwrite" )
280+ require .Error (t , err )
281+
282+ // Replace it with a more recent one without --no-overwrite (should succeed)
283+ _ , _ , err = cli .Run ("core" , "install" , "arduino:avr@1.6.17" )
284+ require .NoError (t , err )
285+ stdout , _ , err = cli .Run ("core" , "list" , "--format" , "json" )
286+ require .NoError (t , err )
287+ requirejson .Query (t , stdout , ".[] | select(.id == \" arduino:avr\" ) | .installed==\" 1.6.17\" " , "true" )
288+
289+ // Confirm core is listed as "updatable"
290+ stdout , _ , err = cli .Run ("core" , "list" , "--updatable" , "--format" , "json" )
291+ require .NoError (t , err )
292+ requirejson .Query (t , stdout , ".[] | select(.id == \" arduino:avr\" ) | .installed==\" 1.6.17\" " , "true" )
293+
294+ // Upgrade the core to latest version
295+ _ , _ , err = cli .Run ("core" , "upgrade" , "arduino:avr" )
296+ require .NoError (t , err )
297+ stdout , _ , err = cli .Run ("core" , "list" , "--format" , "json" )
298+ require .NoError (t , err )
299+ requirejson .Query (t , stdout , ".[] | select(.id == \" arduino:avr\" ) | .installed==\" 1.6.17\" " , "false" )
300+ // double check the code isn't updatable anymore
301+ stdout , _ , err = cli .Run ("core" , "list" , "--updatable" , "--format" , "json" )
302+ require .NoError (t , err )
303+ requirejson .Empty (t , stdout )
304+ }
0 commit comments