From 5e1dd8a7cf27fe6453614aed98b20f12f02300e0 Mon Sep 17 00:00:00 2001 From: Karishma Chadha Date: Wed, 22 Aug 2018 18:41:47 -0400 Subject: [PATCH 1/2] Fix issue with importing projects from 2.0 where block comments were converted to workspace comments and the corresponding block was deleted. --- src/serialization/sb2.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/serialization/sb2.js b/src/serialization/sb2.js index b07d0f7a4..4c269448f 100644 --- a/src/serialization/sb2.js +++ b/src/serialization/sb2.js @@ -183,6 +183,23 @@ const parseScripts = function (scripts, blocks, addBroadcastMsg, getVariableId, blocks.createBlock(convertedBlocks[j]); } } + + // scriptIndexForComment is now greater than the index of the 'last' block in the flattened block array. + // If there are any comments referring to this index or any indices after it, they are comments that + // were originally created as block comments, detached from the block, and then had the associated block deleted. + // These comments should be imported as workspace comments + // by making their blockIDs (which currently refer to non-existing blocks) + // null (See #1452). + const blockCommentIndicesToFix = Object.keys(comments).filter(k => k >= scriptIndexForComment); + for (let i = 0; i < blockCommentIndicesToFix.length; i++) { + const currCommentIndex = blockCommentIndicesToFix[i]; + const currBlockComments = comments[currCommentIndex]; + currBlockComments.forEach(c => { + if (typeof c.blockId === 'number') { + c.blockId = null; + } + }); + } }; /** From 50f65b4e60a62046bed585a0c45612ed95eb1482 Mon Sep 17 00:00:00 2001 From: Karishma Chadha Date: Wed, 22 Aug 2018 19:06:06 -0400 Subject: [PATCH 2/2] Add test fixture and integration test. --- test/fixtures/block-to-workspace-comments.sb2 | Bin 0 -> 54924 bytes .../block_to_workspace_comment_import.js | 54 ++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 test/fixtures/block-to-workspace-comments.sb2 create mode 100644 test/integration/block_to_workspace_comment_import.js diff --git a/test/fixtures/block-to-workspace-comments.sb2 b/test/fixtures/block-to-workspace-comments.sb2 new file mode 100644 index 0000000000000000000000000000000000000000..5d94f4044093d7759c3bb02613ff6b176f0b67f2 GIT binary patch literal 54924 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 O#$f { + const vm = new VirtualMachine(); + vm.attachStorage(makeTestStorage()); + + // Evaluate playground data and exit + vm.on('playgroundData', e => { + const threads = JSON.parse(e.threads); + t.equal(threads.length, 0); + + const target = vm.runtime.targets[1]; + + // Sprite 1 has 3 Comments, 1 block comment and 2 workspace comments (which were + // originally created via a block comment to workspace comment conversion in Scratch 2.0). + const targetComments = Object.values(target.comments); + t.equal(targetComments.length, 3); + const spriteWorkspaceComments = targetComments.filter(comment => comment.blockId === null); + t.equal(spriteWorkspaceComments.length, 2); + + // Test the sprite block comments + const blockComments = targetComments.filter(comment => !!comment.blockId); + t.equal(blockComments.length, 1); + + // There should not be any comments where blockId is a number + const invalidComments = targetComments.filter(comment => typeof comment.blockId === 'number'); + t.equal(invalidComments.length, 0); + + t.end(); + process.nextTick(process.exit); + }); + + // Start VM, load project, and run + t.doesNotThrow(() => { + vm.start(); + vm.clear(); + vm.setCompatibilityMode(false); + vm.setTurboMode(false); + vm.loadProject(project).then(() => { + vm.greenFlag(); + setTimeout(() => { + vm.getPlaygroundData(); + vm.stopAll(); + }, 100); + }); + }); +});