From 695c85e1e5c08a02058ad2f8c422d9dcbb68eabd Mon Sep 17 00:00:00 2001 From: Alessio Perugini Date: Wed, 12 Mar 2025 08:55:44 +0100 Subject: [PATCH 1/2] integrationtest: add dameon NewSketch tests --- internal/integrationtest/arduino-cli.go | 11 +++++++++++ internal/integrationtest/daemon/daemon_test.go | 16 ++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/internal/integrationtest/arduino-cli.go b/internal/integrationtest/arduino-cli.go index 5236449d09a..f035e792f55 100644 --- a/internal/integrationtest/arduino-cli.go +++ b/internal/integrationtest/arduino-cli.go @@ -710,3 +710,14 @@ func (inst *ArduinoCLIInstance) BoardIdentify(ctx context.Context, props map[str resp, err := inst.cli.daemonClient.BoardIdentify(ctx, req) return resp, err } + +// NewSketch calls the "NewSketch" gRPC method. +func (inst *ArduinoCLIInstance) NewSketch(ctx context.Context, sketchName, sketchDir string, overwrite bool) (*commands.NewSketchResponse, error) { + req := &commands.NewSketchRequest{ + SketchName: sketchName, + SketchDir: sketchDir, + Overwrite: overwrite, + } + logCallf(">>> NewSketch(%+v)\n", req) + return inst.cli.daemonClient.NewSketch(ctx, req) +} diff --git a/internal/integrationtest/daemon/daemon_test.go b/internal/integrationtest/daemon/daemon_test.go index 53d39566d32..ae094a0d856 100644 --- a/internal/integrationtest/daemon/daemon_test.go +++ b/internal/integrationtest/daemon/daemon_test.go @@ -614,6 +614,22 @@ func TestDaemonUserAgent(t *testing.T) { } } +func TestDaemonCreateSketch(t *testing.T) { + // https://github.com/arduino/arduino-cli/issues/2861 + + env, cli := integrationtest.CreateEnvForDaemon(t) + defer env.CleanUp() + + grpcInst := cli.Create() + require.NoError(t, grpcInst.Init("", "", func(ir *commands.InitResponse) { + fmt.Printf("INIT> %v\n", ir.GetMessage()) + })) + + sketchName := "test_sketch.ino" + _, err := grpcInst.NewSketch(context.Background(), sketchName, "", false) + require.NoError(t, err) +} + func analyzeUpdateIndexClient(t *testing.T, cl commands.ArduinoCoreService_UpdateIndexClient) (map[string]*commands.DownloadProgressEnd, error) { analyzer := NewDownloadProgressAnalyzer(t) for { From fc495daefb90e7d8e140012088706a05256d5a0d Mon Sep 17 00:00:00 2001 From: Alessio Perugini Date: Wed, 12 Mar 2025 08:56:30 +0100 Subject: [PATCH 2/2] commands: fix panic when calling `NewSketch` with empty directories.user We were calling directly a function that lookup for user definied settings. In case an user did not set explictly the directory it would return an empty string causing a panic. Instead we should have used a dedicated function `UserDir` that uses a fallback the default directories.user --- commands/service_sketch_new.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/service_sketch_new.go b/commands/service_sketch_new.go index ca3143e31b9..8f02908637a 100644 --- a/commands/service_sketch_new.go +++ b/commands/service_sketch_new.go @@ -48,7 +48,7 @@ func (s *arduinoCoreServerImpl) NewSketch(ctx context.Context, req *rpc.NewSketc if len(req.GetSketchDir()) > 0 { sketchesDir = req.GetSketchDir() } else { - sketchesDir = s.settings.GetString("directories.User") + sketchesDir = s.settings.UserDir().String() } if err := validateSketchName(req.GetSketchName()); err != nil { pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy