Skip to content

Commit 686ff3e

Browse files
Rearrange tests to have them share the same environment
1 parent c05e8d7 commit 686ff3e

File tree

2 files changed

+128
-162
lines changed

2 files changed

+128
-162
lines changed

Diff for: internal/integrationtest/compile/compile_part_1_test.go

+128
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ func TestCompile(t *testing.T) {
5757
{"WithExportBinariesEnvVar", compileWithExportBinariesEnvVar},
5858
{"WithExportBinariesConfig", compileWithExportBinariesConfig},
5959
{"WithInvalidUrl", compileWithInvalidUrl},
60+
{"WithPdeExtension", compileWithPdeExtension},
61+
{"WithMultipleMainFiles", compileWithMultipleMainFiles},
62+
{"CaseMismatchFails", compileCaseMismatchFails},
63+
{"OnlyCompilationDatabaseFlag", compileOnlyCompilationDatabaseFlag},
6064
}.Run(t, env, cli)
6165
}
6266

@@ -526,3 +530,127 @@ func compileWithInvalidUrl(t *testing.T, env *integrationtest.Environment, cli *
526530
expectedIndexfile := cli.DataDir().Join("package_example_index.json")
527531
require.Contains(t, string(stderr), "loading json index file "+expectedIndexfile.String()+": open "+expectedIndexfile.String()+":")
528532
}
533+
534+
func compileWithPdeExtension(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) {
535+
sketchName := "CompilePdeSketch"
536+
sketchPath := cli.SketchbookDir().Join(sketchName)
537+
defer sketchPath.RemoveAll()
538+
fqbn := "arduino:avr:uno"
539+
540+
// Create a test sketch
541+
_, _, err := cli.Run("sketch", "new", sketchPath.String())
542+
require.NoError(t, err)
543+
544+
sketchFileIno := sketchPath.Join(sketchName + ".ino")
545+
sketchFilePde := sketchPath.Join(sketchName + ".pde")
546+
err = sketchFileIno.Rename(sketchFilePde)
547+
require.NoError(t, err)
548+
549+
// Build sketch from folder
550+
_, stderr, err := cli.Run("compile", "--clean", "-b", fqbn, sketchPath.String())
551+
require.NoError(t, err)
552+
require.Contains(t, string(stderr), "Sketches with .pde extension are deprecated, please rename the following files to .ino:")
553+
require.Contains(t, string(stderr), sketchFilePde.String())
554+
555+
// Build sketch from file
556+
_, stderr, err = cli.Run("compile", "--clean", "-b", fqbn, sketchFilePde.String())
557+
require.NoError(t, err)
558+
require.Contains(t, string(stderr), "Sketches with .pde extension are deprecated, please rename the following files to .ino:")
559+
require.Contains(t, string(stderr), sketchFilePde.String())
560+
}
561+
562+
func compileWithMultipleMainFiles(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) {
563+
sketchName := "CompileSketchMultipleMainFiles"
564+
sketchPath := cli.SketchbookDir().Join(sketchName)
565+
defer sketchPath.RemoveAll()
566+
fqbn := "arduino:avr:uno"
567+
568+
// Create a test sketch
569+
_, _, err := cli.Run("sketch", "new", sketchPath.String())
570+
require.NoError(t, err)
571+
572+
// Copy .ino sketch file to .pde
573+
sketchFileIno := sketchPath.Join(sketchName + ".ino")
574+
sketchFilePde := sketchPath.Join(sketchName + ".pde")
575+
err = sketchFileIno.CopyTo(sketchFilePde)
576+
require.NoError(t, err)
577+
578+
// Build sketch from folder
579+
_, stderr, err := cli.Run("compile", "--clean", "-b", fqbn, sketchPath.String())
580+
require.Error(t, err)
581+
require.Contains(t, string(stderr), "Error opening sketch: multiple main sketch files found")
582+
583+
// Build sketch from .ino file
584+
_, stderr, err = cli.Run("compile", "--clean", "-b", fqbn, sketchFileIno.String())
585+
require.Error(t, err)
586+
require.Contains(t, string(stderr), "Error opening sketch: multiple main sketch files found")
587+
588+
// Build sketch from .pde file
589+
_, stderr, err = cli.Run("compile", "--clean", "-b", fqbn, sketchFilePde.String())
590+
require.Error(t, err)
591+
require.Contains(t, string(stderr), "Error opening sketch: multiple main sketch files found")
592+
}
593+
594+
func compileCaseMismatchFails(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) {
595+
sketchName := "CompileSketchCaseMismatch"
596+
sketchPath := cli.SketchbookDir().Join(sketchName)
597+
defer sketchPath.RemoveAll()
598+
fqbn := "arduino:avr:uno"
599+
600+
_, _, err := cli.Run("sketch", "new", sketchPath.String())
601+
require.NoError(t, err)
602+
603+
// Rename main .ino file so casing is different from sketch name
604+
sketchFile := sketchPath.Join(sketchName + ".ino")
605+
sketchMainFile := sketchPath.Join(strings.ToLower(sketchName) + ".ino")
606+
err = sketchFile.Rename(sketchMainFile)
607+
require.NoError(t, err)
608+
609+
// Verifies compilation fails when:
610+
// * Compiling with sketch path
611+
_, stderr, err := cli.Run("compile", "--clean", "-b", fqbn, sketchPath.String())
612+
require.Error(t, err)
613+
require.Contains(t, string(stderr), "Error opening sketch:")
614+
// * Compiling with sketch main file
615+
_, stderr, err = cli.Run("compile", "--clean", "-b", fqbn, sketchMainFile.String())
616+
require.Error(t, err)
617+
require.Contains(t, string(stderr), "Error opening sketch:")
618+
// * Compiling in sketch path
619+
cli.SetWorkingDir(sketchPath)
620+
defer cli.SetWorkingDir(env.RootDir())
621+
_, stderr, err = cli.Run("compile", "--clean", "-b", fqbn)
622+
require.Error(t, err)
623+
require.Contains(t, string(stderr), "Error opening sketch:")
624+
}
625+
626+
func compileOnlyCompilationDatabaseFlag(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) {
627+
sketchName := "CompileSketchOnlyCompilationDatabaseFlag"
628+
sketchPath := cli.SketchbookDir().Join(sketchName)
629+
defer sketchPath.RemoveAll()
630+
fqbn := "arduino:avr:uno"
631+
632+
_, _, err := cli.Run("sketch", "new", sketchPath.String())
633+
require.NoError(t, err)
634+
635+
// Verifies no binaries exist
636+
buildPath := sketchPath.Join("build")
637+
require.NoDirExists(t, buildPath.String())
638+
639+
// Compile with both --export-binaries and --only-compilation-database flags
640+
_, _, err = cli.Run("compile", "--export-binaries", "--only-compilation-database", "--clean", "-b", fqbn, sketchPath.String())
641+
require.NoError(t, err)
642+
643+
// Verifies no binaries are exported
644+
require.NoDirExists(t, buildPath.String())
645+
646+
// Verifies no binaries exist
647+
buildPath = cli.SketchbookDir().Join("export-dir")
648+
require.NoDirExists(t, buildPath.String())
649+
650+
// Compile by setting the --output-dir flag and --only-compilation-database flags
651+
_, _, err = cli.Run("compile", "--output-dir", buildPath.String(), "--only-compilation-database", "--clean", "-b", fqbn, sketchPath.String())
652+
require.NoError(t, err)
653+
654+
// Verifies no binaries are exported
655+
require.NoDirExists(t, buildPath.String())
656+
}

