Skip to content

Commit 34d6956

Browse files
authored
Merge pull request #61 from arduino/per1234/default-project-path-argument
Default PROJECT_PATH argument to current working directory
2 parents 84e7f5e + d7bf253 commit 34d6956

File tree

3 files changed

+66
-14
lines changed

3 files changed

+66
-14
lines changed

Diff for: cli/cli.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func Root() *cobra.Command {
2727
Short: "Linter for Arduino projects.",
2828
Long: "arduino-check checks specification compliance and for other common problems with Arduino projects",
2929
DisableFlagsInUseLine: true,
30-
Use: "arduino-check [FLAG]... PROJECT_PATH...\n\nRun checks on PROJECT_PATH.",
30+
Use: "arduino-check [FLAG]... [PROJECT_PATH]...\n\nRun checks on PROJECT_PATH or current path if no PROJECT_PATH argument provided.",
3131
Run: command.ArduinoCheck,
3232
}
3333

Diff for: configuration/configuration.go

+16-7
Original file line numberDiff line numberDiff line change
@@ -74,16 +74,25 @@ func Initialize(flags *pflag.FlagSet, projectPaths []string) error {
7474
reportFilePathString, _ := flags.GetString("report-file")
7575
reportFilePath = paths.New(reportFilePathString)
7676

77-
for _, projectPath := range projectPaths {
78-
targetPath := paths.New(projectPath)
79-
targetPathExists, err := targetPath.ExistCheck()
77+
if len(projectPaths) == 0 {
78+
// Default to using current working directory.
79+
workingDirectoryPath, err := os.Getwd()
8080
if err != nil {
81-
return fmt.Errorf("Problem processing PROJECT_PATH argument value %v: %v", targetPath, err)
81+
return fmt.Errorf("Error when setting default PROJECT_PATH argument: %s", err)
8282
}
83-
if !targetPathExists {
84-
return fmt.Errorf("PROJECT_PATH argument %v does not exist", targetPath)
83+
targetPaths.Add(paths.New(workingDirectoryPath))
84+
} else {
85+
for _, projectPath := range projectPaths {
86+
targetPath := paths.New(projectPath)
87+
targetPathExists, err := targetPath.ExistCheck()
88+
if err != nil {
89+
return fmt.Errorf("Problem processing PROJECT_PATH argument value %v: %v", targetPath, err)
90+
}
91+
if !targetPathExists {
92+
return fmt.Errorf("PROJECT_PATH argument %v does not exist", targetPath)
93+
}
94+
targetPaths.AddIfMissing(targetPath)
8595
}
86-
targetPaths.AddIfMissing(targetPath)
8796
}
8897

8998
if officialModeString, ok := os.LookupEnv("ARDUINO_CHECK_OFFICIAL"); ok {

Diff for: configuration/configuration_test.go

+49-6
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,18 @@ import (
2828
"github.com/stretchr/testify/require"
2929
)
3030

31-
func TestInitialize(t *testing.T) {
32-
flags := test.ConfigurationFlags()
31+
var projectPaths []string
3332

33+
func init() {
3434
projectPath, err := os.Getwd()
35-
require.Nil(t, err)
36-
projectPaths := []string{projectPath}
35+
if err != nil {
36+
panic(err)
37+
}
38+
projectPaths = []string{projectPath}
39+
}
3740

41+
func TestInitializeFormat(t *testing.T) {
42+
flags := test.ConfigurationFlags()
3843
flags.Set("format", "foo")
3944
assert.Error(t, Initialize(flags, projectPaths))
4045

@@ -45,7 +50,10 @@ func TestInitialize(t *testing.T) {
4550
flags.Set("format", "json")
4651
assert.Nil(t, Initialize(flags, projectPaths))
4752
assert.Equal(t, outputformat.JSON, OutputFormat())
53+
}
4854

55+
func TestInitializeLibraryManager(t *testing.T) {
56+
flags := test.ConfigurationFlags()
4957
flags.Set("library-manager", "foo")
5058
assert.Error(t, Initialize(flags, projectPaths))
5159

@@ -71,6 +79,10 @@ func TestInitialize(t *testing.T) {
7179
assert.Nil(t, Initialize(flags, projectPaths))
7280
assert.False(t, customCheckModes[checkmode.LibraryManagerSubmission])
7381
assert.False(t, customCheckModes[checkmode.LibraryManagerIndexed])
82+
}
83+
84+
func TestInitializeLogFormat(t *testing.T) {
85+
flags := test.ConfigurationFlags()
7486

7587
flags.Set("log-format", "foo")
7688
assert.Error(t, Initialize(flags, projectPaths))
@@ -80,6 +92,10 @@ func TestInitialize(t *testing.T) {
8092

8193
flags.Set("log-format", "json")
8294
assert.Nil(t, Initialize(flags, projectPaths))
95+
}
96+
97+
func TestInitializePermissive(t *testing.T) {
98+
flags := test.ConfigurationFlags()
8399

84100
flags.Set("permissive", "true")
85101
assert.Nil(t, Initialize(flags, projectPaths))
@@ -88,6 +104,10 @@ func TestInitialize(t *testing.T) {
88104
flags.Set("permissive", "false")
89105
assert.Nil(t, Initialize(flags, projectPaths))
90106
assert.False(t, customCheckModes[checkmode.Permissive])
107+
}
108+
109+
func TestInitializeProjectType(t *testing.T) {
110+
flags := test.ConfigurationFlags()
91111

92112
flags.Set("project-type", "foo")
93113
assert.Error(t, Initialize(flags, projectPaths))
@@ -111,6 +131,10 @@ func TestInitialize(t *testing.T) {
111131
flags.Set("project-type", "all")
112132
assert.Nil(t, Initialize(flags, projectPaths))
113133
assert.Equal(t, projecttype.All, SuperprojectTypeFilter())
134+
}
135+
136+
func TestInitializeRecursive(t *testing.T) {
137+
flags := test.ConfigurationFlags()
114138

115139
flags.Set("recursive", "true")
116140
assert.Nil(t, Initialize(flags, projectPaths))
@@ -119,6 +143,10 @@ func TestInitialize(t *testing.T) {
119143
flags.Set("recursive", "false")
120144
assert.Nil(t, Initialize(flags, projectPaths))
121145
assert.False(t, Recursive())
146+
}
147+
148+
func TestInitializeReportFile(t *testing.T) {
149+
flags := test.ConfigurationFlags()
122150

123151
flags.Set("report-file", "")
124152
assert.Nil(t, Initialize(flags, projectPaths))
@@ -128,11 +156,26 @@ func TestInitialize(t *testing.T) {
128156
flags.Set("report-file", reportFilePath.String())
129157
assert.Nil(t, Initialize(flags, projectPaths))
130158
assert.Equal(t, reportFilePath, ReportFilePath())
159+
}
131160

132-
assert.Nil(t, Initialize(flags, projectPaths))
161+
func TestInitializeProjectPath(t *testing.T) {
162+
targetPaths = nil
163+
assert.Nil(t, Initialize(test.ConfigurationFlags(), []string{}))
164+
workingDirectoryPath, err := os.Getwd()
165+
require.Nil(t, err)
166+
assert.Equal(t, paths.NewPathList(workingDirectoryPath), TargetPaths(), "Default PROJECT_PATH to current working directory")
167+
168+
targetPaths = nil
169+
assert.Nil(t, Initialize(test.ConfigurationFlags(), projectPaths))
133170
assert.Equal(t, paths.NewPathList(projectPaths[0]), TargetPaths())
134171

135-
assert.Error(t, Initialize(flags, []string{"/nonexistent"}))
172+
targetPaths = nil
173+
assert.Error(t, Initialize(test.ConfigurationFlags(), []string{"/nonexistent"}))
174+
}
175+
176+
func TestInitializeOfficial(t *testing.T) {
177+
assert.Nil(t, Initialize(test.ConfigurationFlags(), projectPaths))
178+
assert.False(t, customCheckModes[checkmode.Official], "Default official check mode")
136179

137180
os.Setenv("ARDUINO_CHECK_OFFICIAL", "true")
138181
assert.Nil(t, Initialize(test.ConfigurationFlags(), projectPaths))

0 commit comments

Comments
 (0)