NOT_AN_OBJECT: throw for null; add additional tests #1212
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow will do a clean install of node dependencies, cache/restore | |
# them, build the source code and run tests across different versions of node | |
# For more information see: | |
# https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions | |
# | |
# See supported Node.js release schedule at | |
# https://nodejs.org/en/about/releases/ | |
name: PouchDB CI | |
on: | |
push: {} | |
pull_request: | |
branches: [master] | |
env: | |
NODE_VERSION: 14 | |
TEST_HOST: localhost | |
jobs: | |
# Check style compliance of JavaScript code. | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: ./.github/actions/install-node-package | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- run: npm run eslint | |
# Check shell scripts. | |
shellcheck: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- run: sudo apt-get install shellcheck | |
- run: git ls-files '*.sh' | xargs shellcheck | |
# Run the integration, find and mapreduce tests against CouchDB on Node.js. | |
# This should be run against every version of CouchDB and every version of | |
# Node.js we support. | |
couchdb-nodejs: | |
needs: lint | |
strategy: | |
fail-fast: false | |
matrix: | |
couchdb: ['2.3', '3.1'] | |
node: [14, 16] | |
cmd: | |
- npm test | |
- TYPE=find PLUGINS=pouchdb-find ADAPTERS=http npm test | |
- TYPE=mapreduce ADAPTERS=http npm test | |
runs-on: ubuntu-latest | |
env: | |
CLIENT: node | |
SERVER: couchdb-master | |
COUCH_HOST: http://admin:[email protected]:5984 | |
SKIP_MIGRATION: 1 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: ./.github/actions/install-node-package | |
with: | |
node-version: ${{ matrix.node }} | |
- uses: ./.github/actions/install-couchdb | |
with: | |
couchdb-version: ${{ matrix.couchdb }} | |
- uses: ./.github/actions/build-pouchdb | |
- id: test | |
run: ${{ matrix.cmd }} | |
continue-on-error: true | |
- name: First retry | |
id: retry | |
if: steps.test.outcome == 'failure' | |
run: ${{ matrix.cmd }} | |
continue-on-error: true | |
- name: Second retry | |
if: steps.retry.outcome == 'failure' | |
run: ${{ matrix.cmd }} | |
# Run the integration, find and mapreduce tests against CouchDB in the | |
# browser. This should be run against every version of CouchDB we support and | |
# every target browser. | |
couchdb-browser: | |
needs: lint | |
strategy: | |
fail-fast: false | |
matrix: | |
couchdb: ['2.3','3.1'] | |
client: ['firefox', 'chromium', 'webkit'] | |
cmd: | |
- npm test | |
- TYPE=find PLUGINS=pouchdb-find ADAPTERS=http npm test | |
- TYPE=mapreduce ADAPTERS=http npm test | |
runs-on: ubuntu-latest | |
env: | |
USE_MINIFIED: 1 | |
CLIENT: ${{ matrix.client }} | |
SERVER: couchdb-master | |
COUCH_HOST: http://admin:[email protected]:5984 | |
SKIP_MIGRATION: 1 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: ./.github/actions/install-node-package | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- uses: ./.github/actions/install-playwright | |
- uses: ./.github/actions/install-couchdb | |
with: | |
couchdb-version: ${{ matrix.couchdb }} | |
- uses: ./.github/actions/build-pouchdb | |
- id: test | |
run: ${{ matrix.cmd }} | |
continue-on-error: true | |
- name: First retry | |
id: retry | |
if: steps.test.outcome == 'failure' | |
run: ${{ matrix.cmd }} | |
continue-on-error: true | |
- name: Second retry | |
if: steps.retry.outcome == 'failure' | |
run: ${{ matrix.cmd }} | |
# Run the integration, find and mapreduce tests against all the Node.js | |
# PouchDB adapters. This should be run for every adapter on every version of | |
# Node.js we support. | |
nodejs-adapter: | |
needs: lint | |
strategy: | |
fail-fast: false | |
matrix: | |
node: [14, 16] | |
adapter: ['leveldb', 'memory'] | |
cmd: | |
- npm test | |
- TYPE=find PLUGINS=pouchdb-find npm test | |
- TYPE=mapreduce npm test | |
runs-on: ubuntu-latest | |
env: | |
CLIENT: node | |
ADAPTERS: ${{ matrix.adapter }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: ./.github/actions/install-node-package | |
with: | |
node-version: ${{ matrix.node }} | |
- uses: ./.github/actions/build-pouchdb | |
- id: test | |
run: ${{ matrix.cmd }} | |
continue-on-error: true | |
- name: First retry | |
id: retry | |
if: steps.test.outcome == 'failure' | |
run: ${{ matrix.cmd }} | |
continue-on-error: true | |
- name: Second retry | |
if: steps.retry.outcome == 'failure' | |
run: ${{ matrix.cmd }} | |
# Run the integration, find and mapreduce tests against all the browser-based | |
# adapters. PouchDB adapters. This should be run for every adapter on every | |
# target browser. | |
browser-adapter: | |
needs: lint | |
strategy: | |
fail-fast: false | |
matrix: | |
client: ['firefox', 'chromium', 'webkit'] | |
adapter: ['idb', 'indexeddb', 'memory'] | |
cmd: | |
- npm test | |
- TYPE=find PLUGINS=pouchdb-find npm test | |
- TYPE=mapreduce npm test | |
runs-on: ubuntu-latest | |
env: | |
USE_MINIFIED: 1 | |
CLIENT: ${{ matrix.client }} | |
ADAPTERS: ${{ matrix.adapter }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: ./.github/actions/install-node-package | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- uses: ./.github/actions/install-playwright | |
- uses: ./.github/actions/build-pouchdb | |
- id: test | |
run: ${{ matrix.cmd }} | |
continue-on-error: true | |
- name: First retry | |
id: retry | |
if: steps.test.outcome == 'failure' | |
run: ${{ matrix.cmd }} | |
continue-on-error: true | |
- name: Second retry | |
if: steps.retry.outcome == 'failure' | |
run: ${{ matrix.cmd }} | |
# Run the integration, find and mapreduce tests using pouchdb-server as the | |
# remote adapter. This checks that pouchdb-server works with the current | |
# PouchDB source tree. We run this on Node.js and on every target browser. | |
# Running against different versions of Node.js might require splitting this | |
# out into a distinct job. | |
pouchdb-server: | |
needs: lint | |
strategy: | |
fail-fast: false | |
matrix: | |
client: ['node', 'firefox', 'chromium', 'webkit'] | |
cmd: | |
- npm test | |
- TYPE=find PLUGINS=pouchdb-find ADAPTERS=http npm test | |
- TYPE=mapreduce ADAPTERS=http npm test | |
runs-on: ubuntu-latest | |
env: | |
CLIENT: ${{ matrix.client }} | |
SERVER: pouchdb-server | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: ./.github/actions/install-node-package | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- if: ${{ matrix.client != 'node' }} | |
uses: ./.github/actions/install-playwright | |
- uses: ./.github/actions/build-pouchdb | |
- id: test | |
run: ${{ matrix.cmd }} | |
continue-on-error: true | |
- name: First retry | |
id: retry | |
if: steps.test.outcome == 'failure' | |
run: ${{ matrix.cmd }} | |
continue-on-error: true | |
- name: Second retry | |
if: steps.retry.outcome == 'failure' | |
run: ${{ matrix.cmd }} | |
# Run all the other testing tasks -- unit tests, and so on. These should be | |
# run on every version of Node.js that we support. | |
nodejs: | |
needs: lint | |
strategy: | |
fail-fast: false | |
matrix: | |
node: [14, 16] | |
cmd: | |
- CLIENT=firefox npm run test-webpack | |
- AUTO_COMPACTION=true npm test | |
- PERF=1 npm test | |
- npm run test-unit | |
- npm run test-component | |
- npm run test-fuzzy | |
# - SERVER=pouchdb-server POUCHDB_SERVER_FLAGS=--in-memory PLUGINS=pouchdb-find npm run report-coverage | |
- npm run verify-build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: ./.github/actions/install-node-package | |
with: | |
node-version: ${{ matrix.node }} | |
- uses: ./.github/actions/build-pouchdb | |
- id: test | |
run: ${{ matrix.cmd }} | |
continue-on-error: true | |
- name: First retry | |
id: retry | |
if: steps.test.outcome == 'failure' | |
run: git reset --hard && ${{ matrix.cmd }} | |
continue-on-error: true | |
- name: Second retry | |
if: steps.retry.outcome == 'failure' | |
run: git reset --hard && ${{ matrix.cmd }} |