Diff for: internal/integrationtest/compile/compile_part_3_test.go

-162
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
package compile_test
1717

1818
import (
19-
"strings"
2019
"testing"
2120

2221
"github.com/arduino/arduino-cli/internal/integrationtest"
@@ -62,167 +61,6 @@ func TestCompileWithFullyPrecompiledLibrary(t *testing.T) {
6261
require.Contains(t, string(stdout), "Skipping dependencies detection for precompiled library Arduino_TensorFlowLite")
6362
}
6463

65-
func TestCompileSketchWithPdeExtension(t *testing.T) {
66-
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
67-
defer env.CleanUp()
68-
69-
// Init the environment explicitly
70-
_, _, err := cli.Run("update")
71-
require.NoError(t, err)
72-
73-
// Install core to compile
74-
_, _, err = cli.Run("core", "install", "arduino:[email protected]")
75-
require.NoError(t, err)
76-
77-
sketchName := "CompilePdeSketch"
78-
sketchPath := cli.SketchbookDir().Join(sketchName)
79-
fqbn := "arduino:avr:uno"
80-
81-
// Create a test sketch
82-
_, _, err = cli.Run("sketch", "new", sketchPath.String())
83-
require.NoError(t, err)
84-
85-
sketchFileIno := sketchPath.Join(sketchName + ".ino")
86-
sketchFilePde := sketchPath.Join(sketchName + ".pde")
87-
err = sketchFileIno.Rename(sketchFilePde)
88-
require.NoError(t, err)
89-
90-
// Build sketch from folder
91-
_, stderr, err := cli.Run("compile", "--clean", "-b", fqbn, sketchPath.String())
92-
require.NoError(t, err)
93-
require.Contains(t, string(stderr), "Sketches with .pde extension are deprecated, please rename the following files to .ino:")
94-
require.Contains(t, string(stderr), sketchFilePde.String())
95-
96-
// Build sketch from file
97-
_, stderr, err = cli.Run("compile", "--clean", "-b", fqbn, sketchFilePde.String())
98-
require.NoError(t, err)
99-
require.Contains(t, string(stderr), "Sketches with .pde extension are deprecated, please rename the following files to .ino:")
100-
require.Contains(t, string(stderr), sketchFilePde.String())
101-
}
102-
103-
func TestCompileSketchWithMultipleMainFiles(t *testing.T) {
104-
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
105-
defer env.CleanUp()
106-
107-
// Init the environment explicitly
108-
_, _, err := cli.Run("update")
109-
require.NoError(t, err)
110-
111-
// Install core to compile
112-
_, _, err = cli.Run("core", "install", "arduino:[email protected]")
113-
require.NoError(t, err)
114-
115-
sketchName := "CompileSketchMultipleMainFiles"
116-
sketchPath := cli.SketchbookDir().Join(sketchName)
117-
fqbn := "arduino:avr:uno"
118-
119-
// Create a test sketch
120-
_, _, err = cli.Run("sketch", "new", sketchPath.String())
121-
require.NoError(t, err)
122-
123-
// Copy .ino sketch file to .pde
124-
sketchFileIno := sketchPath.Join(sketchName + ".ino")
125-
sketchFilePde := sketchPath.Join(sketchName + ".pde")
126-
err = sketchFileIno.CopyTo(sketchFilePde)
127-
require.NoError(t, err)
128-
129-
// Build sketch from folder
130-
_, stderr, err := cli.Run("compile", "--clean", "-b", fqbn, sketchPath.String())
131-
require.Error(t, err)
132-
require.Contains(t, string(stderr), "Error opening sketch: multiple main sketch files found")
133-
134-
// Build sketch from .ino file
135-
_, stderr, err = cli.Run("compile", "--clean", "-b", fqbn, sketchFileIno.String())
136-
require.Error(t, err)
137-
require.Contains(t, string(stderr), "Error opening sketch: multiple main sketch files found")
138-
139-
// Build sketch from .pde file
140-
_, stderr, err = cli.Run("compile", "--clean", "-b", fqbn, sketchFilePde.String())
141-
require.Error(t, err)
142-
require.Contains(t, string(stderr), "Error opening sketch: multiple main sketch files found")
143-
}
144-
145-
func TestCompileSketchCaseMismatchFails(t *testing.T) {
146-
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
147-
defer env.CleanUp()
148-
149-
// Init the environment explicitly
150-
_, _, err := cli.Run("update")
151-
require.NoError(t, err)
152-
153-
// Install core to compile
154-
_, _, err = cli.Run("core", "install", "arduino:[email protected]")
155-
require.NoError(t, err)
156-
157-
sketchName := "CompileSketchCaseMismatch"
158-
sketchPath := cli.SketchbookDir().Join(sketchName)
159-
fqbn := "arduino:avr:uno"
160-
161-
_, _, err = cli.Run("sketch", "new", sketchPath.String())
162-
require.NoError(t, err)
163-
164-
// Rename main .ino file so casing is different from sketch name
165-
sketchFile := sketchPath.Join(sketchName + ".ino")
166-
sketchMainFile := sketchPath.Join(strings.ToLower(sketchName) + ".ino")
167-
err = sketchFile.Rename(sketchMainFile)
168-
require.NoError(t, err)
169-
170-
// Verifies compilation fails when:
171-
// * Compiling with sketch path
172-
_, stderr, err := cli.Run("compile", "--clean", "-b", fqbn, sketchPath.String())
173-
require.Error(t, err)
174-
require.Contains(t, string(stderr), "Error opening sketch:")
175-
// * Compiling with sketch main file
176-
_, stderr, err = cli.Run("compile", "--clean", "-b", fqbn, sketchMainFile.String())
177-
require.Error(t, err)
178-
require.Contains(t, string(stderr), "Error opening sketch:")
179-
// * Compiling in sketch path
180-
cli.SetWorkingDir(sketchPath)
181-
_, stderr, err = cli.Run("compile", "--clean", "-b", fqbn)
182-
require.Error(t, err)
183-
require.Contains(t, string(stderr), "Error opening sketch:")
184-
}
185-
186-
func TestCompileWithOnlyCompilationDatabaseFlag(t *testing.T) {
187-
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
188-
defer env.CleanUp()
189-
190-
_, _, err := cli.Run("update")
191-
require.NoError(t, err)
192-
193-
_, _, err = cli.Run("core", "install", "arduino:[email protected]")
194-
require.NoError(t, err)
195-
196-
sketchName := "CompileSketchOnlyCompilationDatabaseFlag"
197-
sketchPath := cli.SketchbookDir().Join(sketchName)
198-
fqbn := "arduino:avr:uno"
199-
200-
_, _, err = cli.Run("sketch", "new", sketchPath.String())
201-
require.NoError(t, err)
202-
203-
// Verifies no binaries exist
204-
buildPath := sketchPath.Join("build")
205-
require.NoDirExists(t, buildPath.String())
206-
207-
// Compile with both --export-binaries and --only-compilation-database flags
208-
_, _, err = cli.Run("compile", "--export-binaries", "--only-compilation-database", "--clean", "-b", fqbn, sketchPath.String())
209-
require.NoError(t, err)
210-
211-
// Verifies no binaries are exported
212-
require.NoDirExists(t, buildPath.String())
213-
214-
// Verifies no binaries exist
215-
buildPath = cli.SketchbookDir().Join("export-dir")
216-
require.NoDirExists(t, buildPath.String())
217-
218-
// Compile by setting the --output-dir flag and --only-compilation-database flags
219-
_, _, err = cli.Run("compile", "--output-dir", buildPath.String(), "--only-compilation-database", "--clean", "-b", fqbn, sketchPath.String())
220-
require.NoError(t, err)
221-
222-
// Verifies no binaries are exported
223-
require.NoDirExists(t, buildPath.String())
224-
}
225-
22664
func TestCompileUsingPlatformLocalTxt(t *testing.T) {
22765
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
22866
defer env.CleanUp()

0 commit comments

Comments
 (0)