Skip to content

Commit

Permalink
Expand property references in version property of platform.txt (#…
Browse files Browse the repository at this point in the history
…1830)

* Added test for issue #1823

* Do not assume that version in platforms.txt is correct semver

* When parsing version in platform.txt perform a variable replace

* Update internal/integrationtest/core/testdata/issue_1823/DxCore-dev/megaavr/README.md

* Update internal/integrationtest/core/core_list_test.go

Co-authored-by: per1234 <[email protected]>
  • Loading branch information
cmaglie and per1234 authored Aug 9, 2022
1 parent 869c971 commit 3a25147
Show file tree
Hide file tree
Showing 6 changed files with 3,463 additions and 1 deletion.
7 changes: 6 additions & 1 deletion arduino/cores/packagemanager/loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"strconv"
"strings"

"github.com/arduino/arduino-cli/arduino"
"github.com/arduino/arduino-cli/arduino/cores"
"github.com/arduino/arduino-cli/arduino/discovery"
"github.com/arduino/arduino-cli/configuration"
Expand Down Expand Up @@ -196,7 +197,11 @@ func (pm *PackageManager) loadPlatform(targetPackage *cores.Package, architectur
return fmt.Errorf("%s: %w", tr("loading platform.txt"), err)
}

version := semver.MustParse(platformProperties.Get("version"))
versionString := platformProperties.ExpandPropsInString(platformProperties.Get("version"))
version, err := semver.Parse(versionString)
if err != nil {
return &arduino.InvalidVersionError{Cause: fmt.Errorf("%s: %s", platformTxtPath, err)}
}

// Check if package_bundled_index.json exists.
// This is used indirectly by the Java IDE since it's necessary for the arduino-builder
Expand Down
47 changes: 47 additions & 0 deletions internal/integrationtest/core/core_list_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// 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 [email protected].

package core_test

import (
"testing"

"github.com/arduino/arduino-cli/internal/integrationtest"
"github.com/arduino/go-paths-helper"
"github.com/stretchr/testify/require"
"go.bug.st/testsuite"
"go.bug.st/testsuite/requirejson"
)

func TestCorrectHandlingOfPlatformVersionProperty(t *testing.T) {
// See: https://github.com/arduino/arduino-cli/issues/1823

env := testsuite.NewEnvironment(t)
defer env.CleanUp()

cli := integrationtest.NewArduinoCliWithinEnvironment(env, &integrationtest.ArduinoCLIConfig{
ArduinoCLIPath: paths.New("..", "..", "..", "arduino-cli"),
UseSharedStagingFolder: true,
})

// Copy test platform
testPlatform := paths.New("testdata", "issue_1823", "DxCore-dev")
require.NoError(t, testPlatform.CopyDirTo(cli.SketchbookDir().Join("hardware", "DxCore-dev")))

// Trigger problematic call
out, _, err := cli.Run("core", "list", "--format", "json")
require.NoError(t, err)
requirejson.Contains(t, out, `[{"id":"DxCore-dev:megaavr","installed":"1.4.10","name":"DxCore"}]`)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
This is an extract of https://github.com/SpenceKonde/DxCore at the revision 1.4.10.

https://github.com/SpenceKonde/DxCore/commit/b0bb30f8cb703991d3fe97a3241091a221eab09b
Loading

0 comments on commit 3a25147

Please sign in to comment.