bats-windows #5436
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
name: Test Bats Windows | |
on: | |
workflow_dispatch: | |
inputs: | |
email: | |
description: 'Email address to receive bats failure notification' | |
required: true | |
default: '' | |
repository_dispatch: | |
types: [ bats-windows ] | |
jobs: | |
get-files: | |
name: Get file list | |
runs-on: ubuntu-22.04 | |
outputs: | |
files: ${{ steps.get_file_list.outputs.files }} | |
steps: | |
- uses: actions/checkout@v4 | |
if: ${{ github.event_name == 'repository_dispatch' }} | |
with: | |
ref: ${{ github.event.client_payload.ref }} | |
- uses: actions/checkout@v4 | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
- name: Get file list | |
id: get_file_list | |
run: | | |
files=$(ls *.bats) | |
SAVEIFS=$IFS | |
IFS=$'\n' | |
file_arr=($files) | |
echo "files=${file_arr[@]}" >> $GITHUB_OUTPUT | |
IFS=$SAVEIFS | |
working-directory: ./integration-tests/bats | |
format-files-output: | |
name: Format files output | |
runs-on: ubuntu-22.04 | |
needs: get-files | |
outputs: | |
files: ${{ steps.format_files.outputs.files }} | |
steps: | |
- name: Format | |
id: format_files | |
uses: actions/github-script@v7 | |
env: | |
FILES: ${{ needs.get-files.outputs.files }} | |
with: | |
debug: true | |
github-token: ${{ secrets.REPO_ACCESS_TOKEN || secrets.GITHUB_TOKEN }} | |
script: | | |
try { | |
const { FILES } = process.env; | |
const fileList = FILES.split(" "); | |
core.setOutput("files", JSON.stringify(fileList)); | |
process.exit(0); | |
} catch(err) { | |
console.log("Error:", err); | |
process.exit(1); | |
} | |
test-per-file: | |
name: Test file | |
needs: format-files-output | |
defaults: | |
run: | |
shell: bash | |
runs-on: windows-2019 | |
env: | |
use_credentials: ${{ secrets.AWS_SECRET_ACCESS_KEY != '' && secrets.AWS_ACCESS_KEY_ID != '' }} | |
strategy: | |
matrix: | |
file: ${{ fromJson(needs.format-files-output.outputs.files) }} | |
steps: | |
- name: Conditionally Set ENV VARS for AWS tests | |
run: | | |
if [[ $use_credentials == true ]]; then | |
echo "AWS_SDK_LOAD_CONFIG=1" >> $GITHUB_ENV | |
echo "AWS_REGION=us-west-2" >> $GITHUB_ENV | |
echo "DOLT_BATS_AWS_TABLE=dolt-ci-bats-manifests-us-west-2" >> $GITHUB_ENV | |
echo "DOLT_BATS_AWS_BUCKET=dolt-ci-bats-chunks-us-west-2" >> $GITHUB_ENV | |
echo "DOLT_BATS_AWS_EXISTING_REPO=aws_remote_bats_tests" >> $GITHUB_ENV | |
fi | |
- name: Configure AWS Credentials | |
if: ${{ env.use_credentials == 'true' }} | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws-region: us-west-2 | |
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | |
role-duration-seconds: 3600 | |
- uses: actions/checkout@v4 | |
if: ${{ github.event_name == 'repository_dispatch' }} | |
with: | |
ref: ${{ github.event.client_payload.ref }} | |
- name: Setup Go 1.x | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: go/go.mod | |
id: go | |
- name: Setup Python 3.x | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
- uses: actions/checkout@v4 | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: ^16 | |
- name: Create CI Bin | |
run: | | |
mkdir -p ./.ci_bin | |
echo "$(pwd)/.ci_bin" >> $GITHUB_PATH | |
- name: Install Bats Windows | |
run: | | |
git clone https://github.com/bats-core/bats-core.git | |
cd bats-core | |
./install.sh $HOME | |
working-directory: ./.ci_bin | |
- name: Install wslpath | |
run: | | |
choco install wget | |
wget 'https://raw.githubusercontent.com/laurent22/wslpath/master/wslpath' | |
chmod 755 wslpath | |
mv wslpath /usr/bin/ | |
cp /c/tools/php/php /usr/bin/ | |
- name: Install Python Deps | |
run: | | |
pip install mysql-connector-python | |
pip install pandas | |
pip install pyarrow | |
- name: Install Dolt | |
working-directory: ./go | |
run: | | |
go build -mod=readonly -o ../.ci_bin/dolt ./cmd/dolt/. | |
go build -mod=readonly -o ../.ci_bin/remotesrv ./utils/remotesrv/. | |
go build -mod=readonly -o ../.ci_bin/noms ./store/cmd/noms/. | |
- name: Setup Dolt Config | |
run: | | |
dolt config --global --add user.name 'Dolthub Actions' | |
dolt config --global --add user.email 'actions@dolthub.com' | |
- name: Test file | |
run: bats --tap ${{ matrix.file }} | |
working-directory: ./integration-tests/bats | |
env: | |
IS_WINDOWS: true | |
WINDOWS_BASE_DIR: "/d/a" | |
BATS_TEST_RETRIES: "3" | |
report-bats-failure: | |
name: Report Bats Windows Failure via Email | |
needs: test-per-file | |
runs-on: ubuntu-22.04 | |
if: always() && (needs.test-per-file.result == 'failure') | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws-region: us-west-2 | |
- name: Send Email | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
uses: ./.github/actions/ses-email-action | |
with: | |
region: us-west-2 | |
version: ${{ github.ref }} | |
template: 'BatsWindowsFailureTemplate' | |
toAddresses: '["${{ github.event.inputs.email }}"]' | |
workflowURL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
- name: Send Email | |
if: ${{ github.event_name == 'repository_dispatch' }} | |
uses: ./.github/actions/ses-email-action | |
with: | |
region: us-west-2 | |
version: ${{ github.event.client_payload.ref }} | |
template: 'BatsWindowsFailureTemplate' | |
toAddresses: '["${{ github.event.client_payload.actor_email }}", "tim@dolthub.com"]' | |
workflowURL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} |