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 { 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 {
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: