Skip to content

Commit 00ef2f7

Browse files
committed
Update platform.txt schema to account for the *_remote tools
The upload action for tools with name suffix "_remote" is given special treatment by the build system. Because it's not possible to check for this with the regexes provided by the JSON schema validation package, it's necessary to apply those rules to all upload actions.
1 parent a3744c7 commit 00ef2f7

File tree

5 files changed

+95
-76
lines changed

5 files changed

+95
-76
lines changed

etc/schemas/arduino-platform-txt-definitions-schema.json

+41-3
Original file line numberDiff line numberDiff line change
@@ -851,7 +851,7 @@
851851
"$ref": "#/definitions/propertiesObjects/toolsToolNameUpload/base/object"
852852
},
853853
{
854-
"$ref": "#/definitions/requiredObjects/toolsToolNameActionName/permissive/object"
854+
"$ref": "#/definitions/requiredObjects/toolsToolNameUpload/permissive/object"
855855
}
856856
]
857857
}
@@ -863,7 +863,7 @@
863863
"$ref": "#/definitions/propertiesObjects/toolsToolNameUpload/base/object"
864864
},
865865
{
866-
"$ref": "#/definitions/requiredObjects/toolsToolNameActionName/specification/object"
866+
"$ref": "#/definitions/requiredObjects/toolsToolNameUpload/specification/object"
867867
}
868868
]
869869
}
@@ -875,7 +875,7 @@
875875
"$ref": "#/definitions/propertiesObjects/toolsToolNameUpload/base/object"
876876
},
877877
{
878-
"$ref": "#/definitions/requiredObjects/toolsToolNameActionName/strict/object"
878+
"$ref": "#/definitions/requiredObjects/toolsToolNameUpload/strict/object"
879879
}
880880
]
881881
}
@@ -1168,6 +1168,44 @@
11681168
]
11691169
}
11701170
}
1171+
},
1172+
"toolsToolNameUpload": {
1173+
"base": {
1174+
"object": {
1175+
"allOf": [
1176+
{
1177+
"required": ["pattern"]
1178+
}
1179+
]
1180+
}
1181+
},
1182+
"permissive": {
1183+
"object": {
1184+
"allOf": [
1185+
{
1186+
"$ref": "#/definitions/requiredObjects/toolsToolNameUpload/base/object"
1187+
}
1188+
]
1189+
}
1190+
},
1191+
"specification": {
1192+
"object": {
1193+
"allOf": [
1194+
{
1195+
"$ref": "#/definitions/requiredObjects/toolsToolNameUpload/base/object"
1196+
}
1197+
]
1198+
}
1199+
},
1200+
"strict": {
1201+
"object": {
1202+
"allOf": [
1203+
{
1204+
"$ref": "#/definitions/requiredObjects/toolsToolNameUpload/base/object"
1205+
}
1206+
]
1207+
}
1208+
}
11711209
}
11721210
}
11731211
}

internal/project/platform/platformtxt/platformtxtschema_test.go

