From 1e371383deb49d346f43413349e6ab7e82023fdf Mon Sep 17 00:00:00 2001 From: Mason Malone Date: Wed, 20 Oct 2021 19:14:07 -0700 Subject: [PATCH] Initial work adding back BATS --- .github/workflows/build-test.yml | 27 ++++++++----------------- .gitmodules | 3 +++ test/bats | 1 + test/docker-image.bats | 34 ++++++++++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 19 deletions(-) create mode 100644 .gitmodules create mode 160000 test/bats create mode 100644 test/docker-image.bats diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 98a693b116..25d9783ef7 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -55,6 +55,9 @@ jobs: strategy: fail-fast: false matrix: ${{ fromJson(needs.gen-matrix.outputs.matrix) }} + env: + NODE_VERSION: ${{ matrix.version }} + IMAGE_TAG: node:${{ matrix.version }}-${{ matrix.variant }} steps: - name: Get short node version @@ -66,6 +69,8 @@ jobs: - name: Checkout uses: actions/checkout@v2 + with: + submodules: true - name: Build image uses: docker/build-push-action@v2 @@ -74,23 +79,7 @@ jobs: load: true context: . file: ./${{ steps.short-version.outputs.result }}/${{ matrix.variant }}/Dockerfile - tags: node:${{ matrix.version }}-${{ matrix.variant }} - - - name: Test for node version - run: | - image_node_version=$(docker run --rm node:${{ matrix.version }}-${{ matrix.variant }} node --print "process.versions.node") - echo "Expected: \"${{ matrix.version }}\", Got: \"${image_node_version}\"" - [ "${image_node_version}" == "${{ matrix.version }}" ] - - - name: Verify entrypoint runs regular, non-executable files with node - run: | - tmp_file=$(mktemp) - echo 'console.log("success")' > "${tmp_file}" - output=$(docker run --rm -v "${tmp_file}:/app/index.js" node:${{ matrix.version }}-${{ matrix.variant }} app/index.js) - [ "${output}" = 'success' ] - - - name: Test for npm - run: docker run --rm node:${{ matrix.version }}-${{ matrix.variant }} npm --version + tags: ${{ env.IMAGE_TAG }} - - name: Test for yarn - run: docker run --rm node:${{ matrix.version }}-${{ matrix.variant }} yarn --version + - name: Run tests with BATS + run: test/bats/bin/bats --verbose-run test/docker-image.bats diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..bc61e07bb9 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "test/bats"] + path = test/bats + url = https://github.com/bats-core/bats-core.git diff --git a/test/bats b/test/bats new file mode 160000 index 0000000000..01636e489b --- /dev/null +++ b/test/bats @@ -0,0 +1 @@ +Subproject commit 01636e489bb9b9d6c430465e6f8409422e63d3fa diff --git a/test/docker-image.bats b/test/docker-image.bats new file mode 100644 index 0000000000..98737a8eff --- /dev/null +++ b/test/docker-image.bats @@ -0,0 +1,34 @@ +setup() { + tmp_file=$(mktemp) + echo 'console.log("success")' > "${tmp_file}" +} + +@test "Test for node version" { + run docker run --rm "${IMAGE_TAG}" node --print "process.versions.node" + [ "$output" = "${NODE_VERSION}" ] +} + +@test "Test for node version, without directly invoking node" { + run docker run --rm "${IMAGE_TAG}" --print "process.versions.node" + [ "$output" = "${NODE_VERSION}" ] +} + +@test "Test for npm" { + run docker run --rm "${IMAGE_TAG}" npm --version + [ -n "$output" ] +} + +@test "Test for yarn" { + run docker run --rm "${IMAGE_TAG}" yarn --version + [ -n "$output" ] +} + +@test "Verify entrypoint runs regular, non-executable file with node" { + run docker run --rm -v "${tmp_file}:/index.js" "${IMAGE_TAG}" index.js + [ "$output" = 'success' ] +} + +@test "Verify entrypoint runs regular, non-executable file inside subdirectory with node" { + run docker run --rm -v "${tmp_file}:/app/index.js" "${IMAGE_TAG}" app/index.js + [ "$output" = 'success' ] +}