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