Skip to content

feat!(cli-test): Use child_process spawn arguments properly, fixi… #1980

feat!(cli-test): Use child_process spawn arguments properly, fixi…

feat!(cli-test): Use child_process spawn arguments properly, fixi… #1980

Workflow file for this run

name: Node.js
on:
push:
branches:
- main
pull_request:
jobs:
test:
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
node-version: [18.x, 20.x, 22.x]
package:
- cli-hooks
- cli-test
- logger
- oauth
- rtm-api
- socket-mode
- types
- web-api
- webhook
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: npm --version
- run: npm install
working-directory: packages/${{ matrix.package }}
- name: Link dependent packages (*nix)
if: matrix.os == 'ubuntu-latest'
working-directory: packages/${{ matrix.package }}
run: |
# depending on which package we are testing, also npm link up dependent packages within this monorepo
case "$PWD" in
*/webhook) pushd ../types && npm i && popd && npm link ../types;;
*/web-api) pushd ../types && npm i && popd && npm link ../types && pushd ../logger && npm i && popd && npm link ../logger;;
*/oauth) pushd ../logger && npm i && popd && npm link ../logger && pushd ../web-api && npm i && popd && npm link ../web-api;;
*/socket-mode) pushd ../logger && npm i && popd && npm link ../logger && pushd ../web-api && npm i && popd && npm link ../web-api;;
*) ;; # default
esac
- name: Link dependent packages (Windows)
if: matrix.os == 'windows-latest'
working-directory: packages/${{ matrix.package }}
run: |
# depending on which package we are testing, also npm link up dependent packages within this monorepo
# NOTE: the following is PowerShell
echo "$pwd"
switch -Wildcard ( "$pwd" )
{
'*\webhook'
{
pushd ..\types && npm i && popd && npm link ..\types
}
'*\web-api'
{
pushd ..\types && npm i && popd && npm link ..\types && pushd ..\logger && npm i && popd && npm link ..\logger
}
'*\oauth'
{
pushd ..\logger && npm i && popd && npm link ..\logger && pushd ..\web-api && npm i && popd && npm link ..\web-api
}
'*\socket-mode'
{
pushd ..\logger && npm i && popd && npm link ..\logger && pushd ..\web-api && npm i && popd && npm link ..\web-api
}
}
- run: npm test
working-directory: packages/${{ matrix.package }}
- name: Check for coverage report existence
id: check_coverage
uses: andstor/file-existence-action@v3
with:
files: packages/${{ matrix.package }}/coverage/lcov.info
- name: Upload code coverage
if: matrix.node-version == '22.x' && matrix.os == 'ubuntu-latest' && steps.check_coverage.outputs.files_exists == 'true'
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
directory: packages/${{ matrix.package }}/coverage
flags: ${{ matrix.package }}
verbose: true