Skip to content

Commit

Permalink
Initial work adding back BATS
Browse files Browse the repository at this point in the history
  • Loading branch information
MasonM committed Oct 21, 2021
1 parent be42a31 commit 1e37138
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 19 deletions.
27 changes: 8 additions & 19 deletions .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -66,6 +69,8 @@ jobs:

- name: Checkout
uses: actions/checkout@v2
with:
submodules: true

- name: Build image
uses: docker/build-push-action@v2
Expand All @@ -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
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "test/bats"]
path = test/bats
url = https://github.com/bats-core/bats-core.git
1 change: 1 addition & 0 deletions test/bats
Submodule bats added at 01636e
34 changes: 34 additions & 0 deletions test/docker-image.bats
Original file line number Diff line number Diff line change
@@ -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' ]
}

0 comments on commit 1e37138

Please sign in to comment.