Skip to content

Commit

Permalink
[skip-changelog] Add profiles to LoadSketchResponse (#2264)
Browse files Browse the repository at this point in the history
* Add informations regarding profiles to LoadSketchResponse

* Load profiles when LoadSketch is called

* Add test to verify that LoadSketchResponse contains the profiles
  • Loading branch information
MatteoPologruto authored Aug 21, 2023
1 parent 38479dc commit 086b77a
Show file tree
Hide file tree
Showing 6 changed files with 726 additions and 534 deletions.
18 changes: 18 additions & 0 deletions commands/sketch/load.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,22 @@ func LoadSketch(ctx context.Context, req *rpc.LoadSketchRequest) (*rpc.LoadSketc
}

defaultPort, defaultProtocol := sk.GetDefaultPortAddressAndProtocol()

profiles := make([](*rpc.SketchProfile), len(sk.Project.Profiles))
for i, profile := range sk.Project.Profiles {
profiles[i] = &rpc.SketchProfile{
Name: profile.Name,
Fqbn: profile.FQBN,
}
}

defaultProfileResp := &rpc.SketchProfile{}
defaultProfile := sk.GetProfile(sk.Project.DefaultProfile)
if defaultProfile != nil {
defaultProfileResp.Name = defaultProfile.Name
defaultProfileResp.Fqbn = defaultProfile.FQBN
}

return &rpc.LoadSketchResponse{
MainFile: sk.MainFile.String(),
LocationPath: sk.FullPath.String(),
Expand All @@ -57,5 +73,7 @@ func LoadSketch(ctx context.Context, req *rpc.LoadSketchRequest) (*rpc.LoadSketc
DefaultFqbn: sk.GetDefaultFQBN(),
DefaultPort: defaultPort,
DefaultProtocol: defaultProtocol,
Profiles: profiles,
DefaultProfile: defaultProfileResp,
}, nil
}
33 changes: 33 additions & 0 deletions commands/sketch/load_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// 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 [email protected].

package sketch

import (
"context"
"testing"

"github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
"github.com/stretchr/testify/require"
)

func TestLoadSketchProfiles(t *testing.T) {
loadResp, err := LoadSketch(context.Background(), &commands.LoadSketchRequest{
SketchPath: "./testdata/sketch_with_profile",
})
require.NoError(t, err)
require.Len(t, loadResp.GetProfiles(), 2)
require.Equal(t, loadResp.GetDefaultProfile().GetName(), "nanorp")
}
21 changes: 21 additions & 0 deletions commands/sketch/testdata/sketch_with_profile/sketch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
profiles:
nanorp:
fqbn: arduino:avr:uno
platforms:
- platform: arduino:mbed_nano (4.0.2)
libraries:
- ArduinoIoTCloud (1.0.2)
- Arduino_ConnectionHandler (0.6.4)
- TinyDHT sensor library (1.1.0)

another_profile_name:
notes: testing the limit of the AVR platform, may be unstable
fqbn: arduino:avr:uno
platforms:
- platform: arduino:avr (1.8.4)
libraries:
- VitconMQTT (1.0.1)
- Arduino_ConnectionHandler (0.6.4)
- TinyDHT sensor library (1.1.0)

default_profile: nanorp
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@

void setup() {
}

void loop() {
}
Loading

0 comments on commit 086b77a

Please sign in to comment.