diff --git a/.github/workflows/ci-bats-windows.yaml b/.github/workflows/ci-bats-windows.yaml index d196f0363f..5203a7f5ab 100644 --- a/.github/workflows/ci-bats-windows.yaml +++ b/.github/workflows/ci-bats-windows.yaml @@ -5,14 +5,63 @@ on: branches: [ master ] jobs: - test-bats-head: - name: Bats tests part 1 + get-files: + name: Get File list + runs-on: ubuntu-18.04 + outputs: + files: ${{ steps.get_file_list.outputs.files }} + steps: + - uses: actions/checkout@v2 + - name: Get file list + id: get_file_list + run: | + files=$(ls *.bats) + + SAVEIFS=$IFS + IFS=$'\n' + + file_arr=($files) + echo "::set-output name=files::${file_arr[@]}" + + IFS=$SAVEIFS + working-directory: ./integration-tests/bats + format-files-output: + name: Format files output + runs-on: ubuntu-18.04 + needs: get-files + outputs: + files: ${{ steps.format_files.outputs.files }} + steps: + - name: Format + id: format_files + uses: actions/github-script@v4 + 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: | @@ -77,125 +126,8 @@ jobs: run: | dolt config --global --add user.name 'Dolthub Actions' dolt config --global --add user.email 'actions@dolthub.com' - - name: Test Bats Head - run: | - files=$(ls *.bats | sort | head -40) - - SAVEIFS=$IFS - IFS=$'\n' - - file_arr=($files) - - IFS=$SAVEIFS - - file_list= - for (( i=0; i<${#file_arr[@]}; i++ )) - do - echo "Testing file: ${file_arr[$i]}" - bats --tap "${file_arr[$i]}" - succeeded=$(echo "$?") - if [ "$succeeded" -ne 0 ]; then - echo "Test failed in ${file_arr[$i]}" - exit 1; - fi - done - working-directory: ./integration-tests/bats - env: - IS_WINDOWS: true - WINDOWS_BASE_DIR: "/d/a" - test-bats-tail: - name: Bats tests part 2 - defaults: - run: - shell: bash - runs-on: windows-2019 - env: - use_credentials: ${{ secrets.AWS_SECRET_ACCESS_KEY != '' && secrets.AWS_ACCESS_KEY_ID != '' }} - 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@v1 - 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 - - name: Setup Go 1.x - uses: actions/setup-go@v2 - with: - go-version: ^1.15 - id: go - - name: Setup Python 3.x - uses: actions/setup-python@v2 - with: - python-version: ^3.6 - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: ^12 - - name: Create CI Bin - run: | - mkdir -p ./.ci_bin - echo "$(pwd)/.ci_bin" >> $GITHUB_PATH - - name: Install Bats - 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 Doltpy - run: | - pip install doltpy - - name: Install Dolt - working-directory: ./go - run: | - go build -mod=readonly -o ../.ci_bin/dolt ./cmd/dolt/. - go build -mod=readonly -o ../.ci_bin/git-dolt ./cmd/git-dolt/. - go build -mod=readonly -o ../.ci_bin/git-dolt-smudge ./cmd/git-dolt-smudge/. - go build -mod=readonly -o ../.ci_bin/remotesrv ./utils/remotesrv/. - - name: Setup Dolt Config - run: | - dolt config --global --add user.name 'Dolthub Actions' - dolt config --global --add user.email 'actions@dolthub.com' - - name: Test Bats Head - run: | - files=$(ls *.bats | sort | tail +41) - - SAVEIFS=$IFS - IFS=$'\n' - - file_arr=($files) - - IFS=$SAVEIFS - - file_list= - for (( i=0; i<${#file_arr[@]}; i++ )) - do - echo "Testing file: ${file_arr[$i]}" - bats --tap "${file_arr[$i]}" - succeeded=$(echo "$?") - if [ "$succeeded" -ne 0 ]; then - echo "Test failed in ${file_arr[$i]}" - exit 1; - fi - done + - name: Test file + run: bats --tap ${{ matrix.file }} working-directory: ./integration-tests/bats env: IS_WINDOWS: true