Skip to content

Commit c9f26d8

Browse files
author
Roberto Sora
committed
align sketch new behaviour in sketch path parameter mangling adding proper testing
1 parent 6d455ad commit c9f26d8

File tree

4 files changed

+40
-14
lines changed

4 files changed

+40
-14
lines changed

cli/Test/Test.ino

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
void setup() {
3+
}
4+
5+
void loop() {
6+
}

cli/cli_test.go

-6
Original file line numberDiff line numberDiff line change
@@ -296,12 +296,6 @@ func TestUploadIntegration(t *testing.T) {
296296
require.NotZero(t, exitCode)
297297
}
298298

299-
func TestSketchCommandsIntegration(t *testing.T) {
300-
exitCode, d := executeWithArgs("sketch", "new", "Test")
301-
require.Zero(t, exitCode)
302-
require.Contains(t, string(d), "Sketch created")
303-
}
304-
305299
func TestCompileCommandsIntegration(t *testing.T) {
306300
// Set staging dir to a temporary dir
307301
tmp := tmpDirOrDie()

cli/sketch/new.go

+12-8
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,12 @@
1818
package sketch
1919

2020
import (
21+
"io/ioutil"
2122
"os"
23+
"path/filepath"
2224

2325
"github.com/arduino/arduino-cli/cli/errorcodes"
2426
"github.com/arduino/arduino-cli/cli/feedback"
25-
"github.com/arduino/go-paths-helper"
2627
"github.com/spf13/cobra"
2728
)
2829

@@ -47,18 +48,21 @@ void loop() {
4748
`)
4849

4950
func runNewCommand(cmd *cobra.Command, args []string) {
50-
sketchDir := paths.New(args[0])
51-
sketchDir.ToAbs()
52-
if err := sketchDir.MkdirAll(); err != nil {
51+
sketchDir, err := filepath.Abs(args[0])
52+
if err != nil {
53+
feedback.Errorf("Error creating sketch: %v", err)
54+
os.Exit(errorcodes.ErrGeneric)
55+
}
56+
if err := os.MkdirAll(sketchDir, os.FileMode(0755)); err != nil {
5357
feedback.Errorf("Could not create sketch directory: %v", err)
5458
os.Exit(errorcodes.ErrGeneric)
5559
}
56-
sketchName := sketchDir.Base()
57-
sketchFile := sketchDir.Join(sketchName + ".ino")
58-
if err := sketchFile.WriteFile(emptySketch); err != nil {
60+
sketchName := filepath.Base(sketchDir)
61+
sketchFile := filepath.Join(sketchDir, sketchName+".ino")
62+
if err := ioutil.WriteFile(sketchFile, emptySketch, os.FileMode(0644)); err != nil {
5963
feedback.Errorf("Error creating sketch: %v", err)
6064
os.Exit(errorcodes.ErrGeneric)
6165
}
6266

63-
feedback.Print("Sketch created in: " + sketchDir.String())
67+
feedback.Print("Sketch created in: " + sketchDir)
6468
}

test/test_compile.py

+22
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,33 @@
1414
# a commercial license, send an email to [email protected].
1515
import json
1616
import os
17+
1718
import pytest
1819

1920
from .common import running_on_ci
2021

2122

23+
def test_sketch_new_(run_command):
24+
# Create a test sketch in current directory
25+
current_path = os.getcwd()
26+
sketch_name = "SketchNewIntegrationTest"
27+
current_sketch_path = os.path.join(current_path, sketch_name)
28+
result = run_command("sketch new {}".format(sketch_name))
29+
assert result.ok
30+
assert "Sketch created in: {}".format(current_sketch_path) in result.stdout
31+
assert os.path.isfile(os.path.join(current_sketch_path, sketch_name + ".ino"))
32+
33+
# Create a test sketch in current directory but using an absolute path
34+
sketch_name = "SketchNewIntegrationTestAbsolute"
35+
current_sketch_path = os.path.join(current_path, sketch_name)
36+
result = run_command("sketch new {}".format(current_sketch_path))
37+
assert result.ok
38+
assert "Sketch created in: {}".format(current_sketch_path) in result.stdout
39+
assert os.path.isfile(os.path.join(current_sketch_path, sketch_name + ".ino"))
40+
41+
42+
43+
2244
def test_compile_without_fqbn(run_command):
2345
# Init the environment explicitly
2446
result = run_command("core update-index")

0 commit comments

Comments
 (0)