Commit Graph

1441 Commits

Author SHA1 Message Date
Christopher Allen
7d29a3f9bb refactor(tests): Remove special handling of msg/messages.js 2022-06-14 23:35:46 +01:00
Christopher Allen
4911c066b3 feat(tests): Support an additionalScripts option
This is a list of scripts to load (in order) once the required modules
have been bootstrapped.

We do this using goog.addDependency to make the first script depend
on the required modules, then each subsequent script depend on the
previous one, and then finally goog.bootstrapping the last such script.
2022-06-14 23:35:45 +01:00
Christopher Allen
c55b30d3bb feat(tests): Use a proper quote function
We need to generate string literals.  Best to use a quote function
instead of concatenating on quote marks withou escaping.  Copy a
well-tested one from Code City.
2022-06-14 23:33:54 +01:00
Christopher Allen
b021e0da2f feat(tests): Make bootstrap.js more configurable.
* Terminology change: use "compressed" and "uncompressed" to describe
  what Closure Compiler calls "compiled" and "uncompiled", to reduce
  confusion with the compilation that will be done by tsc.

* Get the list of modules to bootstrap (in compressed mode), or
  scripts to load (in compressed mode) from BLOCKLY_BOOTSTRAP_OPTIONS,
  to allow calling scripts to to specify exactly what to load.
