mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-01-19 06:03:34 +01:00
tests: Microsoft Windows Server CI (#4791)
Due to a recent release that wasn't functioning properly this CI will help us catch the majority of Microsoft Node Quirks before they make it into a release.
This commit is contained in:
parent
13e4451c2b
commit
9fb2c640b9
3 changed files with 91 additions and 14 deletions
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
* text=auto eol=lf
|
92
.github/workflows/backend-tests.yml
vendored
92
.github/workflows/backend-tests.yml
vendored
|
@ -4,13 +4,13 @@ name: "Backend tests"
|
||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
withoutplugins:
|
withoutpluginsLinux:
|
||||||
# run on pushes to any branch
|
# run on pushes to any branch
|
||||||
# run on PRs from external forks
|
# run on PRs from external forks
|
||||||
if: |
|
if: |
|
||||||
(github.event_name != 'pull_request')
|
(github.event_name != 'pull_request')
|
||||||
|| (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id)
|
|| (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id)
|
||||||
name: without plugins
|
name: Linux without plugins
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
@ -33,13 +33,13 @@ jobs:
|
||||||
- name: Run the backend tests
|
- name: Run the backend tests
|
||||||
run: cd src && npm test
|
run: cd src && npm test
|
||||||
|
|
||||||
withplugins:
|
withpluginsLinux:
|
||||||
# run on pushes to any branch
|
# run on pushes to any branch
|
||||||
# run on PRs from external forks
|
# run on PRs from external forks
|
||||||
if: |
|
if: |
|
||||||
(github.event_name != 'pull_request')
|
(github.event_name != 'pull_request')
|
||||||
|| (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id)
|
|| (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id)
|
||||||
name: with Plugins
|
name: Linux with Plugins
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
@ -85,3 +85,87 @@ jobs:
|
||||||
|
|
||||||
- name: Run the backend tests
|
- name: Run the backend tests
|
||||||
run: cd src && npm test
|
run: cd src && npm test
|
||||||
|
|
||||||
|
withoutpluginsWindows:
|
||||||
|
# run on pushes to any branch
|
||||||
|
# run on PRs from external forks
|
||||||
|
if: |
|
||||||
|
(github.event_name != 'pull_request')
|
||||||
|
|| (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id)
|
||||||
|
name: Windows without plugins
|
||||||
|
runs-on: windows-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: 12
|
||||||
|
|
||||||
|
- name: Install all dependencies and symlink for ep_etherpad-lite
|
||||||
|
run: |
|
||||||
|
cd src
|
||||||
|
npm ci --no-optional
|
||||||
|
|
||||||
|
- name: Fix up the settings.json
|
||||||
|
run: |
|
||||||
|
powershell -Command "(gc settings.json.template) -replace '\"max\": 10', '\"max\": 10000' | Out-File -encoding ASCII settings.json.holder"
|
||||||
|
powershell -Command "(gc settings.json.holder) -replace '\"points\": 10', '\"points\": 1000' | Out-File -encoding ASCII settings.json"
|
||||||
|
|
||||||
|
- name: Run the backend tests
|
||||||
|
run: cd src && npm test
|
||||||
|
|
||||||
|
withpluginsWindows:
|
||||||
|
# run on pushes to any branch
|
||||||
|
# run on PRs from external forks
|
||||||
|
if: |
|
||||||
|
(github.event_name != 'pull_request')
|
||||||
|
|| (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id)
|
||||||
|
name: Windows with Plugins
|
||||||
|
runs-on: windows-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: 12
|
||||||
|
|
||||||
|
- name: Install Etherpad plugins
|
||||||
|
run: >
|
||||||
|
npm install
|
||||||
|
ep_align
|
||||||
|
ep_author_hover
|
||||||
|
ep_cursortrace
|
||||||
|
ep_font_size
|
||||||
|
ep_hash_auth
|
||||||
|
ep_headings2
|
||||||
|
ep_image_upload
|
||||||
|
ep_markdown
|
||||||
|
ep_readonly_guest
|
||||||
|
ep_set_title_on_pad
|
||||||
|
ep_spellcheck
|
||||||
|
ep_subscript_and_superscript
|
||||||
|
ep_table_of_contents
|
||||||
|
|
||||||
|
# This must be run after installing the plugins, otherwise npm will try to
|
||||||
|
# hoist common dependencies by removing them from src/node_modules and
|
||||||
|
# installing them in the top-level node_modules. As of v6.14.10, npm's hoist
|
||||||
|
# logic appears to be buggy, because it sometimes removes dependencies from
|
||||||
|
# src/node_modules but fails to add them to the top-level node_modules. Even
|
||||||
|
# if npm correctly hoists the dependencies, the hoisting seems to confuse
|
||||||
|
# tools such as `npm outdated`, `npm update`, and some ESLint rules.
|
||||||
|
- name: Install all dependencies and symlink for ep_etherpad-lite
|
||||||
|
run: |
|
||||||
|
cd src
|
||||||
|
npm ci --no-optional
|
||||||
|
|
||||||
|
- name: Fix up the settings.json
|
||||||
|
run: |
|
||||||
|
powershell -Command "(gc settings.json.template) -replace '\"max\": 10', '\"max\": 10000' | Out-File -encoding ASCII settings.json.holder"
|
||||||
|
powershell -Command "(gc settings.json.holder) -replace '\"points\": 10', '\"points\": 1000' | Out-File -encoding ASCII settings.json"
|
||||||
|
|
||||||
|
- name: Run the backend tests
|
||||||
|
run: cd src && npm test
|
||||||
|
|
|
@ -280,6 +280,8 @@ describe(__filename, function () {
|
||||||
return pad;
|
return pad;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.timeout(1000);
|
||||||
|
|
||||||
beforeEach(async function () {
|
beforeEach(async function () {
|
||||||
await deleteTestPad();
|
await deleteTestPad();
|
||||||
settings.requireAuthorization = true;
|
settings.requireAuthorization = true;
|
||||||
|
@ -292,7 +294,6 @@ describe(__filename, function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('!authn !exist -> create', async function () {
|
it('!authn !exist -> create', async function () {
|
||||||
this.timeout(100);
|
|
||||||
await agent.post(`/p/${testPadIdEnc}/import`)
|
await agent.post(`/p/${testPadIdEnc}/import`)
|
||||||
.attach('file', padText, {filename: '/test.txt', contentType: 'text/plain'})
|
.attach('file', padText, {filename: '/test.txt', contentType: 'text/plain'})
|
||||||
.expect(200);
|
.expect(200);
|
||||||
|
@ -302,7 +303,6 @@ describe(__filename, function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('!authn exist -> replace', async function () {
|
it('!authn exist -> replace', async function () {
|
||||||
this.timeout(100);
|
|
||||||
const pad = await createTestPad('before import');
|
const pad = await createTestPad('before import');
|
||||||
await agent.post(`/p/${testPadIdEnc}/import`)
|
await agent.post(`/p/${testPadIdEnc}/import`)
|
||||||
.attach('file', padText, {filename: '/test.txt', contentType: 'text/plain'})
|
.attach('file', padText, {filename: '/test.txt', contentType: 'text/plain'})
|
||||||
|
@ -312,7 +312,6 @@ describe(__filename, function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('authn anonymous !exist -> fail', async function () {
|
it('authn anonymous !exist -> fail', async function () {
|
||||||
this.timeout(100);
|
|
||||||
settings.requireAuthentication = true;
|
settings.requireAuthentication = true;
|
||||||
await agent.post(`/p/${testPadIdEnc}/import`)
|
await agent.post(`/p/${testPadIdEnc}/import`)
|
||||||
.attach('file', padText, {filename: '/test.txt', contentType: 'text/plain'})
|
.attach('file', padText, {filename: '/test.txt', contentType: 'text/plain'})
|
||||||
|
@ -321,7 +320,6 @@ describe(__filename, function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('authn anonymous exist -> fail', async function () {
|
it('authn anonymous exist -> fail', async function () {
|
||||||
this.timeout(100);
|
|
||||||
settings.requireAuthentication = true;
|
settings.requireAuthentication = true;
|
||||||
const pad = await createTestPad('before import\n');
|
const pad = await createTestPad('before import\n');
|
||||||
await agent.post(`/p/${testPadIdEnc}/import`)
|
await agent.post(`/p/${testPadIdEnc}/import`)
|
||||||
|
@ -331,7 +329,6 @@ describe(__filename, function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('authn user create !exist -> create', async function () {
|
it('authn user create !exist -> create', async function () {
|
||||||
this.timeout(100);
|
|
||||||
settings.requireAuthentication = true;
|
settings.requireAuthentication = true;
|
||||||
await agent.post(`/p/${testPadIdEnc}/import`)
|
await agent.post(`/p/${testPadIdEnc}/import`)
|
||||||
.auth('user', 'user-password')
|
.auth('user', 'user-password')
|
||||||
|
@ -343,7 +340,6 @@ describe(__filename, function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('authn user modify !exist -> fail', async function () {
|
it('authn user modify !exist -> fail', async function () {
|
||||||
this.timeout(100);
|
|
||||||
settings.requireAuthentication = true;
|
settings.requireAuthentication = true;
|
||||||
authorize = () => 'modify';
|
authorize = () => 'modify';
|
||||||
await agent.post(`/p/${testPadIdEnc}/import`)
|
await agent.post(`/p/${testPadIdEnc}/import`)
|
||||||
|
@ -354,7 +350,6 @@ describe(__filename, function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('authn user readonly !exist -> fail', async function () {
|
it('authn user readonly !exist -> fail', async function () {
|
||||||
this.timeout(100);
|
|
||||||
settings.requireAuthentication = true;
|
settings.requireAuthentication = true;
|
||||||
authorize = () => 'readOnly';
|
authorize = () => 'readOnly';
|
||||||
await agent.post(`/p/${testPadIdEnc}/import`)
|
await agent.post(`/p/${testPadIdEnc}/import`)
|
||||||
|
@ -365,7 +360,6 @@ describe(__filename, function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('authn user create exist -> replace', async function () {
|
it('authn user create exist -> replace', async function () {
|
||||||
this.timeout(100);
|
|
||||||
settings.requireAuthentication = true;
|
settings.requireAuthentication = true;
|
||||||
const pad = await createTestPad('before import\n');
|
const pad = await createTestPad('before import\n');
|
||||||
await agent.post(`/p/${testPadIdEnc}/import`)
|
await agent.post(`/p/${testPadIdEnc}/import`)
|
||||||
|
@ -376,7 +370,6 @@ describe(__filename, function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('authn user modify exist -> replace', async function () {
|
it('authn user modify exist -> replace', async function () {
|
||||||
this.timeout(100);
|
|
||||||
settings.requireAuthentication = true;
|
settings.requireAuthentication = true;
|
||||||
authorize = () => 'modify';
|
authorize = () => 'modify';
|
||||||
const pad = await createTestPad('before import\n');
|
const pad = await createTestPad('before import\n');
|
||||||
|
@ -388,7 +381,6 @@ describe(__filename, function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('authn user readonly exist -> fail', async function () {
|
it('authn user readonly exist -> fail', async function () {
|
||||||
this.timeout(100);
|
|
||||||
const pad = await createTestPad('before import\n');
|
const pad = await createTestPad('before import\n');
|
||||||
settings.requireAuthentication = true;
|
settings.requireAuthentication = true;
|
||||||
authorize = () => 'readOnly';
|
authorize = () => 'readOnly';
|
||||||
|
|
Loading…
Reference in a new issue