@@ -449,6 +449,46 @@ func TestCompileSketchWithIppFileInclude(t *testing.T) {
449
449
require .NoError (t , err )
450
450
}
451
451
452
+ func TestCompileWithRelativeBuildPath (t * testing.T ) {
453
+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
454
+ defer env .CleanUp ()
455
+
456
+ _ , _ , err := cli .Run ("update" )
457
+ require .NoError (t , err )
458
+
459
+ _ , _ , err = cli .Run ("core" , "install" , "arduino:avr@1.8.3" )
460
+ require .NoError (t , err )
461
+
462
+ sketchName := "sketch_simple"
463
+ sketchPath := cli .CopySketch (sketchName )
464
+ fqbn := "arduino:avr:uno"
465
+
466
+ buildPath := paths .New (".." ).Join ("build_path" )
467
+ workingDir := cli .SketchbookDir ().Join ("working_dir" )
468
+ err = workingDir .Mkdir ()
469
+ require .NoError (t , err )
470
+ cli .SetWorkingDir (workingDir )
471
+ _ , _ , err = cli .Run ("compile" , "-b" , fqbn , "--build-path" , buildPath .String (), sketchPath .String (), "-v" )
472
+ require .NoError (t , err )
473
+ cli .SetWorkingDir (env .RootDir ())
474
+
475
+ absoluteBuildPath := cli .SketchbookDir ().Join ("build_path" )
476
+ builtFiles , err := absoluteBuildPath .ReadDir ()
477
+ require .NoError (t , err )
478
+ require .Contains (t , builtFiles [8 ].String (), sketchName + ".ino.eep" )
479
+ require .Contains (t , builtFiles [9 ].String (), sketchName + ".ino.elf" )
480
+ require .Contains (t , builtFiles [10 ].String (), sketchName + ".ino.hex" )
481
+ require .Contains (t , builtFiles [11 ].String (), sketchName + ".ino.with_bootloader.bin" )
482
+ require .Contains (t , builtFiles [12 ].String (), sketchName + ".ino.with_bootloader.hex" )
483
+ require .Contains (t , builtFiles [0 ].String (), "build.options.json" )
484
+ require .Contains (t , builtFiles [1 ].String (), "compile_commands.json" )
485
+ require .Contains (t , builtFiles [2 ].String (), "core" )
486
+ require .Contains (t , builtFiles [3 ].String (), "includes.cache" )
487
+ require .Contains (t , builtFiles [4 ].String (), "libraries" )
488
+ require .Contains (t , builtFiles [6 ].String (), "preproc" )
489
+ require .Contains (t , builtFiles [7 ].String (), "sketch" )
490
+ }
491
+
452
492
func TestCompileWithoutUploadAndFqbn (t * testing.T ) {
453
493
env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
454
494
defer env .CleanUp ()
0 commit comments