diff --git a/internal/integrationtest/compile_4/broken_symlink_test.go b/internal/integrationtest/compile_4/broken_symlink_test.go new file mode 100644 index 00000000000..42d948269c6 --- /dev/null +++ b/internal/integrationtest/compile_4/broken_symlink_test.go @@ -0,0 +1,54 @@ +// This file is part of arduino-cli. +// +// Copyright 2023 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package compile_test + +import ( + "testing" + + "github.com/arduino/arduino-cli/internal/integrationtest" + "github.com/arduino/go-paths-helper" + "github.com/stretchr/testify/require" +) + +func TestCompileWithBrokenSymLinks(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + t.Cleanup(env.CleanUp) + + // Install Arduino AVR Boards + _, _, err := cli.Run("core", "install", "arduino:avr@1.8.6") + require.NoError(t, err) + + t.Run("NonSketchFileBroken", func(t *testing.T) { + sketch, err := paths.New("testdata", "ValidSketchWithBrokenSymlink").Abs() + require.NoError(t, err) + _, _, err = cli.Run("compile", "-b", "arduino:avr:uno", sketch.String()) + require.NoError(t, err) + }) + + t.Run("SketchFileBroken", func(t *testing.T) { + sketch, err := paths.New("testdata", "ValidSketchWithBrokenSketchFileSymlink").Abs() + require.NoError(t, err) + _, _, err = cli.Run("compile", "-b", "arduino:avr:uno", sketch.String()) + require.Error(t, err) + }) + + t.Run("NonInoSketchFileBroken", func(t *testing.T) { + sketch, err := paths.New("testdata", "ValidSketchWithNonInoBrokenSketchFileSymlink").Abs() + require.NoError(t, err) + _, _, err = cli.Run("compile", "-b", "arduino:avr:uno", sketch.String()) + require.Error(t, err) + }) +} diff --git a/internal/integrationtest/compile_4/testdata/ValidSketchWithBrokenSketchFileSymlink/ValidSketchWithBrokenSketchFileSymlink.ino b/internal/integrationtest/compile_4/testdata/ValidSketchWithBrokenSketchFileSymlink/ValidSketchWithBrokenSketchFileSymlink.ino new file mode 100644 index 00000000000..660bdbccfdb --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/ValidSketchWithBrokenSketchFileSymlink/ValidSketchWithBrokenSketchFileSymlink.ino @@ -0,0 +1,2 @@ +void setup() {} +void loop() {} diff --git a/internal/integrationtest/compile_4/testdata/ValidSketchWithBrokenSketchFileSymlink/other_file.ino b/internal/integrationtest/compile_4/testdata/ValidSketchWithBrokenSketchFileSymlink/other_file.ino new file mode 120000 index 00000000000..86a410dd1d3 --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/ValidSketchWithBrokenSketchFileSymlink/other_file.ino @@ -0,0 +1 @@ +broken \ No newline at end of file diff --git a/internal/integrationtest/compile_4/testdata/ValidSketchWithBrokenSymlink/ValidSketchWithBrokenSymlink.ino b/internal/integrationtest/compile_4/testdata/ValidSketchWithBrokenSymlink/ValidSketchWithBrokenSymlink.ino new file mode 100644 index 00000000000..660bdbccfdb --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/ValidSketchWithBrokenSymlink/ValidSketchWithBrokenSymlink.ino @@ -0,0 +1,2 @@ +void setup() {} +void loop() {} diff --git a/internal/integrationtest/compile_4/testdata/ValidSketchWithBrokenSymlink/other_file b/internal/integrationtest/compile_4/testdata/ValidSketchWithBrokenSymlink/other_file new file mode 120000 index 00000000000..86a410dd1d3 --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/ValidSketchWithBrokenSymlink/other_file @@ -0,0 +1 @@ +broken \ No newline at end of file diff --git a/internal/integrationtest/compile_4/testdata/ValidSketchWithNonInoBrokenSketchFileSymlink/ValidSketchWithNonInoBrokenSketchFileSymlink.ino b/internal/integrationtest/compile_4/testdata/ValidSketchWithNonInoBrokenSketchFileSymlink/ValidSketchWithNonInoBrokenSketchFileSymlink.ino new file mode 100644 index 00000000000..660bdbccfdb --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/ValidSketchWithNonInoBrokenSketchFileSymlink/ValidSketchWithNonInoBrokenSketchFileSymlink.ino @@ -0,0 +1,2 @@ +void setup() {} +void loop() {} diff --git a/internal/integrationtest/compile_4/testdata/ValidSketchWithNonInoBrokenSketchFileSymlink/other_file.c b/internal/integrationtest/compile_4/testdata/ValidSketchWithNonInoBrokenSketchFileSymlink/other_file.c new file mode 120000 index 00000000000..86a410dd1d3 --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/ValidSketchWithNonInoBrokenSketchFileSymlink/other_file.c @@ -0,0 +1 @@ +broken \ No newline at end of file