Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd642a94

Browse files
committed
Add support for packages[].platforms[].deprecated property of package index
This is a recently added package index property that allows platform developers to specify that a release is deprecatedin a machine-readable manner. This is used to enhanced the platform listings in Boards Manager.
1 parentbb9e831 commitd642a94

File tree

7 files changed

+146
-0
lines changed

7 files changed

+146
-0
lines changed

‎etc/schemas/arduino-package-index-definitions-schema.json‎

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,9 @@
425425
"version": {
426426
"$ref":"#/definitions/propertiesObjects/platformVersion/permissive/object"
427427
},
428+
"deprecated": {
429+
"$ref":"#/definitions/propertiesObjects/deprecated/permissive/object"
430+
},
428431
"category": {
429432
"$ref":"#/definitions/propertiesObjects/category/permissive/object"
430433
},
@@ -474,6 +477,9 @@
474477
"version": {
475478
"$ref":"#/definitions/propertiesObjects/platformVersion/specification/object"
476479
},
480+
"deprecated": {
481+
"$ref":"#/definitions/propertiesObjects/deprecated/specification/object"
482+
},
477483
"category": {
478484
"$ref":"#/definitions/propertiesObjects/category/specification/object"
479485
},
@@ -523,6 +529,9 @@
523529
"version": {
524530
"$ref":"#/definitions/propertiesObjects/platformVersion/strict/object"
525531
},
532+
"deprecated": {
533+
"$ref":"#/definitions/propertiesObjects/deprecated/strict/object"
534+
},
526535
"category": {
527536
"$ref":"#/definitions/propertiesObjects/category/strict/object"
528537
},
@@ -644,6 +653,28 @@
644653
}
645654
}
646655
},
656+
"deprecated": {
657+
"base": {
658+
"object": {
659+
"type":"boolean"
660+
}
661+
},
662+
"permissive": {
663+
"object": {
664+
"$ref":"#/definitions/propertiesObjects/deprecated/base/object"
665+
}
666+
},
667+
"specification": {
668+
"object": {
669+
"$ref":"#/definitions/propertiesObjects/deprecated/base/object"
670+
}
671+
},
672+
"strict": {
673+
"object": {
674+
"$ref":"#/definitions/propertiesObjects/deprecated/specification/object"
675+
}
676+
}
677+
},
647678
"category": {
648679
"base": {
649680
"object": {

‎internal/project/packageindex/packageindexschemas_test.go‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ var validIndexRaw = []byte(`
4646
"name": "Arduino AVR Boards",
4747
"architecture": "avr",
4848
"version": "1.8.3",
49+
"deprecated": false,
4950
"category": "Contributed",
5051
"help": {
5152
"online": "http://www.arduino.cc/en/Reference/HomePage"
@@ -227,6 +228,10 @@ func TestRequired(t *testing.T) {
227228
{"/packages/0/platforms/0/category",compliancelevel.Specification,assert.True},
228229
{"/packages/0/platforms/0/category",compliancelevel.Strict,assert.True},
229230

231+
{"/packages/0/platforms/0/deprecated",compliancelevel.Permissive,assert.False},
232+
{"/packages/0/platforms/0/deprecated",compliancelevel.Specification,assert.False},
233+
{"/packages/0/platforms/0/deprecated",compliancelevel.Strict,assert.False},
234+
230235
{"/packages/0/platforms/0/help",compliancelevel.Permissive,assert.True},
231236
{"/packages/0/platforms/0/help",compliancelevel.Specification,assert.True},
232237
{"/packages/0/platforms/0/help",compliancelevel.Strict,assert.True},
@@ -534,6 +539,7 @@ func TestType(t *testing.T) {
534539
{"/packages/0/platforms/0/name",42,assert.True},
535540
{"/packages/0/platforms/0/architecture",42,assert.True},
536541
{"/packages/0/platforms/0/version",42,assert.True},
542+
{"/packages/0/platforms/0/deprecated",42,assert.True},
537543
{"/packages/0/platforms/0/help",42,assert.True},
538544
{"/packages/0/platforms/0/help/online",42,assert.True},
539545
{"/packages/0/platforms/0/category",42,assert.True},

‎internal/rule/ruleconfiguration/ruleconfiguration.go‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3513,6 +3513,22 @@ var configurations = []Type{
35133513
ErrorModes: []rulemode.Type{rulemode.Strict},
35143514
RuleFunction:rulefunction.PackageIndexPackagesPlatformsVersionNonSemver,
35153515
},
3516+
{
3517+
ProjectType:projecttype.PackageIndex,
3518+
SuperprojectType:projecttype.All,
3519+
Category:"data",
3520+
Subcategory:"platform",
3521+
ID:"IL058",
3522+
Brief:"incorrect packages[].platforms[].deprecated type",
3523+
Description:"Must be a boolean.",
3524+
MessageTemplate:"packages[].platforms[].deprecated property has incorrect type in platform(s): {{.}}",
3525+
DisableModes:nil,
3526+
EnableModes: []rulemode.Type{rulemode.Default},
3527+
InfoModes:nil,
3528+
WarningModes:nil,
3529+
ErrorModes: []rulemode.Type{rulemode.Default},
3530+
RuleFunction:rulefunction.PackageIndexPackagesPlatformsDeprecatedIncorrectType,
3531+
},
35163532
{
35173533
ProjectType:projecttype.PackageIndex,
35183534
SuperprojectType:projecttype.All,

‎internal/rule/rulefunction/packageindex.go‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -848,6 +848,26 @@ func PackageIndexPackagesPlatformsVersionNonSemver() (result ruleresult.Type, ou
848848
returnruleresult.Pass,""
849849
}
850850

851+
// PackageIndexPackagesPlatformsDeprecatedIncorrectType checks for incorrect type of the packages[].platforms[].deprecated property.
852+
funcPackageIndexPackagesPlatformsDeprecatedIncorrectType() (result ruleresult.Type,outputstring) {
853+
ifprojectdata.PackageIndexLoadError()!=nil {
854+
returnruleresult.NotRun,"Error loading package index"
855+
}
856+
857+
nonCompliantIDs:= []string{}
858+
for_,platformData:=rangeprojectdata.PackageIndexPlatforms() {
859+
ifschema.PropertyTypeMismatch(platformData.JSONPointer+"/deprecated",projectdata.PackageIndexSchemaValidationResult()[compliancelevel.Specification]) {
860+
nonCompliantIDs=append(nonCompliantIDs,platformData.ID)
861+
}
862+
}
863+
864+
iflen(nonCompliantIDs)>0 {
865+
returnruleresult.Fail,strings.Join(nonCompliantIDs,", ")
866+
}
867+
868+
returnruleresult.Pass,""
869+
}
870+
851871
// PackageIndexPackagesPlatformsCategoryMissing checks for missing packages[].platforms[].category property.
852872
funcPackageIndexPackagesPlatformsCategoryMissing() (result ruleresult.Type,outputstring) {
853873
ifprojectdata.PackageIndexLoadError()!=nil {

‎internal/rule/rulefunction/packageindex_test.go‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,16 @@ func TestPackageIndexPackagesPlatformsVersionNonSemver(t *testing.T) {
482482
checkPackageIndexRuleFunction(PackageIndexPackagesPlatformsVersionNonSemver,testTables,t)
483483
}
484484

485+
funcTestPackageIndexPackagesPlatformsDeprecatedIncorrectType(t*testing.T) {
486+
testTables:= []packageIndexRuleFunctionTestTable{
487+
{"Invalid JSON","invalid-JSON",ruleresult.NotRun,""},
488+
{"Incorrect packages[].platforms[].deprecated type","packages-platforms-deprecated-incorrect-type",ruleresult.Fail,"^foopackager:avr@1\\.0\\.0$"},
489+
{"Valid","valid-package-index",ruleresult.Pass,""},
490+
}
491+
492+
checkPackageIndexRuleFunction(PackageIndexPackagesPlatformsDeprecatedIncorrectType,testTables,t)
493+
}
494+
485495
funcTestPackageIndexPackagesPlatformsCategoryMissing(t*testing.T) {
486496
testTables:= []packageIndexRuleFunctionTestTable{
487497
{"Invalid JSON","invalid-JSON",ruleresult.NotRun,""},
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"packages": [
3+
{
4+
"name":"foopackager",
5+
"maintainer":"Jane Developer",
6+
"websiteURL":"http://example.com",
7+
"email":"jane@example.com",
8+
"help": {
9+
"online":"http://example.com"
10+
},
11+
"platforms": [
12+
{
13+
"name":"My Board",
14+
"architecture":"avr",
15+
"version":"1.0.0",
16+
"deprecated":42,
17+
"category":"Contributed",
18+
"help": {
19+
"online":"http://example.com"
20+
},
21+
"url":"http://example.com",
22+
"archiveFileName":"myboard-1.0.0.zip",
23+
"checksum":"SHA-256:ec3ff8a1dc96d3ba6f432b9b837a35fd4174a34b3d2927de1d51010e8b94f9f1",
24+
"size":"15005",
25+
"boards": [],
26+
"toolsDependencies": []
27+
}
28+
],
29+
"tools": []
30+
}
31+
]
32+
}

‎internal/rule/schema/schemadata/bindata.go‎

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2961,6 +2961,9 @@ var _arduinoPackageIndexDefinitionsSchemaJson = []byte(`{
29612961
"version": {
29622962
"$ref": "#/definitions/propertiesObjects/platformVersion/permissive/object"
29632963
},
2964+
"deprecated": {
2965+
"$ref": "#/definitions/propertiesObjects/deprecated/permissive/object"
2966+
},
29642967
"category": {
29652968
"$ref": "#/definitions/propertiesObjects/category/permissive/object"
29662969
},
@@ -3010,6 +3013,9 @@ var _arduinoPackageIndexDefinitionsSchemaJson = []byte(`{
30103013
"version": {
30113014
"$ref": "#/definitions/propertiesObjects/platformVersion/specification/object"
30123015
},
3016+
"deprecated": {
3017+
"$ref": "#/definitions/propertiesObjects/deprecated/specification/object"
3018+
},
30133019
"category": {
30143020
"$ref": "#/definitions/propertiesObjects/category/specification/object"
30153021
},
@@ -3059,6 +3065,9 @@ var _arduinoPackageIndexDefinitionsSchemaJson = []byte(`{
30593065
"version": {
30603066
"$ref": "#/definitions/propertiesObjects/platformVersion/strict/object"
30613067
},
3068+
"deprecated": {
3069+
"$ref": "#/definitions/propertiesObjects/deprecated/strict/object"
3070+
},
30623071
"category": {
30633072
"$ref": "#/definitions/propertiesObjects/category/strict/object"
30643073
},
@@ -3180,6 +3189,28 @@ var _arduinoPackageIndexDefinitionsSchemaJson = []byte(`{
31803189
}
31813190
}
31823191
},
3192+
"deprecated": {
3193+
"base": {
3194+
"object": {
3195+
"type": "boolean"
3196+
}
3197+
},
3198+
"permissive": {
3199+
"object": {
3200+
"$ref": "#/definitions/propertiesObjects/deprecated/base/object"
3201+
}
3202+
},
3203+
"specification": {
3204+
"object": {
3205+
"$ref": "#/definitions/propertiesObjects/deprecated/base/object"
3206+
}
3207+
},
3208+
"strict": {
3209+
"object": {
3210+
"$ref": "#/definitions/propertiesObjects/deprecated/specification/object"
3211+
}
3212+
}
3213+
},
31833214
"category": {
31843215
"base": {
31853216
"object": {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp