Skip to content

Commit abb0ad9

Browse files
committed
autofixes from Etherpad checkPlugin.js
1 parent a023864 commit abb0ad9

File tree

7 files changed

+2073
-1922
lines changed

7 files changed

+2073
-1922
lines changed

.github/workflows/backend-tests.yml

+55-38
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
name: "Backend tests"
1+
name: Backend Tests
22

33
# any branch is useful for testing before a PR is submitted
4-
on: [push, pull_request]
4+
on:
5+
workflow_call:
56

67
jobs:
78
withplugins:
@@ -12,64 +13,80 @@ jobs:
1213
|| (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id)
1314
name: with Plugins
1415
runs-on: ubuntu-latest
15-
1616
steps:
1717
-
1818
name: Install libreoffice
19-
run: |
20-
sudo add-apt-repository -y ppa:libreoffice/ppa
21-
sudo apt update
22-
sudo apt install -y --no-install-recommends libreoffice libreoffice-pdfimport
19+
uses: awalsh128/[email protected]
20+
with:
21+
packages: libreoffice libreoffice-pdfimport
22+
version: 1.0
2323
-
2424
name: Install etherpad core
2525
uses: actions/checkout@v3
2626
with:
2727
repository: ether/etherpad-lite
28+
path: etherpad-lite
29+
- uses: pnpm/action-setup@v3
30+
name: Install pnpm
31+
with:
32+
version: 8
33+
run_install: false
34+
- name: Get pnpm store directory
35+
shell: bash
36+
run: |
37+
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
38+
- uses: actions/cache@v4
39+
name: Setup pnpm cache
40+
with:
41+
path: ${{ env.STORE_PATH }}
42+
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
43+
restore-keys: |
44+
${{ runner.os }}-pnpm-store-
2845
-
2946
name: Checkout plugin repository
3047
uses: actions/checkout@v3
3148
with:
32-
path: ./node_modules/__tmp
49+
path: plugin
3350
-
3451
name: Determine plugin name
3552
id: plugin_name
53+
working-directory: ./plugin
3654
run: |
37-
cd ./node_modules/__tmp
3855
npx -c 'printf %s\\n "::set-output name=plugin_name::${npm_package_name}"'
3956
-
40-
name: Rename plugin directory
57+
name: Link plugin directory
58+
working-directory: ./plugin
4159
run: |
42-
mv ./node_modules/__tmp ./node_modules/"${PLUGIN_NAME}"
43-
env:
44-
PLUGIN_NAME: ${{ steps.plugin_name.outputs.plugin_name }}
60+
pnpm link --global
61+
- name: Remove tests
62+
working-directory: ./etherpad-lite
63+
run: rm -rf ./src/tests/backend/specs
4564
-
46-
uses: actions/setup-node@v3
47-
with:
48-
node-version: 12
49-
cache: 'npm'
50-
cache-dependency-path: |
51-
src/package-lock.json
52-
src/bin/doc/package-lock.json
53-
node_modules/${{ steps.plugin_name.outputs.plugin_name }}/package-lock.json
54-
-
55-
name: Install plugin dependencies
65+
name: Install Etherpad core dependencies
66+
working-directory: ./etherpad-lite
67+
run: bin/installDeps.sh
68+
- name: Link plugin to etherpad-lite
69+
working-directory: ./etherpad-lite
5670
run: |
57-
cd ./node_modules/"${PLUGIN_NAME}"
58-
npm ci
71+
pnpm link --global $PLUGIN_NAME
72+
pnpm run install-plugins --path ../../plugin
5973
env:
6074
PLUGIN_NAME: ${{ steps.plugin_name.outputs.plugin_name }}
61-
# Etherpad core dependencies must be installed after installing the
62-
# plugin's dependencies, otherwise npm will try to hoist common
63-
# dependencies by removing them from src/node_modules and installing them
64-
# in the top-level node_modules. As of v6.14.10, npm's hoist logic appears
65-
# to be buggy, because it sometimes removes dependencies from
66-
# src/node_modules but fails to add them to the top-level node_modules.
67-
# Even if npm correctly hoists the dependencies, the hoisting seems to
68-
# confuse tools such as `npm outdated`, `npm update`, and some ESLint
69-
# rules.
70-
-
71-
name: Install Etherpad core dependencies
72-
run: src/bin/installDeps.sh
75+
- name: Link ep_etherpad-lite
76+
working-directory: ./etherpad-lite/src
77+
run: |
78+
pnpm link --global
79+
- name: Link etherpad to plugin
80+
working-directory: ./plugin
81+
run: |
82+
pnpm link --global ep_etherpad-lite
7383
-
7484
name: Run the backend tests
75-
run: cd src && npm test
85+
working-directory: ./etherpad-lite
86+
run: |
87+
res=$(find .. -path "./node_modules/ep_*/static/tests/backend/specs/**" | wc -l)
88+
if [ $res -eq 0 ]; then
89+
echo "No backend tests found"
90+
else
91+
pnpm run test
92+
fi

.github/workflows/frontend-tests.yml

+38-54
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,36 @@
11
# Publicly credit Sauce Labs because they generously support open source
22
# projects.
3-
name: "frontend tests powered by Sauce Labs"
3+
name: Frontend Tests
44

5-
on: [push]
5+
on:
6+
workflow_call:
67

78
jobs:
8-
test:
9+
test-frontend:
910
runs-on: ubuntu-latest
1011

1112
steps:
12-
-
13-
name: Fail if Dependabot
14-
if: github.actor == 'dependabot[bot]'
15-
run: |
16-
cat <<EOF >&2
17-
Frontend tests skipped because Dependabot can't access secrets.
18-
Manually re-run the jobs to run the frontend tests.
19-
For more information, see:
20-
https://github.blog/changelog/2021-02-19-github-actions-workflows-triggered-by-dependabot-prs-will-run-with-read-only-permissions/
21-
EOF
22-
exit 1
23-
-
24-
name: Generate Sauce Labs strings
25-
id: sauce_strings
26-
run: |
27-
printf %s\\n '::set-output name=name::${{github.event.repository.name}} ${{ github.workflow }} - ${{ github.job }}'
28-
printf %s\\n '::set-output name=tunnel_id::${{ github.run_id }}-${{ github.run_number }}-${{ github.job }}'
2913
-
3014
name: Check out Etherpad core
3115
uses: actions/checkout@v3
3216
with:
3317
repository: ether/etherpad-lite
34-
-
35-
uses: actions/setup-node@v3
18+
- uses: pnpm/action-setup@v3
19+
name: Install pnpm
20+
with:
21+
version: 8
22+
run_install: false
23+
- name: Get pnpm store directory
24+
shell: bash
25+
run: |
26+
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
27+
- uses: actions/cache@v4
28+
name: Setup pnpm cache
3629
with:
37-
node-version: 12
38-
cache: 'npm'
39-
cache-dependency-path: |
40-
src/package-lock.json
41-
src/bin/doc/package-lock.json
30+
path: ${{ env.STORE_PATH }}
31+
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
32+
restore-keys: |
33+
${{ runner.os }}-pnpm-store-
4234
-
4335
name: Check out the plugin
4436
uses: actions/checkout@v3
@@ -68,7 +60,7 @@ jobs:
6860
PLUGIN_NAME: ${{ steps.plugin_name.outputs.plugin_name }}
6961
run: |
7062
cd ./node_modules/"${PLUGIN_NAME}"
71-
npm ci
63+
pnpm i
7264
# Etherpad core dependencies must be installed after installing the
7365
# plugin's dependencies, otherwise npm will try to hoist common
7466
# dependencies by removing them from src/node_modules and installing them
@@ -80,31 +72,23 @@ jobs:
8072
# rules.
8173
-
8274
name: Install Etherpad core dependencies
83-
run: src/bin/installDeps.sh
84-
-
85-
name: Create settings.json
86-
run: cp settings.json.template settings.json
87-
-
88-
name: Disable import/export rate limiting
89-
run: |
90-
sed -e '/^ *"importExportRateLimiting":/,/^ *\}/ s/"max":.*/"max": 0/' -i settings.json
91-
-
92-
name: Remove standard frontend test files
93-
run: rm -rf src/tests/frontend/specs
94-
-
95-
uses: saucelabs/[email protected]
96-
with:
97-
username: ${{ secrets.SAUCE_USERNAME }}
98-
accessKey: ${{ secrets.SAUCE_ACCESS_KEY }}
99-
tunnelIdentifier: ${{ steps.sauce_strings.outputs.tunnel_id }}
100-
-
101-
name: Run the frontend tests
75+
run: bin/installDeps.sh
76+
- name: Create settings.json
77+
run: cp ./src/tests/settings.json settings.json
78+
- name: Run the frontend tests
10279
shell: bash
103-
env:
104-
SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }}
105-
SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }}
106-
SAUCE_NAME: ${{ steps.sauce_strings.outputs.name }}
107-
TRAVIS_JOB_NUMBER: ${{ steps.sauce_strings.outputs.tunnel_id }}
108-
GIT_HASH: ${{ steps.environment.outputs.sha_short }}
10980
run: |
110-
src/tests/frontend/travis/runner.sh
81+
pnpm run dev &
82+
connected=false
83+
can_connect() {
84+
curl -sSfo /dev/null http://localhost:9001/ || return 1
85+
connected=true
86+
}
87+
now() { date +%s; }
88+
start=$(now)
89+
while [ $(($(now) - $start)) -le 15 ] && ! can_connect; do
90+
sleep 1
91+
done
92+
cd src
93+
pnpm exec playwright install chromium --with-deps
94+
pnpm run test-ui --project=chromium

.github/workflows/npmpublish.yml

+30-78
Original file line numberDiff line numberDiff line change
@@ -4,88 +4,40 @@
44
name: Node.js Package
55

66
on:
7-
pull_request:
8-
push:
9-
branches:
10-
- main
11-
- master
7+
workflow_call:
128

139
jobs:
14-
test:
10+
publish-npm:
1511
runs-on: ubuntu-latest
1612
steps:
17-
# Clone ether/etherpad-lite to ../etherpad-lite so that ep_etherpad-lite
18-
# can be "installed" in this plugin's node_modules. The checkout v2 action
19-
# doesn't support cloning outside of $GITHUB_WORKSPACE (see
20-
# https://github.com/actions/checkout/issues/197), so the repo is first
21-
# cloned to etherpad-lite then moved to ../etherpad-lite. To avoid
22-
# conflicts with this plugin's clone, etherpad-lite must be cloned and
23-
# moved out before this plugin's repo is cloned to $GITHUB_WORKSPACE.
24-
-
13+
- uses: actions/setup-node@v4
14+
with:
15+
node-version: 20
16+
registry-url: https://registry.npmjs.org/
17+
- name: Check out Etherpad core
2518
uses: actions/checkout@v3
2619
with:
2720
repository: ether/etherpad-lite
28-
path: etherpad-lite
29-
-
30-
run: mv etherpad-lite ..
31-
# etherpad-lite has been moved outside of $GITHUB_WORKSPACE, so it is now
32-
# safe to clone this plugin's repo to $GITHUB_WORKSPACE.
33-
-
34-
uses: actions/checkout@v3
35-
# This is necessary for actions/setup-node because '..' can't be used in
36-
# cache-dependency-path.
37-
-
38-
name: Create ep_etherpad-lite symlink
21+
- uses: pnpm/action-setup@v3
22+
name: Install pnpm
23+
with:
24+
version: 8
25+
run_install: false
26+
- name: Get pnpm store directory
27+
shell: bash
3928
run: |
40-
mkdir -p node_modules
41-
ln -s ../../etherpad-lite/src node_modules/ep_etherpad-lite
42-
-
43-
uses: actions/setup-node@v3
29+
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
30+
- uses: actions/cache@v4
31+
name: Setup pnpm cache
4432
with:
45-
node-version: 12
46-
cache: 'npm'
47-
cache-dependency-path: |
48-
node_modules/ep_etherpad-lite/package-lock.json
49-
node_modules/ep_etherpad-lite/bin/doc/package-lock.json
50-
package-lock.json
51-
# All of ep_etherpad-lite's devDependencies are installed because the
52-
# plugin might do `require('ep_etherpad-lite/node_modules/${devDep}')`.
53-
# Eventually it would be nice to create an ESLint plugin that prohibits
54-
# Etherpad plugins from piggybacking off of ep_etherpad-lite's
55-
# devDependencies. If we had that, we could change this line to only
56-
# install production dependencies.
57-
-
58-
run: cd ../etherpad-lite/src && npm ci
59-
-
60-
run: npm ci
61-
# This runs some sanity checks and creates a symlink at
62-
# node_modules/ep_etherpad-lite that points to ../../etherpad-lite/src.
63-
# This step must be done after `npm ci` installs the plugin's dependencies
64-
# because npm "helpfully" cleans up such symlinks. :( Installing
65-
# ep_etherpad-lite in the plugin's node_modules prevents lint errors and
66-
# unit test failures if the plugin does `require('ep_etherpad-lite/foo')`.
67-
-
68-
run: npm install --no-save ep_etherpad-lite@file:../etherpad-lite/src
69-
-
70-
run: npm test
71-
-
72-
run: npm run lint
73-
74-
publish-npm:
75-
if: github.event_name == 'push'
76-
needs: test
77-
runs-on: ubuntu-latest
78-
steps:
33+
path: ${{ env.STORE_PATH }}
34+
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
35+
restore-keys: |
36+
${{ runner.os }}-pnpm-store-
7937
-
8038
uses: actions/checkout@v3
8139
with:
8240
fetch-depth: 0
83-
-
84-
uses: actions/setup-node@v3
85-
with:
86-
node-version: 12
87-
registry-url: https://registry.npmjs.org/
88-
cache: 'npm'
8941
-
9042
name: Bump version (patch)
9143
run: |
@@ -94,13 +46,13 @@ jobs:
9446
[ "${NEW_COMMITS}" -gt 0 ] || exit 0
9547
git config user.name 'github-actions[bot]'
9648
git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
97-
npm ci
98-
npm version patch
49+
pnpm i
50+
pnpm version patch
9951
git push --follow-tags
10052
# This is required if the package has a prepare script that uses something
10153
# in dependencies or devDependencies.
10254
-
103-
run: npm ci
55+
run: pnpm i
10456
# `npm publish` must come after `git push` otherwise there is a race
10557
# condition: If two PRs are merged back-to-back then master/main will be
10658
# updated with the commits from the second PR before the first PR's
@@ -112,11 +64,11 @@ jobs:
11264
# back-to-back merges will cause the first merge's workflow to fail but
11365
# the second's will succeed.
11466
-
115-
run: npm publish
116-
env:
117-
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
118-
-
119-
name: Add package to etherpad organization
120-
run: npm access grant read-write etherpad:developers
67+
run: pnpm publish
12168
env:
12269
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
70+
#-
71+
# name: Add package to etherpad organization
72+
# run: pnpm access grant read-write etherpad:developers
73+
# env:
74+
# NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}

0 commit comments

Comments
 (0)