From f8f8c33c64b0aed726ac8cdaf77c47919d019e91 Mon Sep 17 00:00:00 2001 From: Karishma Chadha Date: Tue, 18 Dec 2018 18:19:59 -0500 Subject: [PATCH 1/4] fix(sb3_definitions): allow sprites to be named 'stage' or 'Stage' #49 --- lib/sb3_definitions.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/sb3_definitions.json b/lib/sb3_definitions.json index 2cff9ef3..8a941d46 100644 --- a/lib/sb3_definitions.json +++ b/lib/sb3_definitions.json @@ -347,8 +347,7 @@ "description": "Description of property (and/or property/value pairs) for sprites.", "properties": { "name": { - "type": "string", - "not": {"enum": ["Stage", "stage"]} + "type": "string" }, "isStage": { "type": "boolean", From 72437ce6c06d32a70289c5264e80490bffe5ae42 Mon Sep 17 00:00:00 2001 From: Karishma Chadha Date: Tue, 18 Dec 2018 18:25:35 -0500 Subject: [PATCH 2/4] test(integration): add test for sb3 file with sprite named 'stage' run sb3 files in the fixtures directory when running integration stress test --- test/fixtures/data/_spriteNamedStage.sb3 | Bin 0 -> 41934 bytes test/integration/stress.js | 16 ++++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 test/fixtures/data/_spriteNamedStage.sb3 diff --git a/test/fixtures/data/_spriteNamedStage.sb3 b/test/fixtures/data/_spriteNamedStage.sb3 new file mode 100644 index 0000000000000000000000000000000000000000..4de568769c833cae6b496fff1733d9bd23a83cca GIT binary patch literal 41934 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 @z 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 literal 0 HcmV?d00001 diff --git a/test/integration/stress.js b/test/integration/stress.js index 436ed04c..f45965f5 100644 --- a/test/integration/stress.js +++ b/test/integration/stress.js @@ -30,6 +30,22 @@ test('sb2', function (t) { } }); +test('sb3', function (t) { + var set = data.sb3; + t.plan(set.length * 5); + for (var i in data.sb3) { + parser(data.sb3[i], false, function (err, result) { + t.equal(err, null); + t.equal(Array.isArray(result), true); + var res = result[0]; + var possibleZip = result[1]; + t.type(res, 'object'); + t.type(res.targets, 'object'); + t.equal(possibleZip instanceof JSZip, true); + }); + } +}); + test('json', function (t) { var set = data.json; t.plan(set.length * 6); From bea66d6c2dff8e0c00081d23b755a213fe8a739b Mon Sep 17 00:00:00 2001 From: Karishma Chadha Date: Wed, 19 Dec 2018 11:09:06 -0500 Subject: [PATCH 3/4] fix(sb3_definitions): prevent sprites from being named _stage_ add test fixture and unit test for this change --- lib/sb3_definitions.json | 3 +- test/fixtures/data.js | 4 +- .../invalid/_invalid_spriteNamed_stage_.json | 103 ++++++++++++++++++ test/unit/validate.js | 9 ++ 4 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 test/fixtures/data/invalid/_invalid_spriteNamed_stage_.json diff --git a/lib/sb3_definitions.json b/lib/sb3_definitions.json index 8a941d46..128e2c67 100644 --- a/lib/sb3_definitions.json +++ b/lib/sb3_definitions.json @@ -347,7 +347,8 @@ "description": "Description of property (and/or property/value pairs) for sprites.", "properties": { "name": { - "type": "string" + "type": "string", + "not": {"enum": ["_stage_"]} }, "isStage": { "type": "boolean", diff --git a/test/fixtures/data.js b/test/fixtures/data.js index f7d576f2..fef92573 100644 --- a/test/fixtures/data.js +++ b/test/fixtures/data.js @@ -54,5 +54,7 @@ module.exports = { sprite2: sprite2, layerOrderSB3Json: fs.readFileSync(path.resolve(__dirname, './data/_layer_ordering.json')), invalidStageLayerSB3Json: fs.readFileSync(path.resolve(__dirname, './data/invalid/_invalid_stage_layer.json')), - invalidSpriteLayerSB3Json: fs.readFileSync(path.resolve(__dirname, './data/invalid/_invalid_sprite_layer.json')) + invalidSpriteLayerSB3Json: fs.readFileSync(path.resolve(__dirname, './data/invalid/_invalid_sprite_layer.json')), + invalidSpriteNameSB3Json: fs.readFileSync( + path.resolve(__dirname, './data/invalid/_invalid_spriteNamed_stage_.json')) }; diff --git a/test/fixtures/data/invalid/_invalid_spriteNamed_stage_.json b/test/fixtures/data/invalid/_invalid_spriteNamed_stage_.json new file mode 100644 index 00000000..0e80ec25 --- /dev/null +++ b/test/fixtures/data/invalid/_invalid_spriteNamed_stage_.json @@ -0,0 +1,103 @@ +{ + "targets": [ + { + "isStage": true, + "name": "Stage", + "variables": { + "`jEk@4|i[#Fk?(8x)AV.-my variable": [ + "my variable", + 0 + ] + }, + "lists": {}, + "broadcasts": {}, + "blocks": {}, + "comments": {}, + "currentCostume": 0, + "costumes": [ + { + "assetId": "cd21514d0531fdffb22204e0ec5ed84a", + "name": "backdrop1", + "md5ext": "cd21514d0531fdffb22204e0ec5ed84a.svg", + "dataFormat": "svg", + "rotationCenterX": 240, + "rotationCenterY": 180 + } + ], + "sounds": [ + { + "assetId": "83a9787d4cb6f3b7632b4ddfebf74367", + "name": "pop", + "dataFormat": "wav", + "format": "", + "rate": 44100, + "sampleCount": 1032, + "md5ext": "83a9787d4cb6f3b7632b4ddfebf74367.wav" + } + ], + "volume": 100, + "layerOrder": 0, + "tempo": 60, + "videoTransparency": 50, + "videoState": "on", + "textToSpeechLanguage": null + }, + { + "isStage": false, + "name": "_stage_", + "variables": {}, + "lists": {}, + "broadcasts": {}, + "blocks": {}, + "comments": {}, + "currentCostume": 0, + "costumes": [ + { + "assetId": "b7853f557e4426412e64bb3da6531a99", + "name": "costume1", + "bitmapResolution": 1, + "md5ext": "b7853f557e4426412e64bb3da6531a99.svg", + "dataFormat": "svg", + "rotationCenterX": 48, + "rotationCenterY": 50 + }, + { + "assetId": "e6ddc55a6ddd9cc9d84fe0b4c21e016f", + "name": "costume2", + "bitmapResolution": 1, + "md5ext": "e6ddc55a6ddd9cc9d84fe0b4c21e016f.svg", + "dataFormat": "svg", + "rotationCenterX": 46, + "rotationCenterY": 53 + } + ], + "sounds": [ + { + "assetId": "83c36d806dc92327b9e7049a565c6bff", + "name": "Meow", + "dataFormat": "wav", + "format": "", + "rate": 44100, + "sampleCount": 37376, + "md5ext": "83c36d806dc92327b9e7049a565c6bff.wav" + } + ], + "volume": 100, + "layerOrder": 1, + "visible": true, + "x": 0, + "y": 0, + "size": 100, + "direction": 90, + "draggable": false, + "rotationStyle": "all around" + } + ], + "monitors": [], + "extensions": [], + "meta": { + "semver": "3.0.0", + "vm": "0.2.0-prerelease.20181218172555", + "agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" + } +} diff --git a/test/unit/validate.js b/test/unit/validate.js index f35db185..bd4a534d 100644 --- a/test/unit/validate.js +++ b/test/unit/validate.js @@ -97,3 +97,12 @@ test('sb3 json with invalid layerOrder prop for sprite', function (t) { t.end(); }); }); + +// Sprites should not be named _stage_ +test('sb3 json with invalid sprite name', function (t) { + validate(false, JSON.parse(data.invalidSpriteNameSB3Json), function (err, res) { + t.type(err, 'object'); + t.type(res, 'undefined'); + t.end(); + }); +}); From 898a38da61d46ade7ca4c150f49aeb916a5338c1 Mon Sep 17 00:00:00 2001 From: Karishma Chadha Date: Wed, 19 Dec 2018 11:29:32 -0500 Subject: [PATCH 4/4] build(package): update commitlint packages --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 97dc4833..51c322b1 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,9 @@ "gzip-js": "0.3.2" }, "devDependencies": { - "@commitlint/cli": "6.1.0", - "@commitlint/config-conventional": "6.1.0", - "@commitlint/travis-cli": "6.1.0", + "@commitlint/cli": "7.2.1", + "@commitlint/config-conventional": "7.1.2", + "@commitlint/travis-cli": "7.2.1", "babel-eslint": "8.2.2", "benchmark": "^2.1.1", "cz-conventional-changelog": "^2.1.0",