Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set runtime.hardware.path property during upload #1978

Merged
merged 2 commits into from
Nov 16, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions arduino/cores/cores.go
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,7 @@ func (release *PlatformRelease) RuntimeProperties() *properties.Map {
res := properties.NewMap()
if release.InstallDir != nil {
res.Set("runtime.platform.path", release.InstallDir.String())
res.Set("runtime.hardware.path", release.InstallDir.Join("..").String())
}

return res
Expand Down
54 changes: 54 additions & 0 deletions internal/integrationtest/compile_2/compile_propeties_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
// This file is part of arduino-cli.
//
// Copyright 2022 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 TestCompileAndUploadRuntimeProperties(t *testing.T) {
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
defer env.CleanUp()

// https://github.com/arduino/arduino-cli/issues/1971
sketchbookHardwareDir := cli.SketchbookDir().Join("hardware")
require.NoError(t, sketchbookHardwareDir.MkdirAll())

// Copy test platform
testPlatform := paths.New("..", "testdata", "foo")
require.NoError(t, testPlatform.CopyDirTo(sketchbookHardwareDir.Join("foo")))

// Install dependencies of the demo platform
_, _, err := cli.Run("core", "update-index")
require.NoError(t, err)
_, _, err = cli.Run("core", "install", "arduino:avr")
require.NoError(t, err)

// Check compile runtime propeties expansion
bareMinimum := cli.CopySketch("bare_minimum")
stdout, _, err := cli.Run("compile", "--fqbn", "foo:avr:bar", "-v", bareMinimum.String())
require.NoError(t, err)
require.Contains(t, string(stdout), "PREBUILD-runtime.hardware.path="+sketchbookHardwareDir.String())

// Check upload runtime propeties expansion
stdout, _, err = cli.Run("upload", "--fqbn", "foo:avr:bar", bareMinimum.String())
require.NoError(t, err)
require.Contains(t, string(stdout), "UPLOAD-runtime.hardware.path="+sketchbookHardwareDir.String())
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
void setup() {}
void loop() {}
8 changes: 8 additions & 0 deletions internal/integrationtest/testdata/foo/avr/boards.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
bar.name=Bar
bar.upload.tool=baz
bar.upload.protocol=
bar.build.board=AVR_BAR
bar.build.f_cpu=16000000L
bar.build.mcu=atmega328p
bar.build.core=arduino:arduino
bar.build.variant=arduino:standard
10 changes: 10 additions & 0 deletions internal/integrationtest/testdata/foo/avr/platform.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
name=Foo Platform
version=0.0.0

recipe.hooks.prebuild.0.pattern=echo PREBUILD-runtime.hardware.path={runtime.hardware.path}
recipe.hooks.prebuild.0.pattern.windows=cmd /C echo PREBUILD-runtime.hardware.path={runtime.hardware.path}

tools.baz.upload.params.quiet=
tools.baz.upload.params.verbose=
tools.baz.upload.pattern=echo UPLOAD-runtime.hardware.path={runtime.hardware.path}
tools.baz.upload.pattern.windows=cmd /C echo UPLOAD-runtime.hardware.path={runtime.hardware.path}