+13-14
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ var validPlatformTxtRaw = []byte(`
5858
tools.avrdude.upload.params.verbose=-v
5959
tools.avrdude.upload.params.quiet=-q -q
6060
tools.avrdude.upload.pattern=asdf
61+
tools.avrdude.program.params.verbose=-v
62+
tools.avrdude.program.params.quiet=-q -q
63+
tools.avrdude.program.pattern=asdf
6164
tools.bossac.upload.params.verbose=-v
6265
tools.bossac.upload.params.quiet=-q -q
6366
tools.bossac.upload.pattern=asdf
@@ -196,25 +199,21 @@ func TestRequired(t *testing.T) {
196199
{"recipe.output.tmp_file", "recipe\\.output\\.tmp_file", compliancelevel.Specification, assert.True},
197200
{"recipe.output.tmp_file", "recipe\\.output\\.tmp_file", compliancelevel.Strict, assert.True},
198201

199-
{"tools.avrdude.upload.params.verbose", "tools/avrdude/upload/params\\.verbose", compliancelevel.Permissive, assert.True},
200-
{"tools.avrdude.upload.params.verbose", "tools/avrdude/upload/params\\.verbose", compliancelevel.Specification, assert.True},
201-
{"tools.avrdude.upload.params.verbose", "tools/avrdude/upload/params\\.verbose", compliancelevel.Strict, assert.True},
202-
203-
{"tools.avrdude.upload.params.quiet", "tools/avrdude/upload/params\\.quiet", compliancelevel.Permissive, assert.True},
204-
{"tools.avrdude.upload.params.quiet", "tools/avrdude/upload/params\\.quiet", compliancelevel.Specification, assert.True},
205-
{"tools.avrdude.upload.params.quiet", "tools/avrdude/upload/params\\.quiet", compliancelevel.Strict, assert.True},
206-
207202
{"tools.avrdude.upload.pattern", "tools/avrdude/upload/pattern", compliancelevel.Permissive, assert.True},
208203
{"tools.avrdude.upload.pattern", "tools/avrdude/upload/pattern", compliancelevel.Specification, assert.True},
209204
{"tools.avrdude.upload.pattern", "tools/avrdude/upload/pattern", compliancelevel.Strict, assert.True},
210205

211-
{"tools.bossac.upload.params.verbose", "tools/bossac/upload/params\\.verbose", compliancelevel.Permissive, assert.True},
212-
{"tools.bossac.upload.params.verbose", "tools/bossac/upload/params\\.verbose", compliancelevel.Specification, assert.True},
213-
{"tools.bossac.upload.params.verbose", "tools/bossac/upload/params\\.verbose", compliancelevel.Strict, assert.True},
206+
{"tools.avrdude.program.params.verbose", "tools/avrdude/program/params\\.verbose", compliancelevel.Permissive, assert.True},
207+
{"tools.avrdude.program.params.verbose", "tools/avrdude/program/params\\.verbose", compliancelevel.Specification, assert.True},
208+
{"tools.avrdude.program.params.verbose", "tools/avrdude/program/params\\.verbose", compliancelevel.Strict, assert.True},
209+
210+
{"tools.avrdude.program.params.quiet", "tools/avrdude/program/params\\.quiet", compliancelevel.Permissive, assert.True},
211+
{"tools.avrdude.program.params.quiet", "tools/avrdude/program/params\\.quiet", compliancelevel.Specification, assert.True},
212+
{"tools.avrdude.program.params.quiet", "tools/avrdude/program/params\\.quiet", compliancelevel.Strict, assert.True},
214213

215-
{"tools.bossac.upload.params.quiet", "tools/bossac/upload/params\\.quiet", compliancelevel.Permissive, assert.True},
216-
{"tools.bossac.upload.params.quiet", "tools/bossac/upload/params\\.quiet", compliancelevel.Specification, assert.True},
217-
{"tools.bossac.upload.params.quiet", "tools/bossac/upload/params\\.quiet", compliancelevel.Strict, assert.True},
214+
{"tools.avrdude.program.pattern", "tools/avrdude/program/pattern", compliancelevel.Permissive, assert.True},
215+
{"tools.avrdude.program.pattern", "tools/avrdude/program/pattern", compliancelevel.Specification, assert.True},
216+
{"tools.avrdude.program.pattern", "tools/avrdude/program/pattern", compliancelevel.Strict, assert.True},
218217

219218
{"tools.bossac.upload.pattern", "tools/bossac/upload/pattern", compliancelevel.Permissive, assert.True},
220219
{"tools.bossac.upload.pattern", "tools/bossac/upload/pattern", compliancelevel.Specification, assert.True},

internal/rule/ruleconfiguration/ruleconfiguration.go

-32
Original file line numberDiff line numberDiff line change
@@ -2649,38 +2649,6 @@ var configurations = []Type{
26492649
ErrorModes: []rulemode.Type{rulemode.Strict},
26502650
RuleFunction: rulefunction.PlatformTxtRecipeSizeRegexDataMissing,
26512651
},
2652-
{
2653-
ProjectType: projecttype.Platform,
2654-
SuperprojectType: projecttype.All,
2655-
Category: "configuration files",
2656-
Subcategory: "platform.txt",
2657-
ID: "PF078",
2658-
Brief: "missing upload.params.verbose",
2659-
Description: "",
2660-
MessageTemplate: "Missing upload.params.verbose for {{.}} tool(s). See: https://arduino.github.io/arduino-cli/latest/platform-specification/#verbose-parameter",
2661-
DisableModes: nil,
2662-
EnableModes: []rulemode.Type{rulemode.Default},
2663-
InfoModes: nil,
2664-
WarningModes: nil,
2665-
ErrorModes: []rulemode.Type{rulemode.Default},
2666-
RuleFunction: rulefunction.PlatformTxtUploadParamsVerboseMissing,
2667-
},
2668-
{
2669-
ProjectType: projecttype.Platform,
2670-
SuperprojectType: projecttype.All,
2671-
Category: "configuration files",
2672-
Subcategory: "platform.txt",
2673-
ID: "PF079",
2674-
Brief: "missing upload.params.quiet",
2675-
Description: "",
2676-
MessageTemplate: "Missing upload.params.quiet for {{.}} tool(s). See: https://arduino.github.io/arduino-cli/latest/platform-specification/#verbose-parameter",
2677-
DisableModes: nil,
2678-
EnableModes: []rulemode.Type{rulemode.Default},
2679-
InfoModes: nil,
2680-
WarningModes: nil,
2681-
ErrorModes: []rulemode.Type{rulemode.Default},
2682-
RuleFunction: rulefunction.PlatformTxtUploadParamsQuietMissing,
2683-
},
26842652
{
26852653
ProjectType: projecttype.Platform,
26862654
SuperprojectType: projecttype.All,

internal/rule/rulefunction/platform_test.go

-24
Original file line numberDiff line numberDiff line change
@@ -934,30 +934,6 @@ func TestPlatformTxtRecipeSizeRegexDataMissing(t *testing.T) {
934934
checkPlatformRuleFunction(PlatformTxtRecipeSizeRegexDataMissing, testTables, t)
935935
}
936936

937-
func TestPlatformTxtUploadParamsVerboseMissing(t *testing.T) {
938-
testTables := []platformRuleFunctionTestTable{
939-
{"Missing", "missing-platform.txt", ruleresult.Skip, ""},
940-
{"Invalid", "invalid-platform.txt", ruleresult.NotRun, ""},
941-
{"No tools", "no-tools-platform.txt", ruleresult.Skip, ""},
942-
{"Property missing", "upload-params-verbose-missing-platform.txt", ruleresult.Fail, "avrdude, bossac"},
943-
{"Valid", "valid-platform.txt", ruleresult.Pass, ""},
944-
}
945-
946-
checkPlatformRuleFunction(PlatformTxtUploadParamsVerboseMissing, testTables, t)
947-
}
948-
949-
func TestPlatformTxtUploadParamsQuietMissing(t *testing.T) {
950-
testTables := []platformRuleFunctionTestTable{
951-
{"Missing", "missing-platform.txt", ruleresult.Skip, ""},
952-
{"Invalid", "invalid-platform.txt", ruleresult.NotRun, ""},
953-
{"No tools", "no-tools-platform.txt", ruleresult.Skip, ""},
954-
{"Property missing", "upload-params-quiet-missing-platform.txt", ruleresult.Fail, "avrdude, bossac"},
955-
{"Valid", "valid-platform.txt", ruleresult.Pass, ""},
956-
}
957-
958-
checkPlatformRuleFunction(PlatformTxtUploadParamsQuietMissing, testTables, t)
959-
}
960-
961937
func TestPlatformTxtUploadPatternMissing(t *testing.T) {
962938
testTables := []platformRuleFunctionTestTable{
963939
{"Missing", "missing-platform.txt", ruleresult.Skip, ""},

internal/rule/schema/schemadata/bindata.go

+41-3
Original file line numberDiff line numberDiff line change
@@ -3148,7 +3148,7 @@ var _arduinoPlatformTxtDefinitionsSchemaJson = []byte(`{
31483148
"$ref": "#/definitions/propertiesObjects/toolsToolNameUpload/base/object"
31493149
},
31503150
{
3151-
"$ref": "#/definitions/requiredObjects/toolsToolNameActionName/permissive/object"
3151+
"$ref": "#/definitions/requiredObjects/toolsToolNameUpload/permissive/object"
31523152
}
31533153
]
31543154
}
@@ -3160,7 +3160,7 @@ var _arduinoPlatformTxtDefinitionsSchemaJson = []byte(`{
31603160
"$ref": "#/definitions/propertiesObjects/toolsToolNameUpload/base/object"
31613161
},
31623162
{
3163-
"$ref": "#/definitions/requiredObjects/toolsToolNameActionName/specification/object"
3163+
"$ref": "#/definitions/requiredObjects/toolsToolNameUpload/specification/object"
31643164
}
31653165
]
31663166
}
@@ -3172,7 +3172,7 @@ var _arduinoPlatformTxtDefinitionsSchemaJson = []byte(`{
31723172
"$ref": "#/definitions/propertiesObjects/toolsToolNameUpload/base/object"
31733173
},
31743174
{
3175-
"$ref": "#/definitions/requiredObjects/toolsToolNameActionName/strict/object"
3175+
"$ref": "#/definitions/requiredObjects/toolsToolNameUpload/strict/object"
31763176
}
31773177
]
31783178
}
@@ -3465,6 +3465,44 @@ var _arduinoPlatformTxtDefinitionsSchemaJson = []byte(`{
34653465
]
34663466
}
34673467
}
3468+
},
3469+
"toolsToolNameUpload": {
3470+
"base": {
3471+
"object": {
3472+
"allOf": [
3473+
{
3474+
"required": ["pattern"]
3475+
}
3476+
]
3477+
}
3478+
},
3479+
"permissive": {
3480+
"object": {
3481+
"allOf": [
3482+
{
3483+
"$ref": "#/definitions/requiredObjects/toolsToolNameUpload/base/object"
3484+
}
3485+
]
3486+
}
3487+
},
3488+
"specification": {
3489+
"object": {
3490+
"allOf": [
3491+
{
3492+
"$ref": "#/definitions/requiredObjects/toolsToolNameUpload/base/object"
3493+
}
3494+
]
3495+
}
3496+
},
3497+
"strict": {
3498+
"object": {
3499+
"allOf": [
3500+
{
3501+
"$ref": "#/definitions/requiredObjects/toolsToolNameUpload/base/object"
3502+
}
3503+
]
3504+
}
3505+
}
34683506
}
34693507
}
34703508
}

0 commit comments

Comments
 (0)