From 5d4732af505066ec6d2cfcaabef2aa5e4088cec6 Mon Sep 17 00:00:00 2001 From: Jordan Jensen Date: Mon, 27 Jan 2025 17:07:58 -0800 Subject: [PATCH] Remove bats tests --- .github/workflows/bats.yaml | 51 --------- .github/workflows/contract.yaml | 67 ------------ .github/workflows/main.yaml | 6 -- .github/workflows/nightly.yaml | 1 - .github/workflows/pull-request.yaml | 6 -- CONTRIBUTING.md | 8 -- justfile | 8 -- test/README.md | 32 ------ test/bats/.gitignore | 1 - test/bats/cli/common.bats | 115 --------------------- test/bats/cli/init.bats | 62 ----------- test/bats/contract/deploy.bats | 155 ---------------------------- test/bats/justfile | 18 ---- test/bats/package-lock.json | 36 ------- test/bats/package.json | 14 --- test/bats/tests/tests.bats | 9 -- test/vscode-ui/justfile | 2 +- 17 files changed, 1 insertion(+), 590 deletions(-) delete mode 100644 .github/workflows/bats.yaml delete mode 100644 test/bats/.gitignore delete mode 100644 test/bats/cli/common.bats delete mode 100644 test/bats/cli/init.bats delete mode 100644 test/bats/contract/deploy.bats delete mode 100644 test/bats/package-lock.json delete mode 100644 test/bats/package.json delete mode 100644 test/bats/tests/tests.bats diff --git a/.github/workflows/bats.yaml b/.github/workflows/bats.yaml deleted file mode 100644 index 74861f411..000000000 --- a/.github/workflows/bats.yaml +++ /dev/null @@ -1,51 +0,0 @@ -name: Bats -on: - workflow_call: -jobs: - native: - env: - DOCKER_CONNECT: true - # deploy only these content - CONTENT: "fastapi-simple quarto-website-py" - CONNECT_LICENSE: ${{ secrets.CONNECT_LICENSE }} - PYTHON_VERSION: 3.12 - QUARTO_VERSION: 1.4.549 - strategy: - fail-fast: false - matrix: - runs-on: [ubuntu-latest] - runs-on: ${{ matrix.runs-on }} - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - uses: ./.github/actions/setup - - uses: actions/checkout@v4 - with: - repository: rstudio/connect-content - path: "test/content" - sparse-checkout: bundles - sparse-checkout-cone-mode: false - token: ${{ secrets.CONNECT_PAT }} - - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHON_VERSION }} - - uses: r-lib/actions/setup-r@v2 - with: - r-version: 4.3.0 - - uses: quarto-dev/quarto-actions/setup@v2 - with: - version: ${{ env.QUARTO_VERSION }} - - uses: extractions/setup-just@v2 - - - uses: actions/download-artifact@v4 - with: - name: bin - path: bin - - - run: chmod -R +x ./bin - - run: just bats install - - run: just bats test common - - run: just bats build-connect - - run: just bats test init - - run: just bats test deploy diff --git a/.github/workflows/contract.yaml b/.github/workflows/contract.yaml index 2bbb1311a..a2e988a17 100644 --- a/.github/workflows/contract.yaml +++ b/.github/workflows/contract.yaml @@ -31,73 +31,6 @@ jobs: CONNECT_SERVER=$(python test/setup/get_ip.py) echo "CONNECT_SERVER=$CONNECT_SERVER" >> $GITHUB_OUTPUT - bats-tests: - needs: get-connect-ip - if: ${{ github.event_name == 'schedule' || github.event.inputs.job == 'all' || github.event.inputs.job == 'bats-tests' }} - env: - FUZZBUCKET_SSH_KEY: ${{ secrets.FUZZBUCKET_SSH_KEY }} - FUZZBUCKET_URL: ${{ secrets.FUZZBUCKET_URL }} - FUZZBUCKET_CREDENTIALS: ${{ secrets.FUZZBUCKET_CREDENTIALS }} - CI: true - CONNECT_SERVER: ${{ needs.get-connect-ip.outputs.connect_ip }} - strategy: - fail-fast: false - matrix: - runs-on: [macos-latest, windows-latest, ubuntu-latest] - runs-on: ${{ matrix.runs-on }} - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - uses: ./.github/actions/setup - - name: python - uses: actions/setup-python@v5 - with: - # use python 3.12 for bats - # there are some requirements that are not yet compatible with python 3.13 - python-version: 3.12 - - name: R - uses: r-lib/actions/setup-r@v2 - with: - r-version: 4.3.0 - - name: quarto - uses: quarto-dev/quarto-actions/setup@v2 - with: - version: 1.4.549 - - - uses: actions/download-artifact@v4 - with: - name: bin - path: bin - - uses: actions/checkout@v4 - with: - repository: rstudio/connect-content - path: "test/content" - sparse-checkout: bundles - sparse-checkout-cone-mode: false - token: ${{ secrets.CONNECT_PAT }} - - - name: Install deps on ubuntu - run: | - sudo apt-get install libcurl4-openssl-dev libsodium-dev libfontconfig1-dev libfribidi-dev libfontconfig1-dev libpng-dev - R -e "install.packages('renv', repos='https://packagemanager.posit.co/cran/latest')" - if: matrix.runs-on == 'ubuntu-latest' - - name: Install deps on windows - run: | - R.exe -e "install.packages('renv', repos='https://packagemanager.posit.co/cran/latest')" - if: matrix.runs-on == 'windows-latest' - - name: Install deps on macos - run: | - R -e "install.packages('renv', repos='https://packagemanager.posit.co/cran/latest')" - if: matrix.runs-on == 'macos-latest' - - name: Run Bats Tests - run: | - chmod -R +x ./bin - just bats install - just bats test common - just bats test init - just bats test deploy - vscode-ui-tests: needs: get-connect-ip if: ${{ github.event_name == 'schedule' || github.event.inputs.job == 'all' || github.event.inputs.job == 'vscode-ui-tests' }} diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 7b7803077..07663567f 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -26,9 +26,3 @@ jobs: - package uses: ./.github/workflows/upload.yaml secrets: inherit - - # Integration Tests - bats: - needs: build - secrets: inherit - uses: ./.github/workflows/bats.yaml diff --git a/.github/workflows/nightly.yaml b/.github/workflows/nightly.yaml index ee21c1139..c63b4c658 100644 --- a/.github/workflows/nightly.yaml +++ b/.github/workflows/nightly.yaml @@ -11,7 +11,6 @@ on: type: choice options: - all - - bats-tests - vscode-ui-tests jobs: agent: diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index c482ec37e..b89b8b972 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -33,12 +33,6 @@ jobs: uses: ./.github/workflows/upload.yaml secrets: inherit - # Integration Tests - bats: - needs: build - secrets: inherit - uses: ./.github/workflows/bats.yaml - vscode-ui: needs: - build diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5319e8e78..6f4d3036f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -76,14 +76,6 @@ just cover Once complete, a coverage report will open in your default browser. -### Integration Tests - -The [Bats](https://bats-core.readthedocs.io/en/stable/) framework is used to perform integration tests. For this project we use Bats to assert integrations with native machines via the Bash shell. - -``` -just bats -``` - ## Development ### Build Tools diff --git a/justfile b/justfile index b6a0ccf52..d04eea142 100644 --- a/justfile +++ b/justfile @@ -83,14 +83,6 @@ archive: ./scripts/archive.bash {{ _cmd }} -# Executes commands in ./test/bats/justfile. Equivalent to `just test/bats/`. -bats *args: - #!/usr/bin/env bash - set -eou pipefail - {{ _with_debug }} - - just test/bats/{{ args }} - # Compiles the application using Go. Executables are written to `./bin`. If invoked with `env CI=true` then executables for all supported architectures using the Go toolchain. build: #!/usr/bin/env bash diff --git a/test/README.md b/test/README.md index efda66f8b..d96be89b2 100644 --- a/test/README.md +++ b/test/README.md @@ -4,38 +4,6 @@ The following tests can all be run at the project root directory. Note: These tests assume no accounts exist and no deployments have been made against the test content, so you may need to clear any saved accounts or previous deployments prior to running. -## bats tests - -We use bats to test different segments of the publisher client. There are several targets that initiate tests for different components. - -### deploy - -These tests will start a Connect instance in EC2, retrieve content from the [connect-content ](https://github.com/rstudio/connect-content)repository and deploy each item to Connect running a series of tests found in [deploy.bats](https://github.com/posit-dev/publisher/tree/main/test/bats/contract/deploy.bats). - -### init - -These tests will not require a Connect instance but will retrieve content from the [connect-content](https://github.com/rstudio/connect-content) repository and call `init` against each item and run the tests found in [init.bats](https://github.com/posit-dev/publisher/blob/main/test/bats/cli/init.bats). - -### common - -These tests will not require a Connect instance or content. They run tests found in [common.bats](https://github.com/posit-dev/publisher/blob/main/test/bats/cli/common.bats). - -### Running the tests - -To run the tests, from the project root directory run the following command(s). - -You will need to install bats before running the tests initially, to do so run: - -``` -just bats install -``` - -Then you can run one of the above tests: - -``` -just bats test [test-case] -``` - ## vscode-ui tests We use the [webdriver.io VSCode Extension Service ](https://webdriver.io/docs/extension-testing/vscode-extensions) to test the VSCode UI components. These tests do not require a Connect instance nor extraneous content as it uses the content from our [sample-content directory](https://github.com/posit-dev/publisher/tree/main/test/sample-content). diff --git a/test/bats/.gitignore b/test/bats/.gitignore deleted file mode 100644 index 3c3629e64..000000000 --- a/test/bats/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/test/bats/cli/common.bats b/test/bats/cli/common.bats deleted file mode 100644 index 31926e662..000000000 --- a/test/bats/cli/common.bats +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env bats - -load '../node_modules/bats-support/load' -load '../node_modules/bats-assert/load' - -@test "--help command succeeds" { - run ${EXE} -h - assert_success - assert_line --partial "-h, --help" - assert_line --partial "-v, --verbose" - assert_line --partial "credentials create " - assert_line --partial "credentials delete " - assert_line --partial "credentials get " - assert_line --partial "credentials list" - assert_line --partial "deploy []" - assert_line --partial "init []" - assert_line --partial "redeploy []" - assert_line --partial "requirements create []" - assert_line --partial "requirements show []" - assert_line --partial "ui []" - assert_line --partial "version" -} - -@test "credentials --help command succeeds" { - run ${EXE} credentials -h -} - -@test "credentials create --help command succeeds" { - run ${EXE} credentials create -h -} - -@test "credentials delete --help command succeeds" { - run ${EXE} credentials delete -h -} - -@test "credentials --help get command succeeds" { - run ${EXE} credentials get -h -} - -@test "credentials list --help command succeeds" { - run ${EXE} credentials list -h -} - -@test "init --help command succeeds" { - run ${EXE} init -h - assert_success - assert_line " [] Path to project directory containing files to publish." - assert_line --partial "-h, --help" - assert_line --partial "-v, --verbose" - assert_line --partial "--python=PATH" - assert_line --partial "-c, --config=STRING" -} - -@test "deploy --help command succeeds" { - run ${EXE} deploy -h - assert_success - assert_line " [] Path to project directory containing files to publish." - assert_line --partial "-h, --help" - assert_line --partial "-v, --verbose" - assert_line --partial "-a, --account=STRING" - assert_line --partial "-c, --config=STRING" - assert_line --partial "-n, --name=STRING" -} - -@test "redeploy --help command succeeds" { - run ${EXE} redeploy -h - assert_success - assert_line " Name of deployment to update (in .posit/deployments/)" - assert_line " [] Path to project directory containing files to publish." - assert_line --partial "-h, --help" - assert_line --partial "-v, --verbose" - assert_line --partial "-c, --config=STRING" -} - -@test "ui --help command succeeds" { - run ${EXE} ui -h - assert_success - assert_line --partial "-h, --help" - assert_line --partial "-v, --verbose" - assert_line --partial "-i, --interactive" - assert_line --partial "--listen=HOST[:PORT]" - assert_line --partial "--tls-key-file=STRING" - assert_line --partial "--tls-cert-file=STRING" -} - -@test "requirements create --help command succeeds" { - run ${EXE} requirements create -h - assert_success - assert_line " [] Path to project directory containing files to publish." - assert_line --partial "-h, --help" - assert_line --partial "-v, --verbose" - assert_line --partial "--python=PATH" - assert_line --partial "-o, --output=\"requirements.txt\"" - assert_line --partial "-f, --force" -} - -@test "requirements show --help command succeeds" { - run ${EXE} requirements show -h - assert_success - assert_line " [] Path to project directory containing files to publish." - assert_line --partial "-h, --help" - assert_line --partial "-v, --verbose" - assert_line --partial "--python=PATH" -} - -@test "test version" { - run ${EXE} version - assert_success -} - -@test "test missing command" { - run ${EXE} - assert_failure - assert_line --partial 'error: expected one of "credentials", "deploy", "init", "redeploy", "requirements", ...' -} diff --git a/test/bats/cli/init.bats b/test/bats/cli/init.bats deleted file mode 100644 index 1c2936bed..000000000 --- a/test/bats/cli/init.bats +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env bats - -load '../node_modules/bats-support/load' -load '../node_modules/bats-assert/load' -source ../content/bundles/${CONTENT}/test/.publisher-env -CONTENT_PATH='../content/bundles' - -# temporary unsupported quarto types -quarto_r_content=( - "quarto-proj-r-shiny" "quarto-proj-r" "quarto-proj-r-py" - "quarty-website-r" "quarto-website-r-py" - "quarto-website-r-py-separate-files-deps" "quarto-website-r-deps" - "quarto-website-r-py-deps" - ) - -python_content_types=( - "python-flask" "python-fastapi" "python-shiny" - "python-bokeh" "python-streamlit" "python-flask" - "jupyter-voila" "jupyter-static" -) - -quarto_content_types=( - "quarto" "quarto-static" "quarto-shiny" -) - -@test "init creates expected file for ${CONTENT}" { - python_version="$(python --version | awk '{print $2}')" - quarto_version="$(quarto --version)" - - # init against content should create default.toml - run ${EXE} init ${CONTENT_PATH}/${CONTENT} - assert_success - assert_output --partial "Created config file" - - # the default.toml should have the expected fields - run cat ${CONTENT_PATH}/${CONTENT}/.posit/publish/default.toml - assert_success - assert_line "type = '${APP_MODE}'" - assert_line "entrypoint = '${ENTRYPOINT}'" - assert_line "validate = true" - assert_line "title = '${TITLE}'" - # for python content we create a toml with python version - if [[ ${python_content_type[@]} =~ ${CONTENT_TYPE} ]]; then - assert_line "version = '${python_version}'" - assert_line "package-file = 'requirements.txt'" - assert_line "package-manager = 'pip'" - # for quarto content we create a toml with quarto version - elif [[ ${quarto_content_types[@]} =~ ${CONTENT_TYPE} ]]; then - assert_line "version = '${quarto_version}'" - assert_line "engines = ['${QUARTO_ENGINE}']" - # quarto + python content has 'py' in its name - # test python version for quarto + python content too - if [[ "py" =~ ${CONTENT_TYPE} ]]; then - assert_line "version = '${python_version}'" - fi - fi -} - -teardown_file() { - # delete the temp files - rm -rf ${FULL_PATH}/.posit* -} diff --git a/test/bats/contract/deploy.bats b/test/bats/contract/deploy.bats deleted file mode 100644 index 4ec511cc5..000000000 --- a/test/bats/contract/deploy.bats +++ /dev/null @@ -1,155 +0,0 @@ -#!/usr/bin/env bats - -load '../node_modules/bats-support/load' -load '../node_modules/bats-assert/load' -source ../content/bundles/${CONTENT}/test/.publisher-env -CONTENT_PATH='../content/bundles' -FULL_PATH="${CONTENT_PATH}/${CONTENT}" - -setup_file() { - - if [[ ${RENV_REQUIRED} == "yes" ]]; then - echo "setup for ${CONTENT}" && \ - echo "quarto engine: ${QUARTO_ENGINE}" && \ - (cd ${FULL_PATH} && R -e 'renv::restore()') - fi -} - -# helper funciton for deploys -deploy_assertion() { - assert_success - assert_output --partial "Test Deployment... [OK]" - - # test the deployment via api - GUID="$(echo "${output}" | \ - grep "Direct URL:" | \ - grep -o -E '[0-9a-f-]{36}')" - - run curl --silent --show-error -L --max-redirs 0 --fail \ - -X GET \ - -H "Authorization: Key ${CONNECT_API_KEY}" \ - "${CONNECT_SERVER}/__api__/v1/content/${GUID}" - assert_output --partial "\"app_mode\":\"${APP_MODE}\"" - assert_output --partial "\"description\":\"${CONTENT} description\"" - assert_output --partial "\"connection_timeout\":25" - assert_output --partial "\"read_timeout\":30" - assert_output --partial "\"init_timeout\":35" - assert_output --partial "\"idle_timeout\":40" - assert_output --partial "\"max_processes\":2" - assert_output --partial "\"min_processes\":1" - assert_output --partial "\"max_conns_per_process\":5" - assert_output --partial "\"load_factor\":0.8" - - - # reset min_processes to 0 - run curl --silent --show-error -L --max-redirs 0 --fail \ - -X PATCH \ - -H "Authorization: Key ${CONNECT_API_KEY}" \ - --insecure \ - --data-raw '{"min_processes": 0}' \ - "${CONNECT_SERVER}/__api__/v1/content/${GUID}" -} - -init_with_fields() { - run ${EXE} credentials create bats ${CONNECT_SERVER} ${CONNECT_API_KEY} - run ${EXE} init -c ${CONTENT} ${FULL_PATH} - assert_success - - # add description - perl -i -pe '$_ .= qq(description = "'"${CONTENT}"' description"\n) if /title/' ${FULL_PATH}/.posit/publish/${CONTENT}.toml - - if [[ ${ADDITIONAL_FILES} ]]; then - perl -i -0777 -pe "s/(files = \[.*?)(\s*\])/\1, '${ADDITIONAL_FILES}'\2/s" ${FULL_PATH}/.posit/publish/${CONTENT}.toml - fi - - # add Connect runtime fields for interactive content - echo " -[connect] -runtime.connection_timeout = 25 -runtime.read_timeout = 30 -runtime.init_timeout = 35 -runtime.idle_timeout = 40 -runtime.max_processes = 2 -runtime.min_processes = 1 -runtime.max_conns_per_process = 5 -runtime.load_factor = 0.8 -" >> ${FULL_PATH}/.posit/publish/${CONTENT}.toml - -sed -i"" -e "s/type = '[^']*'/type = '${APP_MODE}'/g" "${FULL_PATH}/.posit/publish/${CONTENT}.toml" -} - -quarto_content_types=( - "quarto" "quarto-static" -) - -python_content_types=( - "python-dash" "python-fastapi" "python-shiny" - "python-bokeh" "python-streamlit" "python-flask" - "jupyter-voila" "jupyter-static" "jupyter-notebook" -) -# create requirements files -@test "requirements create works as expected for ${CONTENT}" { - if [[ ${python_content_types[@]} =~ ${CONTENT_TYPE} ]]; then - mv ${FULL_PATH}/requirements.txt ${FULL_PATH}/temp.txt - run ${EXE} requirements create ${FULL_PATH}/ - assert_success - assert_line "Wrote file requirements.txt:" - - # compare show output to expected existing requirements.in file - run ${EXE} requirements show ${FULL_PATH}/ - assert_success - - run diff -i <(grep -o '^[^=]*' ${FULL_PATH}/test/requirements.in | grep -v '^#') <(grep -o '^[^=]*' ${FULL_PATH}/requirements.txt | grep -v '^#') - assert_success - else - skip - fi -} -# deploy content with the env account using requirements files -@test "deploy ${CONTENT}" { - if [[ ${CONTENT} != "parameterized_report" ]]; then - init_with_fields - run ${EXE} deploy ${FULL_PATH} -n ci_deploy -c ${CONTENT} - deploy_assertion - fi - -} - -# redeploy content from previous test -@test "redeploy ${CONTENT}" { - if [[ ${CONTENT} != "parameterized_report" ]]; then - run ${EXE} redeploy ci_deploy ${FULL_PATH} - deploy_assertion - fi -} - -@test "check for toml file" { - if [[ ${CONTENT} != "parameterized_report" ]]; then - run cat ${FULL_PATH}/.posit/publish/deployments/ci_deploy.toml - assert_output --partial "type = '${APP_MODE}'" - assert_output --partial "entrypoint = '${ENTRYPOINT}'" - assert_output --partial "title = '${TITLE}'" - fi -} - -# verify error for missing requirements file -@test "deploy no requirements file" { - if [[ ${python_content_types[@]} =~ ${CONTENT_TYPE} ]]; then - rm -rf ${FULL_PATH}/requirements.txt - run ${EXE} deploy ${FULL_PATH} - assert_failure - assert_output --partial "\ -Missing dependency file requirements.txt. This file must be included in the deployment." - else - skip - fi -} - -teardown_file() { - unset QUARTO_ENGINE - # delete the bats credentials after each run - CREDS_GUID="$(${EXE} credentials list | jq -r '.[] | select(.name == "bats") | .guid')" - ${EXE} credentials delete ${CREDS_GUID} - # delete the temp files - rm -rf ${FULL_PATH}/.posit* -} diff --git a/test/bats/justfile b/test/bats/justfile index 61b1b4321..b8f72dea1 100644 --- a/test/bats/justfile +++ b/test/bats/justfile @@ -21,7 +21,6 @@ default: set -eou pipefail {{ _with_debug }} - just install just test build-connect: @@ -31,23 +30,6 @@ build-connect: docker compose -f ../docker-compose.yml build -# Deletes ephemeral project files (i.e., cleans the project). -clean: - #!/usr/bin/env bash - set -eou pipefail - {{ _with_debug }} - - rm -rf node_modules - - -# Install dependencies -install: - #!/usr/bin/env bash - set -eou pipefail - {{ _with_debug }} - - npm install - fuzzbucket-start: #!/usr/bin/env bash set -eou pipefail diff --git a/test/bats/package-lock.json b/test/bats/package-lock.json deleted file mode 100644 index d99512286..000000000 --- a/test/bats/package-lock.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "bats", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "devDependencies": { - "bats": "^1.10.0", - "bats-assert": "github:ztombol/bats-assert", - "bats-support": "github:ztombol/bats-support" - } - }, - "node_modules/bats": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/bats/-/bats-1.10.0.tgz", - "integrity": "sha512-yOQrC7npuCrN+Ic3TyjTjJlzHa0qlK3oEO6VAYPWwFeutx/GmpljIyB6uNSl/UTASyc2w4FgVuA/QMMf9OdsCw==", - "dev": true, - "bin": { - "bats": "bin/bats" - } - }, - "node_modules/bats-assert": { - "version": "0.3.0", - "resolved": "git+ssh://git@github.com/ztombol/bats-assert.git#9f88b4207da750093baabc4e3f41bf68f0dd3630", - "dev": true, - "peerDependencies": { - "bats-support": "git+https://github.com/ztombol/bats-support.git#v0.2.0" - } - }, - "node_modules/bats-support": { - "version": "0.3.0", - "resolved": "git+ssh://git@github.com/ztombol/bats-support.git#004e707638eedd62e0481e8cdc9223ad471f12ee", - "dev": true - } - } -} diff --git a/test/bats/package.json b/test/bats/package.json deleted file mode 100644 index b9397406f..000000000 --- a/test/bats/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "private": true, - "scripts": { - "deploy": "bats -r -T -t ./contract/deploy.bats", - "accounts": "bats -r -T -t ./contract/accounts.bats", - "common": "bats -r -T -t ./cli/common.bats", - "init": "bats -r -T -t ./cli/init.bats" - }, - "devDependencies": { - "bats": "^1.10.0", - "bats-assert": "github:ztombol/bats-assert", - "bats-support": "github:ztombol/bats-support" - } -} diff --git a/test/bats/tests/tests.bats b/test/bats/tests/tests.bats deleted file mode 100644 index 8a18b227a..000000000 --- a/test/bats/tests/tests.bats +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bats - -load '../node_modules/bats-support/load' -load '../node_modules/bats-assert/load' - -@test "${EXE} -h" { - run ${EXE} -h - assert_success -} diff --git a/test/vscode-ui/justfile b/test/vscode-ui/justfile index e951e2399..78077fa53 100644 --- a/test/vscode-ui/justfile +++ b/test/vscode-ui/justfile @@ -50,7 +50,7 @@ install: npm install -# Executes commands via `npm`. Equivalent to `npm run`. Provides arbitrary command chaining inside of Docker from project root (i.e., `just bats run test`) +# Executes commands via `npm`. Equivalent to `npm run`. Provides arbitrary command chaining inside of Docker from project root run *args: #!/usr/bin/env bash set -eou pipefail