2022-06-14 23:33:49 +01:00
Christopher Allen
f3861563b7 fix(tests): Throw error if attempting to bootstrap in node.js 2022-06-14 23:33:48 +01:00
Christopher Allen
de776f5629 fix(tests): Don't use template literals in bootstrap.js
This is necessary (but not necessarily sufficient) to be able to
load the file in IE 11.
2022-06-14 23:33:48 +01:00
Christopher Allen
3b45606f92 fix(tests): Use the blockly repository path for all script src= URLs
Previously the (non-advanced) playground was only correctly loadging
on localhost because you can put an arbitrary number of "../"s in front
of a relative URL and it just takes you to the root directory.
2022-06-14 23:33:48 +01:00
Christopher Allen
74d6be111c feat(tests): Introduce BLOCKLY_BOOTSTRAP_OPTIONS
Provide a mechanism for web pages that use bootstrap.js to control
what is loaded and how.
2022-06-14 23:33:48 +01:00
Christopher Allen
dc16094551 refactor(tests): Move and rename prepare.js, blockly.mjs
Since prepare.js and blockly.mjs are going to be needed for running
all tests in uncompiled mode (not just the playgrounds), move them
tests/.  Further, rename prepare.js to bootstrap.js to better reflect
its purpose.
2022-06-14 23:33:39 +01:00
Christopher Allen
d7ab81504c fix(tests): Fix race condition causing flakiness in PHP generator test (#6213)
Turns out process.exit() was sometimes getting called before the
(async) fs.writeFile had finished writing the last of the generator
output files.
2022-06-14 22:21:04 +01:00
Christopher Allen
307ff71c21 refactor(build): Preparation for building TypeScript (#6205)
* chore(deps): Update closure/goog/base.js, add goog.js

  - Update base.js from the latest version (20220502.0.0).
  - Also copy over goog.js, which provides access to a suitable subset
    of goog.* via an importable module).

* chore(build): Split gulpfiles/config.js exports object

  This makes it possible for entries to depend on each other.

* chore(build): build config consistency

  - Reorder entries in gulpfiles.config.js to better match order they
    are used.
  - Have update_metadata.sh reference config.js and vice versa.

* refactor(build): Move deps.js (+ deps.mocha.js) from test/ to build/

  Once we start using tsc, deps.js will be created based on the ouptut
  of tsc rather than the raw source in core/.  Since tsc will need to
  be run before running closure-make-deps and also before trying to
  load blockly_uncompressed.js, it doesn't really make sense to check
  in deps.js; it's better to re-create as needed.

  To reduce inconvenience, a new "prepare" script is added to
  package.json which will run the buildDeps gulp target automaticaly
  when one runs npm install.

* refactor(build): Always build from TypeScript sources

  - Add buildJavaScript gulp task to use tsc to compile any .ts files
    in core/ into build/src/core/ (and also copy any .js files that
    are not yet migrated to TypeScript, which for now is all of them.
  - Remove closure/goog from explicit inputs to tsc; it will find
    the files it needs (e.g., goog.js) automatically.
  - Have buildDeps, the playground, and all the tests that run in
    uncompiled mode use build/src/core/ instead of core/ as their
    input directory.

* feat(build): Add buildJavaScriptAndDeps gulp task

  Have npm run build:deps (and npm run prepare) use a new gulp task,
  buildJavaScriptAndDeps, to run tsc followed by closure-make-deps,
  ensuring that deps.js is calculated based on the most recent code
  in core/.

* fix(build): Fix implementation of flattenCorePaths

  Even though this function is going away I want to remove it in
  a separate PR so that we can revert easily if desired.  But the
  previous checked-in code was totally wrong.  This version works.

* fix(build): Don't let checkinBuilt copy build/src/**

  Now that we are putting a lot more stuff in build/ (specifically,
  all the tsc output in build/src/), modify checkinBuilt so that it
  only copies the specific things we want to check in (for now):

  - _compressed.js build artifacts and their accompanying .js.maps
  - the generated build/msg/js/*.js language files.

  Unrelatedly, also fix safety-quoting of arguments for one execSync
  call.
2022-06-14 22:20:42 +01:00
gregdyke
8b69b61c56 fix: json hooks for lists blocks not needing extra state (#6177) 2022-06-03 11:37:21 -07:00
gregdyke
706c2bfd41 fix: provide initial values to reduce functions in generated js (#6178) 2022-05-31 09:22:34 -07:00
gregdyke
0afff23d49 fix: json serialize lists_getIndex with json extraState (#6136) (#6170)
* fix: json serialize lists_getIndex with json extraState (#6136)

* address review comments

* fix: move block tests to mocha/block folder
2022-05-24 19:12:03 -07:00
alschmiedt
adb5ad1f3f feat: creates a new way to add shortcut key mappings (#6122) 2022-05-13 10:43:20 -07:00
Thomas Wehr
df41c234b7 fix: replace object.mixin with Object.assign (#6138)
* fix: replace `object.mixin` with `Object.assign`

* fix: deprecate `object.mixin`
2022-05-04 14:55:29 -07:00
Neil Fraser
b7cd2e187b chore: Remove Blockly.utils.global (#6120)
The Closure Compiler creates globalThis as a pollyfill.
2022-04-28 12:39:52 -07:00
Neil Fraser
63ca83b545 chore: Make startsWith faster (#6118)
by using built-in function (polyfill will handle IE).
2022-04-27 15:25:07 -07:00
Tobias Weinert
45c36f8982 fix: JSON deserialization fails (bug #6091) (collapsed procedure call… (#6103)
* fix: JSON deserialization fails (bug #6091) (collapsed procedure call blocks)

* fix: JSON deserialization fails (bug #6091) changed fix, added tests (collapsed procedure call blocks)
2022-04-27 08:00:47 -07:00
Rachel Fenichel
daf78af13e fix!: fix or silence type errors (#6105)
* fix: add isBlockCreatable to IFlyout interface

* fix: add getClickTarget to IToolboxItem interface

* fix: fix some types in zelos renderer

* fix: add scrollToStart to IFlyout interface

* fix: add setVisible_ to IToolboxItem

* fix: use instanceof check for workspace comments in gesture code

* fix: data stored on the DOM for tooltips

* fix: use blockSvg to access icons

* fix: add instanceof check in shortcut_items.js

* fix: suppress warning about onKeyDown in tolbox

* fix: add instanceof check in workspace_svg

* fix: don't use dot accessor to avoid type problem

* fix: silence type errors in ast_node.js
2022-04-22 15:55:55 -07:00
Aaron Dodson
edc2a5cd0c fix: Fix compilation errors under Closure's strict mode (#6073)
* fix: Fix errors under strict compilation.

* fix: Fix tests that referenced properties converted to data attributes.

* fix: Incorporate feedback on resolving compiler errors.

* refactor: Revert changes to skew and translate attributes.

* refactor: Introduce LegacyContextMenuOption type to correspond to documented fields.

* refactor: Introduce PathLeftShape and PathDownShape vs casting to PuzzleTab/Notch.

* chore: Added nullability modifiers to type annotations.

* refactor: Export FlyoutItem directly.

* chore: clang-format renderers/zelos/drawer.js.
2022-04-19 14:17:17 -07:00
Rachel Fenichel
9e2d17f144 chore(tests): delete test pages from rendering rewrite in 2019 (#6074) 2022-04-12 15:31:05 -07:00
Aaron Dodson
e36b23cc77 chore: Update sizes in check_metadata.sh (#6058) 2022-04-01 16:03:48 -07:00
Maribeth Bottorff
05b47e27d9 chore: fix screenshot lint (#6056)
* chore: fix screenshot lint

* chore: remove extra space
2022-03-31 14:34:33 -07:00
Beka Westberg
c4a25eb3c4 fix: revert "Delete events should animate when played (#5919)" (#6031)
* Revert "Delete events should animate when played (#5919)"

This reverts commit bce4c5e2c6.

* fix: lint in screenshot
2022-03-29 11:47:50 -07:00
Aaron Dodson
ca6e590101 fix: Fix downloading screenshots on the playground. (#6025)
* fix: Fix downloading screenshots on the playground.

* fix: Resolve lint warning about unused variable.
2022-03-25 08:27:08 -07:00
alschmiedt
364bf14ce6 fix: advanced playground and playground to work when hosted (#6021) 2022-03-23 11:08:55 -07:00
Beka Westberg
c4308007bc fix: always rename caller to legal name (#6014)
* fix: always rename caller to legal name

* fix: enable tests for non-matching callers which overlap names getting renamed

* fix: remove TODOs
2022-03-21 15:38:23 -07:00
Beka Westberg
7abf3de910 fix: playground test blocks, text area listeners, and show/hide buttons (#6015) 2022-03-21 14:12:47 -07:00
YAMADA Yutaka
85ce3b82c6 fix: comments not being restored when dragging (#6011)
* fix comment deserialization

* add restore comment test

* Fix comment.

* fix: Modify test structure.
2022-03-21 07:51:51 -07:00
Maribeth Bottorff
0b2bf3ae9d feat: make mocha fail if it encounters 0 tests (#5981) 2022-03-16 17:16:06 -07:00
Beka Westberg
e2eaebec47 fix: convert the Workspace class to an ES6 class (#5977)
* fix: run conversion script on workspace

* fix: cleanup from conversion script

* fix: make debug build happy

* fix: tests

* fix: format

* fix: format
2022-03-16 13:22:03 -07:00
alschmiedt
a65b895002 chore: remove deprecation console log for debug renderer (#5998) 2022-03-16 08:42:01 -07:00
Beka Westberg
9e1cda8f45 fix: playground access to Blockly 2022-03-14 11:53:27 -07:00
Christopher Allen
afc4088ce2 feat(tests): Use official semver.org RegExp (#5990)
Use the official semantic versioning regexp from
https://semver.org/, rather than the shorter but sloppier one
we had previously found at
https://gist.github.com/jhorsman/62eeea161a13b80e39f5249281e17c39.
2022-03-09 22:10:42 +00:00
Christopher Allen
3c723f0199 feat(tests): Add a test to validate scripts/migration/renamings.js (#5980)
* feat(tests): Add a test script for the renamings file

* Make scripts/migration/renamings.js a valid JSON5 file.
* Add a schema for it in tests/migration/renamings-schema.json.
* Add a script to test one against the other, as
  tests/migration/validate-renamings.  It is a node.js script
  that will exit 0 if the renamings file is valid, or 1 if it
  is not (and print a not-very-helpful error message from which
  is possible, with some effort, to deduce what the error is.)

* fix: convert to JSON5 and refactor example

* fix: convert keys to new key names

* fix: change versions to arrays instead of objects

* fix: fix version numbers

* fix: associate renames with the version where they were added

* fix: fixup example

* fix: put older renames at the bottom, and newer renames at the top

* fix: enable renamings test in run_all_tests

* fix: put newer renames back at the bottom

This reverts commit efe070e344.

* fix(tests): add missing additionalProperties: false to schema

And fix the resulting validation error in the example entry.

* chore(tests): Improve wording of example entry; add extra examples

Tweaked line wrapping of some existing entries (example and
acutal) that were otherwise untouched.

* feat: add dropDownDiv renaming to new database

* feat(tests): Check for duplicate entries for the same module

Also fixed extraneous whitespace in run_all_tests.sh

* fix(tests): Make validate-renamings.js compatible with node.js v12

Also remove success message, to adhere to usual unix convention
(silence implies success) as eslint does, and reduce unecessary
npm test output clutter.

* fix(tests): Fixes for PR #5980

* Fix typos.
* Remove redundant check.

Co-authored-by: Beka Westberg <bwestberg@google.com>
2022-03-09 11:29:43 -08:00
Beka Westberg
01d45972d4 fix: revert converting test helpers to es modules (#5982)
* Revert "fix: lint"

This reverts commit 050956d105.

* Revert "fix: run mocha as a module"

This reverts commit 4dac25ae99.

* Revert "move to modules, but break mocha"

This reverts commit 220d7bbd1d.
2022-03-09 07:38:37 -08:00
Christopher Allen
e11b5834e5 fix(tests): Enable --debug for test:compile:advanced; fix some errors (and demote the rest to warnings) (#5983)
* refactor(tests): Migrate tests/compile/main.js to goog.module

* feat(tests): Enable --debug for test:compile:advanced; demote errors

  * Enable the --debug flag when running the
    buildAdvancedCompilationTest gulp task.
  * Remove partialAlias diagnostic group from `JSC_ERROR`, demoting
    JSC_PARTIAL_NAMESPACE to warning.

  Reverts "Revert 'fix(tests): Enable --debug for test:compile:advanced;
  fix some errors (#5959)'".
2022-03-08 23:20:19 +00:00
Maribeth Bottorff
7d250fa9cf feat: add mocha failure messages to console output (#5984)
* feat: add mocha failure messages to console output

* fix: line up the messages
2022-03-07 18:55:11 -08:00
Beka Westberg
543cb8e1b1 fix: move the dropdown div to a namespace instead of a class with only static properties (#5979)
* fix: remove drop down div class

* fix: change name and export for drop down div

* fix: make module-local variables conform to styleguide

* fix: format

* fix: shadowing
2022-03-07 13:29:23 -08:00
Beka Westberg
2edd228117 fix: move test helpers from samples into core (#5969)
* fix: move core test helpers into new directory

* fix: add test helpers to core and convert to goog modules

* fix: change tests to use local helpers

* fix: change local tests to use chai asserts

* fix: skip field tests in serializer b/c test blocks are unavailable

* fix: rename some helper files

* fix: rename some helper modules

* fix: split block helpers into code gen and serialization

* fix: split block defs into new helper file

* fix: split warning helpers into new file

* fix: split user input helpers into new file

* fix: split event helpers into a new file

* fix: split variable helper into new file

* fix: move remaining test helpers to new setup-teardown file

* fix: rename setup and teardown module

* fix: cleanup from rebase

* fix: undo accidental rename

* fix: lint?

* fix: bad toolbox definitions namespace

* fix: fixup warning helpers

* fix: remove inclusion of dev-tools in mocha tests

* move to modules, but break mocha

* fix: run mocha as a module

* fix: lint
2022-03-04 13:10:03 -08:00
Maribeth Bottorff
6841ccc99f feat: Allow developers to set a custom tooltip rendering function. (#5956)
* refactor: refactor tooltip show method

* refactor: make Tooltip a class that is accessed via a singleton

* revert: "refactor: make Tooltip a class that is accessed via a singleton"

This reverts commit b3d543cc35.

* feat: add the ability to set a custom tooltip function

* fix: check for null where it matters for types

* feat: Add a test for the custom tooltip function

* fix: fix formatting

* fix: format test

* fix: remove unnecessary teardown call in test
2022-03-03 17:23:02 -08:00
Beka Westberg
8058df2a71 fix: custom block context menus (#5976)
* fix: custom block context menus

* fix: move rendered-specific properties back into BlockSvg
2022-03-03 10:52:39 -08:00
Beka Westberg
2a0e54759d Revert "fix(tests): Enable --debug for test:compile:advanced; fix some errors (#5959)"
This reverts commit 88334bea80.
2022-03-01 15:31:44 -08:00
Christopher Allen
88334bea80 fix(tests): Enable --debug for test:compile:advanced; fix some errors (#5959)
* Enable the --debug flag when running the
  buildAdvancedCompilationTest gulp task.
* Migrate test/compile/main.js to goog.module.
  * Use more selective goog.requires.
    * Reduces compiled size from ~400k to ~370k.
  * @suppress "extra" requires needed for side effects.
2022-03-01 16:30:58 +00:00
Beka Westberg
fa14e9d6de refactor: convert blocksvg and block to ES6 classes (#5952)
* refact: move super call to top of block svg

* refact: run conversion script on block svg and block

* fix: make debug build happy

* fix: tests

* style: format

* fix: cleanup from rebase

* fix: use new.target instead of a new parameter

* fix: add more overridden casted methods to BlockSvg

* style: fix typos

* style: move override tags to the end of JSDoc

* fix: cleanup from rebase
2022-02-28 09:48:37 -08:00
Beka Westberg
cb4521b645 refactor: Convert fields to ES6 classes (#5943)
* refactor: Initial test at refactoring fields to ES6

* refact: reorganize text input and descendants to call super first

* refact: run conversion script on text input field and subclasses

* clean: cleanup fields post-conversion script

* refact: reorganize dropdown and variable fields to call super first

* refact: run class conversion script on dropdown and variable

* clean: clean fields post conversion script

* refact: reorganize misc fields to call super first

* refact: run conversion script on misc fields

* clean: cleanup misc fields after conversion

* fix: add setting the value and whatnot back to the base field. Pass sentinel conistently

* format

* refact: work on making debug compiler happy

* clean: finish making debug build happy

* fix: work on making tests happy

* fix: finish making tests happy

* Fix: fixup angle and multiline fields

* clean: format

* fix: move default value back to DEFAULT_VALUE

* fix: change SENTINEL to SKIP_SETUP

* fix: inline docs

* fix: some misc PR comments

* fix: format

* fix: make compiler hapy with new.target

* fix: types in FieldDropdown

* fix: add @final annotations to Field

* feat: move Sentinel to a utils file

* fix: remove ImageProperties from external API

* clean: cleanup chunks and deps
2022-02-28 08:59:33 -08:00
Beka Westberg
237e66cf29 refactor: convert row.js and base.js to ES6 classes (#5957)
* fix: remove unnecessary properties from rows

* refactor: run conversion script on measurables

* clean: cleanup from conversion

* fix: make debug build happy

* clean: format

* fix: remove widthWithConnectedBlocks assignment on element

* fix: add inline docs for statementEdge
2022-02-25 11:06:12 -08:00
Beka Westberg
7e221c20de refactor: convert PathObject to an ES6 class (#5954)
* refactor: add super call to geras path_object

* refactor: run conversion script

* clean: cleanup from conversion script

* fix: make debug build happy

* clean: add clarifying comment

* clean: format
2022-02-23 14:12:32 -08:00
Christopher Allen
5078dcbc6d refactor(blocks)!: Rename Blockly.blocks.* modules to Blockly.libraryBlocks.* (#5953)
...and rename Blockly.blocks.all (blocks/all.js) to
Blockly.libraryBlocks (blocks/blocks.js

BREAKING CHANGE: (only) because the exports object from the
`blocks_compressed.js` chunk will be accessed as
`Blockly.libraryBlocks` instead of `Blockly.blocks.all` when the
chunk is loaded in a browser via a `<script>` tag.  There will
be no changes visible when the chunk is loaded via ES module
`import` or CJS `require`.
2022-02-23 21:25:52 +00:00