@@ -449,6 +449,46 @@ func TestCompileSketchWithIppFileInclude(t *testing.T) {
449449 require .NoError (t , err )
450450}
451451
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+
452492func TestCompileWithoutUploadAndFqbn (t * testing.T ) {
453493 env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
454494 defer env .CleanUp ()
0 commit comments