Skip to content

Commit 29130c6

Browse files
Rearrange compile tests to share the same environment
1 parent 9575a48 commit 29130c6

File tree

2 files changed

+63
-76
lines changed

2 files changed

+63
-76
lines changed

internal/integrationtest/compile/compile_part_1_test.go

+63
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ func TestCompile(t *testing.T) {
6363
{"OnlyCompilationDatabaseFlag", compileOnlyCompilationDatabaseFlag},
6464
{"UsingPlatformLocalTxt", compileUsingPlatformLocalTxt},
6565
{"UsingBoardsLocalTxt", compileUsingBoardsLocalTxt},
66+
{"WithInvalidBuildOptionJson", compileWithInvalidBuildOptionJson},
67+
{"WithRelativeBuildPath", compileWithRelativeBuildPath},
6668
}.Run(t, env, cli)
6769
}
6870

@@ -711,3 +713,64 @@ func compileUsingBoardsLocalTxt(t *testing.T, env *integrationtest.Environment,
711713
_, _, err = cli.Run("compile", "--clean", "-b", fqbn, sketchPath.String())
712714
require.NoError(t, err)
713715
}
716+
717+
func compileWithInvalidBuildOptionJson(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) {
718+
sketchName := "CompileInvalidBuildOptionsJson"
719+
sketchPath := cli.SketchbookDir().Join(sketchName)
720+
defer sketchPath.RemoveAll()
721+
fqbn := "arduino:avr:uno"
722+
723+
// Create a test sketch
724+
_, _, err := cli.Run("sketch", "new", sketchPath.String())
725+
require.NoError(t, err)
726+
727+
// Get the build directory
728+
md5 := md5.Sum(([]byte(sketchPath.String())))
729+
sketchPathMd5 := strings.ToUpper(hex.EncodeToString(md5[:]))
730+
require.NotEmpty(t, sketchPathMd5)
731+
buildDir := paths.TempDir().Join("arduino-sketch-" + sketchPathMd5)
732+
733+
_, _, err = cli.Run("compile", "-b", fqbn, sketchPath.String(), "--verbose")
734+
require.NoError(t, err)
735+
736+
// Breaks the build.options.json file
737+
buildOptionsJson := buildDir.Join("build.options.json")
738+
err = buildOptionsJson.WriteFile([]byte("invalid json"))
739+
require.NoError(t, err)
740+
741+
_, _, err = cli.Run("compile", "-b", fqbn, sketchPath.String(), "--verbose")
742+
require.NoError(t, err)
743+
}
744+
745+
func compileWithRelativeBuildPath(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) {
746+
sketchName := "sketch_simple"
747+
sketchPath := cli.CopySketch(sketchName)
748+
defer sketchPath.RemoveAll()
749+
fqbn := "arduino:avr:uno"
750+
751+
buildPath := paths.New("..").Join("build_path")
752+
newWorkingDir := cli.SketchbookDir().Join("working_dir")
753+
err := newWorkingDir.Mkdir()
754+
require.NoError(t, err)
755+
defer newWorkingDir.RemoveAll()
756+
cli.SetWorkingDir(newWorkingDir)
757+
_, _, err = cli.Run("compile", "-b", fqbn, "--build-path", buildPath.String(), sketchPath.String(), "-v")
758+
require.NoError(t, err)
759+
cli.SetWorkingDir(env.RootDir())
760+
761+
absoluteBuildPath := cli.SketchbookDir().Join("build_path")
762+
builtFiles, err := absoluteBuildPath.ReadDir()
763+
require.NoError(t, err)
764+
require.Contains(t, builtFiles[8].String(), sketchName+".ino.eep")
765+
require.Contains(t, builtFiles[9].String(), sketchName+".ino.elf")
766+
require.Contains(t, builtFiles[10].String(), sketchName+".ino.hex")
767+
require.Contains(t, builtFiles[11].String(), sketchName+".ino.with_bootloader.bin")
768+
require.Contains(t, builtFiles[12].String(), sketchName+".ino.with_bootloader.hex")
769+
require.Contains(t, builtFiles[0].String(), "build.options.json")
770+
require.Contains(t, builtFiles[1].String(), "compile_commands.json")
771+
require.Contains(t, builtFiles[2].String(), "core")
772+
require.Contains(t, builtFiles[3].String(), "includes.cache")
773+
require.Contains(t, builtFiles[4].String(), "libraries")
774+
require.Contains(t, builtFiles[6].String(), "preproc")
775+
require.Contains(t, builtFiles[7].String(), "sketch")
776+
}

internal/integrationtest/compile/compile_part_4_test.go

-76
Original file line numberDiff line numberDiff line change
@@ -261,42 +261,6 @@ func TestCompileWithConflictingLibrariesInclude(t *testing.T) {
261261
require.Contains(t, string(stdout), expectedOutput[0]+"\n"+expectedOutput[1]+"\n"+expectedOutput[2]+"\n")
262262
}
263263

264-
func TestCompileWithInvalidBuildOptionJson(t *testing.T) {
265-
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
266-
defer env.CleanUp()
267-
268-
_, _, err := cli.Run("update")
269-
require.NoError(t, err)
270-
271-
_, _, err = cli.Run("core", "install", "arduino:[email protected]")
272-
require.NoError(t, err)
273-
274-
sketchName := "CompileInvalidBuildOptionsJson"
275-
sketchPath := cli.SketchbookDir().Join(sketchName)
276-
fqbn := "arduino:avr:uno"
277-
278-
// Create a test sketch
279-
_, _, err = cli.Run("sketch", "new", sketchPath.String())
280-
require.NoError(t, err)
281-
282-
// Get the build directory
283-
md5 := md5.Sum(([]byte(sketchPath.String())))
284-
sketchPathMd5 := strings.ToUpper(hex.EncodeToString(md5[:]))
285-
require.NotEmpty(t, sketchPathMd5)
286-
buildDir := paths.TempDir().Join("arduino-sketch-" + sketchPathMd5)
287-
288-
_, _, err = cli.Run("compile", "-b", fqbn, sketchPath.String(), "--verbose")
289-
require.NoError(t, err)
290-
291-
// Breaks the build.options.json file
292-
buildOptionsJson := buildDir.Join("build.options.json")
293-
err = buildOptionsJson.WriteFile([]byte("invalid json"))
294-
require.NoError(t, err)
295-
296-
_, _, err = cli.Run("compile", "-b", fqbn, sketchPath.String(), "--verbose")
297-
require.NoError(t, err)
298-
}
299-
300264
func TestCompileWithEsp32BundledLibraries(t *testing.T) {
301265
// Some esp cores have have bundled libraries that are optimize for that architecture,
302266
// it might happen that if the user has a library with the same name installed conflicts
@@ -449,46 +413,6 @@ func TestCompileSketchWithIppFileInclude(t *testing.T) {
449413
require.NoError(t, err)
450414
}
451415

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:[email protected]")
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-
492416
func TestCompileWithoutUploadAndFqbn(t *testing.T) {
493417
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
494418
defer env.CleanUp()

0 commit comments

Comments
 (0)