Commit Graph

6676 Commits (admin-tests)

Author SHA1 Message Date
John McLear 25ab71ad03 runner file 2021-02-07 10:34:55 +00:00
John McLear d2d3617bcc new approach to limiting which browsers fire 2021-02-07 10:30:19 +00:00
John McLear e28161a2d1 timeouts and dont run plugin tests 2021-02-07 10:08:06 +00:00
John McLear d05671fcf2 further increase timeouts 2021-02-07 09:02:37 +00:00
John McLear 816648a519 increase timeouts 2021-02-07 08:47:48 +00:00
John McLear 8b0f3ad4cb Merge branch 'develop' of github.com:ether/etherpad-lite into admin-tests 2021-02-07 08:19:12 +00:00
Richard Hansen 294f2a251f lint: Fix bugs and style issues introduced in PR #4718
This fixes issues introduced in commit
f8a19c4527.
2021-02-07 07:51:35 +00:00
Richard Hansen 0ff8274d2e tests: Fix `waitForPromise()` in `enter.js` 2021-02-07 07:13:04 +00:00
Richard Hansen c625c611d2 tests: delete `src/tests/frontend/specs/caret.js`
All of the tests in this file are commented out so this file does
nothing. We can uncomment the code and clean it up, but the approach
taken in these tests will never work: For security reasons, browsers
do not allow synthetic key events to perform the default
behavior (such as moving the carent when an arrow key is pressed).

There are two ways to test responses to navigation keys:
  * Use WebDriver to create "genuine" keyboard events.
  * Suppress the default behavior and implement caret movement
    ourselves. This is tremendously complicated, especially arrow
    up/down.
2021-02-07 07:02:23 +00:00
John McLear 185af18736 Merge branch 'develop' of github.com:ether/etherpad-lite into admin-tests 2021-02-07 07:01:47 +00:00
John McLear 1f0cb01110 tests: fix enter test 2021-02-07 07:00:12 +00:00
John McLear f8a19c4527
lint: lint and various fixes of frontend test specs 2021-02-07 06:39:03 +00:00
Richard Hansen da10d42183 Delete top-level `package.json`
Advantages of a top-level `package.json`:
  * It prevents npm from printing benign warnings about missing
    `package.json` whenever a plugin is installed.
  * Semantically, it is "the right thing to do" if plugins are to be
    installed in the top-level directory. This avoids violating
    assumptions various tools make about `package.json`, which makes
    it more likely that we can easily switch to a new version of npm
    or to an npm alternative.

Disadvantages of a top-level `package.json`:
  * Including a dependency of `ep_etherpad-lite@file:src` in the
    top-level `package.json`, which is required to keep npm from
    deleting the `node_modules/ep_etherpad-lite` symlink each time a
    package is installed, drastically slows down plugin installation
    because npm recursively walks the ep_etherpad-lite dependencies.
  * npm has a horrible dependency hoisting behavior: It moves
    dependencies from `src/node_modules/` to the top-level
    `node_modules/` directory when possible. This causes numerous
    mysterious problems, such as silent failures in `npm outdated` and
    `npm update`, and it breaks plugins that do
    `require('ep_etherpad-lite/node_modules/foo')`.

Right now, with npm v6.x, eliminating the disadvantages is far more
valuable than keeping the advantages. (This might change with npm
v7.x.)

For a long time there was no top-level `package.json` and it worked
fairly well, although users were often confused by npm's benign
warnings. The top-level `package.json` was added because we needed a
place to put ESLint config for the stuff in `bin/` and `tests/`, and
we wanted the advantages listed above. Unfortunately we were unaware
of the disadvantages at the time. The `bin/` and `tests/` directories
were moved under `src/` so we no longer need the top-level
`package.json` for ESLint.

An alternative to a top-level `package.json`: Create
`plugins/package.json` and install all plugins in `plugins/`. If
`plugins/package.json` has a dependency of
`ep_etherpad-lite@file:../src` then plugin installation will still be
slow (npm will still recursively walk the dependencies in
`src/package.json`) but it should avoid npm's nasty dependency
hoisting behavior. To avoid slow plugin installation we could create a
lightweight `etherpad-pluginlib` package that Etherpad plugins would
use to indirectly access Etherpad's internals. As an added bonus, this
intermediate package could become an adaptor that provides a stable
interface to plugins even when Etherpad core rapidly evolves.
2021-02-07 06:24:52 +00:00
John McLear bd3a3f941c Merge branch 'develop' of github.com:ether/etherpad-lite into admin-tests 2021-02-06 22:44:47 +00:00
John McLear 17512979a6 tests: use new src/ path for frontend admin tests 2021-02-06 20:21:30 +00:00
John McLear e02246641e
ordered lists bugfix: first line item can be 0.*, don't show 0 as undefined (#4600) 2021-02-06 20:19:05 +00:00
John McLear 51b04c9afd tests: logic to allow express for admin UI tests 2021-02-06 20:15:06 +00:00
John McLear d8c6472583 tests: settings helpers for admin UI tests 2021-02-06 20:14:28 +00:00
John McLear b79c347196 tests: frontend helper for admin UI tests 2021-02-06 20:13:55 +00:00
John McLear c639e743d7 tests: frontend tests for admin UI 2021-02-06 20:13:35 +00:00
John McLear 21cc298d6d ci: github workflows 2021-02-06 20:13:17 +00:00
John McLear 4862d6fa9c
editor: fix enter key keep line in view (#4639) 2021-02-06 19:56:59 +00:00
John McLear c969ae58c2
stats: activePads & lastDisconnected stats 2021-02-06 19:53:52 +00:00
John McLear 5f58ce14d6
editor: remove grayed logic and styles so background color is not lost on disconnect/reconnect. 2021-02-06 09:58:10 +00:00
Richard Hansen 8b28e00784 restructure: Prefix `bin/` and `tests/` with `src/`
This is a follow-up to commit
2ea8ea1275.
2021-02-05 21:52:08 +00:00
John McLear 2ea8ea1275 restructure: move bin/ and tests/ to src/
Also add symlinks from the old `bin/` and `tests/` locations to avoid
breaking scripts and other tools.

Motivations:

  * Scripts and tests no longer have to do dubious things like:

        require('ep_etherpad-lite/node_modules/foo')

    to access packages installed as dependencies in
    `src/package.json`.

  * Plugins can access the backend test helper library in a non-hacky
    way:

        require('ep_etherpad-lite/tests/backend/common')

  * We can delete the top-level `package.json` without breaking our
    ability to lint the files in `bin/` and `tests/`.

    Deleting the top-level `package.json` has downsides: It will cause
    `npm` to print warnings whenever plugins are installed, npm will
    no longer be able to enforce a plugin's peer dependency on
    ep_etherpad-lite, and npm will keep deleting the
    `node_modules/ep_etherpad-lite` symlink that points to `../src`.

    But there are significant upsides to deleting the top-level
    `package.json`: It will drastically speed up plugin installation
    because `npm` doesn't have to recursively walk the dependencies in
    `src/package.json`. Also, deleting the top-level `package.json`
    avoids npm's horrible dependency hoisting behavior (where it moves
    stuff from `src/node_modules/` to the top-level `node_modules/`
    directory). Dependency hoisting causes numerous mysterious
    problems such as silent failures in `npm outdated` and `npm
    update`. Dependency hoisting also breaks plugins that do:

        require('ep_etherpad-lite/node_modules/foo')
2021-02-04 17:15:08 -05:00
John McLear efde0b787a
npm-load-remove: checkPad.js example (#4711)
* npm-load-remove: checkPad.js example

* npm-load-remove: checkPad.js example

* npm-load-remove: checkPad.js example

* npm-load-remove: checkPad.js example

* npm-load-remove: checkPad.js example

* npm-load-remove: checkPad.js example

* npm-load-remove: checkPadDeltas

* npm-load-remove: extractPadData

* npm-load-remove: importSqlFile

* npm-load-remove: rebuildPad

* npm-load-remove: repairPad

* npm-load-remove: checkAllPads

* npm-load-remove: migrateDirtyDBtoRealDB

* npm-load-remove: migrateDirtyDBtoRealDB path

* npm-load-remove: migrateDirtyDBtoRealDB dbclose fix

* npm-load-remove: migrateDirtyDBtoRealDB remove commented out line

* npm-load-remove: migrateDirtyDBtoRealDB reintroduce util
2021-02-04 20:53:30 +00:00
Richard Hansen 5a865dfc7e pluginfw: Delete unused return value 2021-02-04 08:41:00 +00:00
Richard Hansen a145b97682 pluginfw: Use `for` loops to improve readability 2021-02-04 08:41:00 +00:00
Richard Hansen fdaacc44c8 pluginfw: Replace `slide.asyncMap()` with `Promise.all()` 2021-02-04 08:41:00 +00:00
Richard Hansen 746cc8cc34 pluginfw: In-line `formatPluginsWithVersion()`
There's only one caller of the function, so move the logic to where it
is used.
2021-02-04 08:41:00 +00:00
Richard Hansen cd1d322af4 /admin/plugins/info: Move logic to `.js` file 2021-02-04 08:41:00 +00:00
Richard Hansen c5f0274116 lint: Move functions up to fix more lint errors 2021-02-04 08:41:00 +00:00
Richard Hansen 99ca57f3ab lint: src/static/js/pluginfw/shared.js 2021-02-04 08:41:00 +00:00
Richard Hansen 2c80c1f2da lint: src/static/js/pluginfw/read-installed.js 2021-02-04 08:41:00 +00:00
Richard Hansen 2b32bc1840 lint: src/static/js/pluginfw/plugins.js 2021-02-04 08:41:00 +00:00
Richard Hansen 9a86ebec2a pluginfw: Fix state reset logic 2021-02-04 08:41:00 +00:00
Richard Hansen 895764e047 pluginfw: Return from `findUnmet()` early if not given an object
For some reason strings are sometimes passed to `findUnmet()`, which
is obviously unexpected given the way the code is written. Rather than
figure out why strings are passed and how to safely avoid passing
strings, just return early. The net effect is the same, but returning
early avoids setting a property on a string, which is prohibited in
strict mode.
2021-02-04 08:41:00 +00:00
Richard Hansen a06662fd00 pluginfw: Delete commented-out code 2021-02-04 08:41:00 +00:00
Richard Hansen c64ee6ff4c pluginfw: Call `npm.load()` before using `npm`
This code is only used when testing `read-installed.js` by running it
directly (e.g., `node src/static/js/pluginfw/read-installed.js`).
2021-02-04 08:41:00 +00:00
translatewiki.net a5bde7982a Localisation updates from https://translatewiki.net. 2021-02-04 08:58:26 +01:00
John McLear 1076783985
tests: backend test coverage for #3227 where a group cannot be deleted if it has pads. 2021-02-03 10:39:30 +00:00
freddii ea202e41f6 docs: fixed typos 2021-02-03 00:30:07 +01:00
John McLear 65dec5bd2c lint: json.js 2021-02-02 15:24:12 -05:00
Richard Hansen 05e0e8dbf7 hooks: New `callAllSerial()` function
This is necessary to migrate away from `callAll()` (which only
supports synchronous hook functions).
2021-02-02 09:09:02 +00:00
Richard Hansen 763fe6fc26 hooks: Document `callFirst()` and `aCallFirst()` 2021-02-02 09:09:02 +00:00
Richard Hansen ba0544ea9e hooks: Add unit tests for `callFirst()`, `aCallFirst()` 2021-02-02 09:09:02 +00:00
Richard Hansen 6f30ea7c38 hooks: Use `callHookFn{Sync,Async}()` for `{call,aCall}First()`
Benefits of `callHookFnSync()` and `callHookFnAsync()`:
  * They are a lot more forgiving than `hookCallWrapper()` was.
  * They perform useful sanity checks.
  * They have extensive unit test coverage.
  * They make the behavior of `callFirst()` and `aCallFirst()` match
    the behavior of `callAll()` and `aCallAll()`.
2021-02-02 09:09:02 +00:00
Richard Hansen c11d60c5f6 hooks: Check context nullness, not truthiness 2021-02-02 09:09:02 +00:00
Richard Hansen fd5d3ce777 hooks: Inline `aCallFirst()` into `exports.aCallFirst()` 2021-02-02 09:09:02 +00:00