diff --git a/.gitattributes b/.gitattributes index 106c004..83a470f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -15,3 +15,4 @@ * text=auto /gradlew eol=lf /gradlew.bat eol=crlf +*.sh eol=lf diff --git a/.github/workflows/check-action-typing.yaml b/.github/workflows/check-action-typing.yaml deleted file mode 100644 index 34ae96c..0000000 --- a/.github/workflows/check-action-typing.yaml +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright 2020-2024 Björn Kautler -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# This file was generated using Kotlin DSL (.github/workflows/check-action-typing.main.kts). -# If you want to modify the workflow, please change the Kotlin file and regenerate this YAML file. -# Generated with https://github.com/typesafegithub/github-workflows-kt - -name: 'Check Action Typing' -on: - push: {} - pull_request: {} -jobs: - check_yaml_consistency: - name: 'Check YAML consistency' - runs-on: 'ubuntu-latest' - steps: - - id: 'step-0' - name: 'Check out' - uses: 'actions/checkout@v4' - - id: 'step-1' - name: 'Execute script' - run: 'rm ''.github/workflows/check-action-typing.yaml'' && ''.github/workflows/check-action-typing.main.kts''' - - id: 'step-2' - name: 'Consistency check' - run: 'git diff --exit-code ''.github/workflows/check-action-typing.yaml''' - check_action_typing: - name: 'Check Action Typing' - runs-on: 'ubuntu-latest' - needs: - - 'check_yaml_consistency' - steps: - - id: 'step-0' - name: 'Configure Git' - run: 'git config --global core.autocrlf input' - - id: 'step-1' - name: 'Checkout' - uses: 'actions/checkout@v4' - - id: 'step-2' - name: 'Check Action Typing' - uses: 'typesafegithub/github-actions-typing@v1' diff --git a/.github/workflows/check-dependency-versions.yaml b/.github/workflows/check-dependency-versions.yaml deleted file mode 100644 index 081ed42..0000000 --- a/.github/workflows/check-dependency-versions.yaml +++ /dev/null @@ -1,63 +0,0 @@ -# Copyright 2020-2024 Björn Kautler -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# This file was generated using Kotlin DSL (.github/workflows/check-dependency-versions.main.kts). -# If you want to modify the workflow, please change the Kotlin file and regenerate this YAML file. -# Generated with https://github.com/typesafegithub/github-workflows-kt - -name: 'Check Dependency Versions' -on: - schedule: - - cron: '0 0 * * FRI' -jobs: - check_yaml_consistency: - name: 'Check YAML consistency' - runs-on: 'ubuntu-latest' - steps: - - id: 'step-0' - name: 'Check out' - uses: 'actions/checkout@v4' - - id: 'step-1' - name: 'Execute script' - run: 'rm ''.github/workflows/check-dependency-versions.yaml'' && ''.github/workflows/check-dependency-versions.main.kts''' - - id: 'step-2' - name: 'Consistency check' - run: 'git diff --exit-code ''.github/workflows/check-dependency-versions.yaml''' - check_dependency_versions: - name: 'Check Dependency Versions' - runs-on: 'windows-latest' - needs: - - 'check_yaml_consistency' - steps: - - id: 'step-0' - name: 'Configure Git' - run: 'git config --global core.autocrlf input' - - id: 'step-1' - name: 'Checkout' - uses: 'actions/checkout@v4' - - id: 'step-2' - name: 'Setup Java 11' - uses: 'actions/setup-java@v4' - with: - java-version: '11' - distribution: 'temurin' - - id: 'step-3' - name: 'Check Dependency Versions' - uses: 'burrunan/gradle-cache-action@v1' - with: - debug: 'false' - concurrent: 'true' - arguments: |- - --show-version - dependencyUpdates diff --git a/.github/workflows/foo.yaml b/.github/workflows/foo.yaml new file mode 100644 index 0000000..791110a --- /dev/null +++ b/.github/workflows/foo.yaml @@ -0,0 +1,16 @@ +name: 'Validate Gradle Wrapper' +on: 'push' +jobs: + test-windows-wsl-x64: + runs-on: windows-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4.2.1 + - name: Setup WSL + uses: Vampire/setup-wsl@v3.1.3 + with: + distribution: Ubuntu-22.04 + - shell: wsl-bash {0} + run: | + cd "/mnt/$(echo "${{ github.workspace }}" | tr -d ':' | tr '\\' '/' | tr '[:upper:]' '[:lower:]')" + ./test.sh diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml deleted file mode 100644 index 20b1c13..0000000 --- a/.github/workflows/test.yaml +++ /dev/null @@ -1,1748 +0,0 @@ -# Copyright 2020-2024 Björn Kautler -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# This file was generated using Kotlin DSL (.github/workflows/test.main.kts). -# If you want to modify the workflow, please change the Kotlin file and regenerate this YAML file. -# Generated with https://github.com/typesafegithub/github-workflows-kt - -name: 'Build and Test' -on: - push: {} - pull_request: {} - schedule: - - cron: '0 0 * * *' -jobs: - check_yaml_consistency: - name: 'Check YAML consistency' - runs-on: 'ubuntu-latest' - steps: - - id: 'step-0' - name: 'Check out' - uses: 'actions/checkout@v4' - - id: 'step-1' - name: 'Execute script' - run: 'rm ''.github/workflows/test.yaml'' && ''.github/workflows/test.main.kts''' - - id: 'step-2' - name: 'Consistency check' - run: 'git diff --exit-code ''.github/workflows/test.yaml''' - build: - name: 'Build' - runs-on: 'windows-latest' - needs: - - 'check_yaml_consistency' - steps: - - id: 'step-0' - name: 'Configure Git' - run: 'git config --global core.autocrlf input' - - id: 'step-1' - name: 'Checkout' - uses: 'actions/checkout@v4' - - id: 'step-2' - name: 'Setup Java 11' - uses: 'actions/setup-java@v4' - with: - java-version: '11' - distribution: 'temurin' - - id: 'step-3' - name: 'Build' - uses: 'burrunan/gradle-cache-action@v1' - with: - debug: 'false' - concurrent: 'true' - arguments: |- - --show-version - build - --info - --stacktrace - --scan - - id: 'step-4' - name: 'Save built artifacts to cache' - uses: 'actions/cache/save@v4' - with: - path: |- - action.yml - build/distributions/ - key: '${{ github.run_id }}' - test_invalid_distribution: - name: 'Test "${{ matrix.distribution.label }}" distribution on ${{ matrix.environment }}' - runs-on: '${{ matrix.environment }}' - needs: - - 'build' - - 'check_yaml_consistency' - strategy: - fail-fast: false - matrix: - environment: - - 'windows-2019' - - 'windows-2022' - - 'windows-latest' - distribution: - - user-id: 'invalid' - label: 'invalid' - - user-id: '' - label: '' - - user-id: null - label: 'null' - steps: - - id: 'step-0' - name: 'Restore built artifacts from cache' - uses: 'actions/cache/restore@v4' - with: - path: |- - action.yml - build/distributions/ - key: '${{ github.run_id }}' - fail-on-cache-miss: 'true' - - id: 'step-1' - name: 'Execute action' - continue-on-error: true - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - - id: 'step-2' - name: 'Test - action should fail if an invalid distribution is given' - shell: 'cmd' - run: 'if ''${{ steps.step-1.outcome }}'' NEQ ''failure'' exit 1' - test_default_distribution: - name: 'Test default distribution on ${{ matrix.environment }}' - runs-on: '${{ matrix.environment }}' - needs: - - 'build' - - 'check_yaml_consistency' - strategy: - fail-fast: false - matrix: - environment: - - 'windows-2019' - - 'windows-2022' - - 'windows-latest' - distribution: - - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - steps: - - id: 'step-0' - name: 'Restore built artifacts from cache' - uses: 'actions/cache/restore@v4' - with: - path: |- - action.yml - build/distributions/ - key: '${{ github.run_id }}' - fail-on-cache-miss: 'true' - - id: 'step-1' - name: 'Execute action' - uses: './' - with: - update: 'true' - - id: 'step-2' - name: 'Test - wsl-bash should be available as custom shell' - shell: 'wsl-bash {0}' - run: ':' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-3' - name: 'Test - wsl-bash should fail if the script fails (provocation)' - continue-on-error: true - shell: 'wsl-bash {0}' - run: 'false' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-4' - name: 'Test - wsl-bash should fail if the script fails (verification)' - shell: 'cmd' - run: 'IF ''${{ steps.step-3.outcome }}'' NEQ ''failure'' EXIT /B 1' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-5' - name: 'Test - wsl-bash should fail if one of the commands fails (provocation)' - continue-on-error: true - shell: 'wsl-bash {0}' - run: |- - false - : - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-6' - name: 'Test - wsl-bash should fail if one of the commands fails (verification)' - shell: 'wsl-bash {0}' - run: '[ ''${{ steps.step-5.outcome }}'' == ''failure'' ] || exit 1' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-7' - name: 'Test - wsl-bash should fail if an undefined variable is used (provocation)' - continue-on-error: true - shell: 'wsl-bash {0}' - run: '$foo' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-8' - name: 'Test - wsl-bash should fail if an undefined variable is used (verification)' - shell: 'wsl-bash {0}' - run: '[ ''${{ steps.step-7.outcome }}'' == ''failure'' ]' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-9' - name: 'Test - wsl-bash should fail if any command in a pipe fails (provocation)' - continue-on-error: true - shell: 'wsl-bash {0}' - run: 'false | true' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-10' - name: 'Test - wsl-bash should fail if any command in a pipe fails (verification)' - shell: 'wsl-bash {0}' - run: '[ ''${{ steps.step-9.outcome }}'' == ''failure'' ]' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-11' - name: 'Test - the default distribution should be correct' - shell: 'wsl-bash {0}' - run: |- - cat <(wsl.exe --list || true) <(wsl.exe --list || true | iconv -f UTF-16LE -t UTF-8) <(wslconfig.exe /list || true) <(wslconfig.exe /list || true | iconv -f UTF-16LE -t UTF-8) - [[ "$(cat <(wsl.exe --list || true) <(wsl.exe --list || true | iconv -f UTF-16LE -t UTF-8) <(wslconfig.exe /list || true) <(wslconfig.exe /list || true | iconv -f UTF-16LE -t UTF-8))" == *${{ matrix.distribution.wsl-id }}\ \(Default\)* ]] - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-12' - name: 'Test - wsl-bash should use the correct distribution' - shell: 'wsl-bash {0}' - run: |- - cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true) - [[ "$(cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true))" == ${{ matrix.distribution.match-pattern }} ]] - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-13' - name: 'Test - multi-line commands should not be disturbed by CRLF line endings' - shell: 'wsl-bash {0}' - run: |- - : # this comment catches the CR if present - ! grep -q $'\r' "$0" # this comment catches the CR if present - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-14' - name: 'Test - wsl-bash should fail if no script file is given (provocation)' - continue-on-error: true - shell: 'wsl-bash' - run: ':' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-15' - name: 'Test - wsl-bash should fail if no script file is given (verification)' - shell: 'wsl-bash {0}' - run: '[ ''${{ steps.step-14.outcome }}'' == ''failure'' ]' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-16' - name: 'Test - wsl-bash should fail if more than one parameter is given and first is not -u (provocation)' - continue-on-error: true - shell: 'wsl-bash user {0}' - run: ':' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-17' - name: 'Test - wsl-bash should fail if more than one parameter is given and first is not -u (verification)' - shell: 'wsl-bash {0}' - run: '[ ''${{ steps.step-16.outcome }}'' == ''failure'' ]' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-18' - name: 'Test - wsl-bash should fail if only user is given (provocation)' - continue-on-error: true - shell: 'wsl-bash -u {0}' - run: ':' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-19' - name: 'Test - wsl-bash should fail if only user is given (verification)' - shell: 'wsl-bash {0}' - run: '[ ''${{ steps.step-18.outcome }}'' == ''failure'' ]' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-20' - name: 'Test - wsl-bash should fail if excess argument is given (provocation)' - continue-on-error: true - shell: 'wsl-bash -u user {0} foo' - run: ':' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-21' - name: 'Test - wsl-bash should fail if excess argument is given (verification)' - shell: 'wsl-bash {0}' - run: '[ ''${{ steps.step-20.outcome }}'' == ''failure'' ]' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-22' - name: 'Test - wsl-bash should fail if given script file does not exist (provocation)' - continue-on-error: true - shell: 'wsl-bash -u user {0}foo' - run: ':' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-23' - name: 'Test - wsl-bash should fail if given script file does not exist (verification)' - shell: 'wsl-bash {0}' - run: '[ ''${{ steps.step-22.outcome }}'' == ''failure'' ]' - if: |- - always() - && (steps.step-1.outcome == 'success') - test: - name: 'Test "${{ matrix.distribution.user-id }}" distribution on ${{ matrix.environment }}' - runs-on: '${{ matrix.environment }}' - needs: - - 'build' - - 'check_yaml_consistency' - strategy: - fail-fast: false - matrix: - environment: - - 'windows-2019' - - 'windows-2022' - - 'windows-latest' - distribution: - - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Alpine' - user-id: 'Alpine' - match-pattern: '*Alpine*' - default-absent-tool: 'dos2unix' - - wsl-id: 'kali-linux' - user-id: 'kali-linux' - match-pattern: '*Kali*' - default-absent-tool: 'dos2unix' - - wsl-id: 'openSUSE-Leap-15.2' - user-id: 'openSUSE-Leap-15.2' - match-pattern: '*openSUSE*Leap*15.2*' - default-absent-tool: 'which' - - wsl-id: 'Ubuntu-24.04' - user-id: 'Ubuntu-24.04' - match-pattern: '*Ubuntu*24.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-22.04' - match-pattern: '*Ubuntu*22.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-20.04' - match-pattern: '*Ubuntu*20.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu-18.04' - user-id: 'Ubuntu-18.04' - match-pattern: '*Ubuntu*18.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu-16.04' - user-id: 'Ubuntu-16.04' - match-pattern: '*Ubuntu*16.04*' - default-absent-tool: 'dos2unix' - steps: - - id: 'step-0' - name: 'Restore built artifacts from cache' - uses: 'actions/cache/restore@v4' - with: - path: |- - action.yml - build/distributions/ - key: '${{ github.run_id }}' - fail-on-cache-miss: 'true' - - id: 'step-1' - name: 'Execute action' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - use-cache: 'false' - - id: 'step-2' - name: 'Test - wsl-bash should fail if bash is not present by default (provocation)' - continue-on-error: true - shell: 'wsl-bash {0}' - run: ':' - if: |- - always() - && (steps.step-1.outcome == 'success') - && (matrix.distribution.user-id == 'Alpine') - - id: 'step-3' - name: 'Test - wsl-bash should fail if bash is not present by default (verification)' - run: 'wsl sh -euc "[ ''${{ steps.step-2.outcome }}'' = ''failure'' ]"' - if: |- - always() - && (steps.step-1.outcome == 'success') - && (matrix.distribution.user-id == 'Alpine') - - id: 'step-4' - name: 'Delete wsl-bash' - shell: 'cmd' - run: 'DEL /F "${{ steps.step-1.outputs.wsl-shell-wrapper-path }}"' - if: |- - always() - && (steps.step-1.outcome == 'success') - && (matrix.distribution.user-id == 'Alpine') - - id: 'step-5' - name: 'Install Bash on Alpine' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - additional-packages: 'bash' - if: |- - always() - && (steps.step-1.outcome == 'success') - && (matrix.distribution.user-id == 'Alpine') - - id: 'step-6' - name: 'Test - wsl-bash should be available as custom shell' - shell: 'wsl-bash {0}' - run: ':' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-7' - name: 'Test - wsl-bash should fail if the script fails (provocation)' - continue-on-error: true - shell: 'wsl-bash {0}' - run: 'false' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-8' - name: 'Test - wsl-bash should fail if the script fails (verification)' - shell: 'cmd' - run: 'IF ''${{ steps.step-7.outcome }}'' NEQ ''failure'' EXIT /B 1' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-9' - name: 'Test - wsl-bash should fail if one of the commands fails (provocation)' - continue-on-error: true - shell: 'wsl-bash {0}' - run: |- - false - : - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-10' - name: 'Test - wsl-bash should fail if one of the commands fails (verification)' - shell: 'wsl-bash {0}' - run: '[ ''${{ steps.step-9.outcome }}'' == ''failure'' ] || exit 1' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-11' - name: 'Test - wsl-bash should fail if an undefined variable is used (provocation)' - continue-on-error: true - shell: 'wsl-bash {0}' - run: '$foo' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-12' - name: 'Test - wsl-bash should fail if an undefined variable is used (verification)' - shell: 'wsl-bash {0}' - run: '[ ''${{ steps.step-11.outcome }}'' == ''failure'' ]' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-13' - name: 'Test - wsl-bash should fail if any command in a pipe fails (provocation)' - continue-on-error: true - shell: 'wsl-bash {0}' - run: 'false | true' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-14' - name: 'Test - wsl-bash should fail if any command in a pipe fails (verification)' - shell: 'wsl-bash {0}' - run: '[ ''${{ steps.step-13.outcome }}'' == ''failure'' ]' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-15' - name: 'Test - the default distribution should be correct' - shell: 'wsl-bash {0}' - run: |- - cat <(wsl.exe --list || true) <(wsl.exe --list || true | iconv -f UTF-16LE -t UTF-8) <(wslconfig.exe /list || true) <(wslconfig.exe /list || true | iconv -f UTF-16LE -t UTF-8) - [[ "$(cat <(wsl.exe --list || true) <(wsl.exe --list || true | iconv -f UTF-16LE -t UTF-8) <(wslconfig.exe /list || true) <(wslconfig.exe /list || true | iconv -f UTF-16LE -t UTF-8))" == *${{ matrix.distribution.wsl-id }}\ \(Default\)* ]] - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-16' - name: 'Test - wsl-bash should use the correct distribution' - shell: 'wsl-bash {0}' - run: |- - cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true) - [[ "$(cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true))" == ${{ matrix.distribution.match-pattern }} ]] - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-17' - name: 'Test - multi-line commands should not be disturbed by CRLF line endings' - shell: 'wsl-bash {0}' - run: |- - : # this comment catches the CR if present - ! grep -q $'\r' "$0" # this comment catches the CR if present - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-18' - name: 'Test - ${{ matrix.distribution.default-absent-tool }} should not be installed by default (provocation)' - continue-on-error: true - shell: 'wsl-bash {0}' - run: '${{ matrix.distribution.default-absent-tool }} --version' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-19' - name: 'Test - ${{ matrix.distribution.default-absent-tool }} should not be installed by default (verification)' - shell: 'wsl-bash {0}' - run: '[ ''${{ steps.step-18.outcome }}'' == ''failure'' ]' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-20' - name: 'Test - bash should be installed by default' - shell: 'wsl-bash {0}' - run: 'bash -c true' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-21' - name: 'Test - sh should be installed by default' - shell: 'wsl-bash {0}' - run: 'sh -c true' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-22' - name: 'Test - wsl-sh should not be present (provocation)' - continue-on-error: true - shell: 'wsl-sh {0}' - run: ':' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-23' - name: 'Test - wsl-sh should not be present (verification)' - shell: 'wsl-bash {0}' - run: '[ ''${{ steps.step-22.outcome }}'' == ''failure'' ]' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-24' - name: 'Add wsl-sh wrapper' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - wsl-shell-command: 'sh -eu' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-25' - name: 'Test - wsl-sh should be present' - shell: 'wsl-sh {0}' - run: ':' - if: |- - always() - && (steps.step-24.outcome == 'success') - - id: 'step-26' - name: 'Test - wsl-bash should use bash' - shell: 'wsl-bash {0}' - run: |- - ps -o pid='' -o comm='' | grep "^\s\+$$\s\+" | grep -o '\S\+$' - [ "$(ps -o pid='' -o comm='' 2>/dev/null | grep "^\s\+$$\s\+" | grep -o '\S\+$')" == 'bash' ] - if: |- - always() - && (steps.step-24.outcome == 'success') - - id: 'step-27' - name: 'Test - wsl-sh should use sh' - shell: 'wsl-sh {0}' - run: |- - ps -o pid='' -o comm='' | grep "^\s\+$$\s\+" | grep -o '\S\+$' - [ "$(ps -o pid='' -o comm='' 2>/dev/null | grep "^\s\+$$\s\+" | grep -o '\S\+$')" = 'sh' ] - if: |- - always() - && (steps.step-24.outcome == 'success') - - id: 'step-28' - name: 'Delete wsl-bash' - shell: 'cmd' - run: 'DEL /F "${{ steps.step-1.outputs.wsl-shell-wrapper-path }}"' - if: |- - always() - && (steps.step-24.outcome == 'success') - - id: 'step-29' - name: 'Test - wsl-bash should not be present (provocation)' - continue-on-error: true - shell: 'wsl-bash {0}' - run: ':' - if: |- - always() - && (steps.step-24.outcome == 'success') - - id: 'step-30' - name: 'Test - wsl-bash should not be present (verification)' - shell: 'wsl-sh {0}' - run: '[ ''${{ steps.step-29.outcome }}'' = ''failure'' ]' - if: |- - always() - && (steps.step-24.outcome == 'success') - - id: 'step-31' - name: 'Re-add wsl-bash wrapper' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - if: |- - always() - && (steps.step-24.outcome == 'success') - - id: 'step-32' - name: 'Test - wsl-bash should be present' - shell: 'wsl-bash {0}' - run: ':' - if: |- - always() - && (steps.step-31.outcome == 'success') - - id: 'step-33' - name: 'Test - wsl-bash should use bash' - shell: 'wsl-bash {0}' - run: |- - ps -o pid='' -o comm='' | grep "^\s\+$$\s\+" | grep -o '\S\+$' - [ "$(ps -o pid='' -o comm='' 2>/dev/null | grep "^\s\+$$\s\+" | grep -o '\S\+$')" == 'bash' ] - if: |- - always() - && (steps.step-31.outcome == 'success') - - id: 'step-34' - name: 'Test - wsl-bash should use root as default user' - shell: 'wsl-bash {0}' - run: |- - whoami - [ "$(whoami)" == 'root' ] - if: |- - always() - && (steps.step-31.outcome == 'success') - - id: 'step-35' - name: 'Add user test' - shell: 'wsl-bash {0}' - run: 'useradd -m -p 4qBD5NWD3IkbU test' - if: |- - always() - && (steps.step-31.outcome == 'success') - - id: 'step-36' - name: 'Set wsl-bash wrapper to use user test by default' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - additional-packages: 'sudo' - wsl-shell-command: 'bash -c "sudo -u test bash --noprofile --norc -euo pipefail "\' - if: |- - always() - && (steps.step-31.outcome == 'success') - && (matrix.distribution.user-id != 'kali-linux') - - id: 'step-37' - name: 'Test - wsl-bash should use test as default user' - shell: 'wsl-bash {0}' - run: |- - whoami - [ "$(whoami)" == 'test' ] - if: |- - always() - && (steps.step-36.outcome == 'success') - && (matrix.distribution.user-id != 'kali-linux') - - id: 'step-38' - name: 'Set wsl-bash wrapper to use user test by default with inline script usage' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - wsl-shell-command: 'bash -c "sudo -u test bash --noprofile --norc -euo pipefail ''{0}''"' - if: |- - always() - && (steps.step-36.outcome == 'success') - && (matrix.distribution.user-id != 'kali-linux') - - id: 'step-39' - name: 'Test - wsl-bash should use test as default user with inline script usage' - shell: 'wsl-bash {0}' - run: |- - whoami - [ "$(whoami)" == 'test' ] - if: |- - always() - && (steps.step-38.outcome == 'success') - - id: 'step-40' - name: 'Delete wsl-bash' - shell: 'cmd' - run: 'DEL /F "${{ steps.step-38.outputs.wsl-shell-wrapper-path }}"' - if: |- - always() - && (steps.step-38.outcome == 'success') - - id: 'step-41' - name: 'Set wsl-bash wrapper to use default user by default' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - if: |- - always() - && (steps.step-38.outcome == 'success') - - id: 'step-42' - name: 'Test - wsl-bash should use root as default user' - shell: 'wsl-bash {0}' - run: |- - whoami - [ "$(whoami)" == 'root' ] - if: |- - always() - && (steps.step-41.outcome == 'success') - - id: 'step-43' - name: 'Test - test user does already exist' - shell: 'wsl-bash {0}' - run: 'id -u test' - if: |- - always() - && (steps.step-41.outcome == 'success') - - id: 'step-44' - name: 'Delete wsl-bash' - shell: 'cmd' - run: 'DEL /F "${{ steps.step-41.outputs.wsl-shell-wrapper-path }}"' - if: |- - always() - && (steps.step-41.outcome == 'success') - - id: 'step-45' - name: 'Set wsl-bash wrapper to use existing user test by default with extra parameter' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - wsl-shell-user: 'test' - if: |- - always() - && (steps.step-41.outcome == 'success') - - id: 'step-46' - name: 'Test - wsl-bash should use existing user test as default user with extra parameter' - shell: 'wsl-bash {0}' - run: |- - whoami - [ "$(whoami)" == 'test' ] - if: |- - always() - && (steps.step-45.outcome == 'success') - - id: 'step-47' - name: 'Test - test2 user does not exist' - shell: 'wsl-bash {0}' - run: '! id -u test2' - if: |- - always() - && (steps.step-45.outcome == 'success') - - id: 'step-48' - name: 'Delete wsl-bash' - shell: 'cmd' - run: 'DEL /F "${{ steps.step-45.outputs.wsl-shell-wrapper-path }}"' - if: |- - always() - && (steps.step-45.outcome == 'success') - - id: 'step-49' - name: 'Set wsl-bash wrapper to use non-existing user test2 by default with extra parameter' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - wsl-shell-user: 'test2' - if: |- - always() - && (steps.step-45.outcome == 'success') - - id: 'step-50' - name: 'Test - wsl-bash should use auto-generated user test2 as default user' - shell: 'wsl-bash {0}' - run: |- - whoami - [ "$(whoami)" == 'test2' ] - if: |- - always() - && (steps.step-49.outcome == 'success') - - id: 'step-51' - name: 'Test - wsl-bash should use ad-hoc user test' - shell: 'wsl-bash -u test {0}' - run: |- - whoami - [ "$(whoami)" == 'test' ] - if: |- - always() - && (steps.step-49.outcome == 'success') - - id: 'step-52' - name: 'Test - wsl-bash should use ad-hoc user root' - shell: 'wsl-bash -u root {0}' - run: |- - whoami - [ "$(whoami)" == 'root' ] - if: |- - always() - && (steps.step-49.outcome == 'success') - - id: 'step-53' - name: 'Make a no-op execution of the action' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - if: |- - always() - && (steps.step-49.outcome == 'success') - - id: 'step-54' - name: 'Test - wsl-bash should still use test2 as default user' - shell: 'wsl-bash {0}' - run: |- - whoami - [ "$(whoami)" == 'test2' ] - if: |- - always() - && (steps.step-53.outcome == 'success') - test_wsl-conf_on_initial_execution: - name: 'Test /etc/wsl.conf handling on initial execution for "${{ matrix.distribution.user-id }}" distribution on ${{ matrix.environment }}' - runs-on: '${{ matrix.environment }}' - needs: - - 'build' - - 'check_yaml_consistency' - strategy: - fail-fast: false - matrix: - environment: - - 'windows-2019' - - 'windows-2022' - - 'windows-latest' - distribution: - - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Alpine' - user-id: 'Alpine' - match-pattern: '*Alpine*' - default-absent-tool: 'dos2unix' - - wsl-id: 'kali-linux' - user-id: 'kali-linux' - match-pattern: '*Kali*' - default-absent-tool: 'dos2unix' - - wsl-id: 'openSUSE-Leap-15.2' - user-id: 'openSUSE-Leap-15.2' - match-pattern: '*openSUSE*Leap*15.2*' - default-absent-tool: 'which' - - wsl-id: 'Ubuntu-24.04' - user-id: 'Ubuntu-24.04' - match-pattern: '*Ubuntu*24.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-22.04' - match-pattern: '*Ubuntu*22.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-20.04' - match-pattern: '*Ubuntu*20.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu-18.04' - user-id: 'Ubuntu-18.04' - match-pattern: '*Ubuntu*18.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu-16.04' - user-id: 'Ubuntu-16.04' - match-pattern: '*Ubuntu*16.04*' - default-absent-tool: 'dos2unix' - steps: - - id: 'step-0' - name: 'Restore built artifacts from cache' - uses: 'actions/cache/restore@v4' - with: - path: |- - action.yml - build/distributions/ - key: '${{ github.run_id }}' - fail-on-cache-miss: 'true' - - id: 'step-1' - name: 'Execute action' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - wsl-conf: |- - [automount] - options = uid=1000 - - id: 'step-2' - name: 'Delete wsl-bash' - shell: 'cmd' - run: 'DEL /F "${{ steps.step-1.outputs.wsl-shell-wrapper-path }}"' - if: |- - always() - && (steps.step-1.outcome == 'success') - && (matrix.distribution.user-id == 'Alpine') - - id: 'step-3' - name: 'Install Bash on Alpine' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - additional-packages: 'bash' - if: |- - always() - && (steps.step-1.outcome == 'success') - && (matrix.distribution.user-id == 'Alpine') - - id: 'step-4' - name: 'Test - /etc/wsl.conf should exist' - shell: 'wsl-bash {0}' - run: |- - [ -f /etc/wsl.conf ] - cat /etc/wsl.conf - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-5' - name: 'Test - /mnt/c should be mounted with uid 1000' - shell: 'wsl-bash {0}' - run: |- - ls -alh /mnt - [[ "$(stat -c %u /mnt/c)" == 1000 ]] - if: |- - always() - && (steps.step-1.outcome == 'success') - test_wsl-conf_on_subsequent_execution: - name: 'Test /etc/wsl.conf handling on subsequent execution for "${{ matrix.distribution.user-id }}" distribution on ${{ matrix.environment }}' - runs-on: '${{ matrix.environment }}' - needs: - - 'build' - - 'check_yaml_consistency' - strategy: - fail-fast: false - matrix: - environment: - - 'windows-2019' - - 'windows-2022' - - 'windows-latest' - distribution: - - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Alpine' - user-id: 'Alpine' - match-pattern: '*Alpine*' - default-absent-tool: 'dos2unix' - - wsl-id: 'kali-linux' - user-id: 'kali-linux' - match-pattern: '*Kali*' - default-absent-tool: 'dos2unix' - - wsl-id: 'openSUSE-Leap-15.2' - user-id: 'openSUSE-Leap-15.2' - match-pattern: '*openSUSE*Leap*15.2*' - default-absent-tool: 'which' - - wsl-id: 'Ubuntu-24.04' - user-id: 'Ubuntu-24.04' - match-pattern: '*Ubuntu*24.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-22.04' - match-pattern: '*Ubuntu*22.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-20.04' - match-pattern: '*Ubuntu*20.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu-18.04' - user-id: 'Ubuntu-18.04' - match-pattern: '*Ubuntu*18.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu-16.04' - user-id: 'Ubuntu-16.04' - match-pattern: '*Ubuntu*16.04*' - default-absent-tool: 'dos2unix' - steps: - - id: 'step-0' - name: 'Restore built artifacts from cache' - uses: 'actions/cache/restore@v4' - with: - path: |- - action.yml - build/distributions/ - key: '${{ github.run_id }}' - fail-on-cache-miss: 'true' - - id: 'step-1' - name: 'Execute action' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - - id: 'step-2' - name: 'Delete wsl-bash' - shell: 'cmd' - run: 'DEL /F "${{ steps.step-1.outputs.wsl-shell-wrapper-path }}"' - if: |- - always() - && (steps.step-1.outcome == 'success') - && (matrix.distribution.user-id == 'Alpine') - - id: 'step-3' - name: 'Install Bash on Alpine' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - additional-packages: 'bash' - if: |- - always() - && (steps.step-1.outcome == 'success') - && (matrix.distribution.user-id == 'Alpine') - - id: 'step-4' - name: 'Test - /etc/wsl.conf should not exist' - shell: 'wsl-bash {0}' - run: '[ ! -f /etc/wsl.conf ] || { cat /etc/wsl.conf; false; }' - if: |- - always() - && (steps.step-1.outcome == 'success') - && (matrix.distribution.user-id != 'Ubuntu-24.04') - - id: 'step-5' - name: 'Test - C: should be mounted at /mnt/c' - shell: 'wsl-bash {0}' - run: |- - mount - mount | grep 'C:.* on /mnt/c' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-6' - name: 'Test - /mnt/c should be mounted with uid 0' - shell: 'wsl-bash {0}' - run: |- - ls -alh /mnt - [[ "$(stat -c %u /mnt/c)" == 0 ]] - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-7' - name: 'Execute action' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - wsl-conf: |- - [automount] - root = / - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-8' - name: 'Test - /etc/wsl.conf should exist' - shell: 'wsl-bash {0}' - run: |- - [ -f /etc/wsl.conf ] - cat /etc/wsl.conf - if: |- - always() - && (steps.step-7.outcome == 'success') - - id: 'step-9' - name: 'Test - C: should be mounted at /c' - shell: 'wsl-bash {0}' - run: |- - mount - mount | grep 'C:.* on /c' - if: |- - always() - && (steps.step-7.outcome == 'success') - test_additional_packages: - name: 'Test additional packages for "${{ matrix.distribution.user-id }}" distribution on ${{ matrix.environment }}' - runs-on: '${{ matrix.environment }}' - needs: - - 'build' - - 'check_yaml_consistency' - strategy: - fail-fast: false - matrix: - environment: - - 'windows-2019' - - 'windows-2022' - - 'windows-latest' - distribution: - - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Alpine' - user-id: 'Alpine' - match-pattern: '*Alpine*' - default-absent-tool: 'dos2unix' - - wsl-id: 'openSUSE-Leap-15.2' - user-id: 'openSUSE-Leap-15.2' - match-pattern: '*openSUSE*Leap*15.2*' - default-absent-tool: 'which' - - wsl-id: 'Ubuntu-24.04' - user-id: 'Ubuntu-24.04' - match-pattern: '*Ubuntu*24.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-22.04' - match-pattern: '*Ubuntu*22.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-20.04' - match-pattern: '*Ubuntu*20.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu-18.04' - user-id: 'Ubuntu-18.04' - match-pattern: '*Ubuntu*18.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu-16.04' - user-id: 'Ubuntu-16.04' - match-pattern: '*Ubuntu*16.04*' - default-absent-tool: 'dos2unix' - steps: - - id: 'step-0' - name: 'Restore built artifacts from cache' - uses: 'actions/cache/restore@v4' - with: - path: |- - action.yml - build/distributions/ - key: '${{ github.run_id }}' - fail-on-cache-miss: 'true' - - id: 'step-1' - name: 'Execute action' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - additional-packages: '${{ matrix.distribution.default-absent-tool }} bash' - - id: 'step-2' - name: 'Test - ${{ matrix.distribution.default-absent-tool }} should be installed' - shell: 'wsl-bash {0}' - run: '${{ matrix.distribution.default-absent-tool }} --version' - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-3' - name: 'Test - bash should be installed' - shell: 'wsl-bash {0}' - run: 'bash -c true' - if: |- - always() - && (steps.step-1.outcome == 'success') - test_multiple_usage_with_different_distributions: - name: 'Test multiple usage with different distributions ("${{ matrix.distributions.distribution1.user-id }}" / "${{ matrix.distributions.distribution2.user-id }}" / "${{ matrix.distributions.distribution3.user-id }}") on ${{ matrix.environment }}' - runs-on: '${{ matrix.environment }}' - needs: - - 'build' - - 'check_yaml_consistency' - strategy: - fail-fast: false - matrix: - environment: - - 'windows-2019' - - 'windows-2022' - - 'windows-latest' - distributions: - - distribution1: - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - distribution2: - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-20.04' - match-pattern: '*Ubuntu*20.04*' - default-absent-tool: 'dos2unix' - distribution3: - wsl-id: 'Ubuntu-18.04' - user-id: 'Ubuntu-18.04' - match-pattern: '*Ubuntu*18.04*' - default-absent-tool: 'dos2unix' - - distribution1: - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - distribution2: - wsl-id: 'Ubuntu-18.04' - user-id: 'Ubuntu-18.04' - match-pattern: '*Ubuntu*18.04*' - default-absent-tool: 'dos2unix' - distribution3: - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-20.04' - match-pattern: '*Ubuntu*20.04*' - default-absent-tool: 'dos2unix' - - distribution1: - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-20.04' - match-pattern: '*Ubuntu*20.04*' - default-absent-tool: 'dos2unix' - distribution2: - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - distribution3: - wsl-id: 'Ubuntu-18.04' - user-id: 'Ubuntu-18.04' - match-pattern: '*Ubuntu*18.04*' - default-absent-tool: 'dos2unix' - - distribution1: - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-20.04' - match-pattern: '*Ubuntu*20.04*' - default-absent-tool: 'dos2unix' - distribution2: - wsl-id: 'Ubuntu-18.04' - user-id: 'Ubuntu-18.04' - match-pattern: '*Ubuntu*18.04*' - default-absent-tool: 'dos2unix' - distribution3: - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - - distribution1: - wsl-id: 'Ubuntu-18.04' - user-id: 'Ubuntu-18.04' - match-pattern: '*Ubuntu*18.04*' - default-absent-tool: 'dos2unix' - distribution2: - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - distribution3: - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-20.04' - match-pattern: '*Ubuntu*20.04*' - default-absent-tool: 'dos2unix' - - distribution1: - wsl-id: 'Ubuntu-18.04' - user-id: 'Ubuntu-18.04' - match-pattern: '*Ubuntu*18.04*' - default-absent-tool: 'dos2unix' - distribution2: - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-20.04' - match-pattern: '*Ubuntu*20.04*' - default-absent-tool: 'dos2unix' - distribution3: - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - steps: - - id: 'step-0' - name: 'Restore built artifacts from cache' - uses: 'actions/cache/restore@v4' - with: - path: |- - action.yml - build/distributions/ - key: '${{ github.run_id }}' - fail-on-cache-miss: 'true' - - id: 'step-1' - name: 'Execute action for ${{ matrix.distributions.distribution1.user-id }}' - uses: './' - with: - distribution: '${{ matrix.distributions.distribution1.user-id }}' - - id: 'step-2' - name: 'Execute action for ${{ matrix.distributions.distribution2.user-id }}' - uses: './' - with: - distribution: '${{ matrix.distributions.distribution2.user-id }}' - - id: 'step-3' - name: 'Execute action for ${{ matrix.distributions.distribution3.user-id }}' - uses: './' - with: - distribution: '${{ matrix.distributions.distribution3.user-id }}' - set-as-default: 'false' - - id: 'step-4' - name: 'Execute action for ${{ matrix.distributions.distribution1.user-id }} again' - uses: './' - with: - distribution: '${{ matrix.distributions.distribution1.user-id }}' - - id: 'step-5' - name: 'Test - the default distribution should be the last installed distribution with set-as-default true' - shell: 'wsl-bash {0}' - run: |- - cat <(wsl.exe --list || true) <(wsl.exe --list || true | iconv -f UTF-16LE -t UTF-8) <(wslconfig.exe /list || true) <(wslconfig.exe /list || true | iconv -f UTF-16LE -t UTF-8) - [[ "$(cat <(wsl.exe --list || true) <(wsl.exe --list || true | iconv -f UTF-16LE -t UTF-8) <(wslconfig.exe /list || true) <(wslconfig.exe /list || true | iconv -f UTF-16LE -t UTF-8))" == *${{ matrix.distributions.distribution2.wsl-id }}\ \(Default\)* ]] - if: |- - always() - && (steps.step-4.outcome == 'success') - - id: 'step-6' - name: 'Test - wsl-bash should use the last installed distribution with set-as-default true' - shell: 'wsl-bash {0}' - run: |- - cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true) - [[ "$(cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true))" == ${{ matrix.distributions.distribution2.match-pattern }} ]] - if: |- - always() - && (steps.step-4.outcome == 'success') - test_multiple_usage_with_same_distribution: - name: 'Test multiple usage with "${{ matrix.distribution.user-id }}" distribution on ${{ matrix.environment }}' - runs-on: '${{ matrix.environment }}' - needs: - - 'build' - - 'check_yaml_consistency' - strategy: - fail-fast: false - matrix: - environment: - - 'windows-2019' - - 'windows-2022' - - 'windows-latest' - distribution: - - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Alpine' - user-id: 'Alpine' - match-pattern: '*Alpine*' - default-absent-tool: 'dos2unix' - - wsl-id: 'kali-linux' - user-id: 'kali-linux' - match-pattern: '*Kali*' - default-absent-tool: 'dos2unix' - - wsl-id: 'openSUSE-Leap-15.2' - user-id: 'openSUSE-Leap-15.2' - match-pattern: '*openSUSE*Leap*15.2*' - default-absent-tool: 'which' - - wsl-id: 'Ubuntu-24.04' - user-id: 'Ubuntu-24.04' - match-pattern: '*Ubuntu*24.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-22.04' - match-pattern: '*Ubuntu*22.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-20.04' - match-pattern: '*Ubuntu*20.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu-18.04' - user-id: 'Ubuntu-18.04' - match-pattern: '*Ubuntu*18.04*' - default-absent-tool: 'dos2unix' - - wsl-id: 'Ubuntu-16.04' - user-id: 'Ubuntu-16.04' - match-pattern: '*Ubuntu*16.04*' - default-absent-tool: 'dos2unix' - distribution2: - - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - exclude: - - environment: 'windows-2019' - distribution: - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - distribution2: - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - - environment: 'windows-2022' - distribution: - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - distribution2: - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - - environment: 'windows-latest' - distribution: - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - distribution2: - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - include: - - environment: 'windows-2019' - distribution: - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - distribution2: - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-20.04' - match-pattern: '*Ubuntu*20.04*' - default-absent-tool: 'dos2unix' - - environment: 'windows-2022' - distribution: - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - distribution2: - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-20.04' - match-pattern: '*Ubuntu*20.04*' - default-absent-tool: 'dos2unix' - - environment: 'windows-latest' - distribution: - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - distribution2: - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-20.04' - match-pattern: '*Ubuntu*20.04*' - default-absent-tool: 'dos2unix' - steps: - - id: 'step-0' - name: 'Restore built artifacts from cache' - uses: 'actions/cache/restore@v4' - with: - path: |- - action.yml - build/distributions/ - key: '${{ github.run_id }}' - fail-on-cache-miss: 'true' - - id: 'step-1' - name: 'Execute action' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - additional-packages: 'bash' - if: 'matrix.distribution.user-id != ''kali-linux''' - - id: 'step-2' - name: 'Execute action' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - if: 'matrix.distribution.user-id == ''kali-linux''' - - id: 'step-3' - name: 'Update distribution' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - update: 'true' - if: |- - (matrix.distribution.user-id != 'kali-linux') - && (matrix.distribution.user-id != 'Ubuntu-24.04') - - id: 'step-4' - name: 'Install default absent tool' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - additional-packages: '${{ matrix.distribution.default-absent-tool }}' - if: 'matrix.distribution.user-id != ''kali-linux''' - - id: 'step-5' - name: 'Test - ${{ matrix.distribution.default-absent-tool }} should be installed' - shell: 'wsl-bash {0}' - run: '${{ matrix.distribution.default-absent-tool }} --version' - if: |- - always() - && (steps.step-4.outcome == 'success') - && (matrix.distribution.user-id != 'kali-linux') - - id: 'step-6' - name: 'Execute action for ${{ matrix.distribution2.user-id }}' - uses: './' - with: - distribution: '${{ matrix.distribution2.user-id }}' - if: |- - always() - && (steps.step-4.outcome == 'success') - - id: 'step-7' - name: 'Test - "${{ matrix.distribution2.user-id }}" should be the default distribution after installation' - shell: 'wsl-bash {0}' - run: |- - cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true) - [[ "$(cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true))" == ${{ matrix.distribution2.match-pattern }} ]] - if: |- - always() - && (steps.step-6.outcome == 'success') - - id: 'step-8' - name: 'Re-execute action' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - if: |- - always() - && (steps.step-6.outcome == 'success') - - id: 'step-9' - name: 'Test - "${{ matrix.distribution2.user-id }}" should still be the default distribution after re-running for "${{ matrix.distribution.user-id }}"' - shell: 'wsl-bash {0}' - run: |- - cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true) - [[ "$(cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true))" == ${{ matrix.distribution2.match-pattern }} ]] - if: |- - always() - && (steps.step-8.outcome == 'success') - - id: 'step-10' - name: 'Set as default' - uses: './' - with: - distribution: '${{ matrix.distribution.user-id }}' - set-as-default: 'true' - if: |- - always() - && (steps.step-8.outcome == 'success') - - id: 'step-11' - name: 'Test - "${{ matrix.distribution.user-id }}" should be the default distribution after re-running with set-as-default true' - shell: 'wsl-bash {0}' - run: |- - cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true) - [[ "$(cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true))" == ${{ matrix.distribution.match-pattern }} ]] - if: |- - always() - && (steps.step-10.outcome == 'success') - test_distribution_specific_wsl_bash_scripts: - name: 'Test distribution specific wsl-bash scripts on ${{ matrix.environment }} (without ${{ matrix.distributions.incompatibleUbuntu }})' - runs-on: '${{ matrix.environment }}' - needs: - - 'build' - - 'check_yaml_consistency' - strategy: - fail-fast: false - matrix: - environment: - - 'windows-2019' - - 'windows-2022' - - 'windows-latest' - distributions: - - incompatibleUbuntu: 'Ubuntu-22.04' - distribution1: - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - distribution2: - wsl-id: 'Alpine' - user-id: 'Alpine' - match-pattern: '*Alpine*' - default-absent-tool: 'dos2unix' - distribution3: - wsl-id: 'kali-linux' - user-id: 'kali-linux' - match-pattern: '*Kali*' - default-absent-tool: 'dos2unix' - distribution4: - wsl-id: 'openSUSE-Leap-15.2' - user-id: 'openSUSE-Leap-15.2' - match-pattern: '*openSUSE*Leap*15.2*' - default-absent-tool: 'which' - distribution5: - wsl-id: 'Ubuntu-24.04' - user-id: 'Ubuntu-24.04' - match-pattern: '*Ubuntu*24.04*' - default-absent-tool: 'dos2unix' - distribution6: - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-20.04' - match-pattern: '*Ubuntu*20.04*' - default-absent-tool: 'dos2unix' - distribution7: - wsl-id: 'Ubuntu-18.04' - user-id: 'Ubuntu-18.04' - match-pattern: '*Ubuntu*18.04*' - default-absent-tool: 'dos2unix' - distribution8: - wsl-id: 'Ubuntu-16.04' - user-id: 'Ubuntu-16.04' - match-pattern: '*Ubuntu*16.04*' - default-absent-tool: 'dos2unix' - - incompatibleUbuntu: 'Ubuntu-20.04' - distribution1: - wsl-id: 'Debian' - user-id: 'Debian' - match-pattern: '*Debian*' - default-absent-tool: 'dos2unix' - distribution2: - wsl-id: 'Alpine' - user-id: 'Alpine' - match-pattern: '*Alpine*' - default-absent-tool: 'dos2unix' - distribution3: - wsl-id: 'kali-linux' - user-id: 'kali-linux' - match-pattern: '*Kali*' - default-absent-tool: 'dos2unix' - distribution4: - wsl-id: 'openSUSE-Leap-15.2' - user-id: 'openSUSE-Leap-15.2' - match-pattern: '*openSUSE*Leap*15.2*' - default-absent-tool: 'which' - distribution5: - wsl-id: 'Ubuntu-24.04' - user-id: 'Ubuntu-24.04' - match-pattern: '*Ubuntu*24.04*' - default-absent-tool: 'dos2unix' - distribution6: - wsl-id: 'Ubuntu' - user-id: 'Ubuntu-22.04' - match-pattern: '*Ubuntu*22.04*' - default-absent-tool: 'dos2unix' - distribution7: - wsl-id: 'Ubuntu-18.04' - user-id: 'Ubuntu-18.04' - match-pattern: '*Ubuntu*18.04*' - default-absent-tool: 'dos2unix' - distribution8: - wsl-id: 'Ubuntu-16.04' - user-id: 'Ubuntu-16.04' - match-pattern: '*Ubuntu*16.04*' - default-absent-tool: 'dos2unix' - steps: - - id: 'step-0' - name: 'Restore built artifacts from cache' - uses: 'actions/cache/restore@v4' - with: - path: |- - action.yml - build/distributions/ - key: '${{ github.run_id }}' - fail-on-cache-miss: 'true' - - id: 'step-1' - name: 'Execute action for ${{ matrix.distributions.distribution1.user-id }}' - uses: './' - with: - distribution: '${{ matrix.distributions.distribution1.user-id }}' - - id: 'step-2' - name: 'Execute action for ${{ matrix.distributions.distribution2.user-id }}' - uses: './' - with: - distribution: '${{ matrix.distributions.distribution2.user-id }}' - additional-packages: 'bash' - - id: 'step-3' - name: 'Execute action for ${{ matrix.distributions.distribution3.user-id }}' - uses: './' - with: - distribution: '${{ matrix.distributions.distribution3.user-id }}' - set-as-default: 'false' - - id: 'step-4' - name: 'Execute action for ${{ matrix.distributions.distribution4.user-id }}' - uses: './' - with: - distribution: '${{ matrix.distributions.distribution4.user-id }}' - set-as-default: 'false' - - id: 'step-5' - name: 'Execute action for ${{ matrix.distributions.distribution5.user-id }}' - uses: './' - with: - distribution: '${{ matrix.distributions.distribution5.user-id }}' - set-as-default: 'false' - - id: 'step-6' - name: 'Execute action for ${{ matrix.distributions.distribution6.user-id }}' - uses: './' - with: - distribution: '${{ matrix.distributions.distribution6.user-id }}' - set-as-default: 'false' - - id: 'step-7' - name: 'Execute action for ${{ matrix.distributions.distribution7.user-id }}' - uses: './' - with: - distribution: '${{ matrix.distributions.distribution7.user-id }}' - set-as-default: 'false' - - id: 'step-8' - name: 'Execute action for ${{ matrix.distributions.distribution8.user-id }}' - uses: './' - with: - distribution: '${{ matrix.distributions.distribution8.user-id }}' - set-as-default: 'false' - - id: 'step-9' - name: 'Test - wsl-bash_${{ matrix.distributions.distribution1.user-id }} should use the correct distribution' - shell: 'wsl-bash_Debian {0}' - run: |- - cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true) - [[ "$(cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true))" == ${{ matrix.distributions.distribution1.match-pattern }} ]] - if: |- - always() - && (steps.step-1.outcome == 'success') - - id: 'step-10' - name: 'Test - wsl-bash_${{ matrix.distributions.distribution2.user-id }} should use the correct distribution' - shell: 'wsl-bash_Alpine {0}' - run: |- - cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true) - [[ "$(cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true))" == ${{ matrix.distributions.distribution2.match-pattern }} ]] - if: |- - always() - && (steps.step-2.outcome == 'success') - - id: 'step-11' - name: 'Test - wsl-bash_${{ matrix.distributions.distribution3.user-id }} should use the correct distribution' - shell: 'wsl-bash_kali-linux {0}' - run: |- - cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true) - [[ "$(cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true))" == ${{ matrix.distributions.distribution3.match-pattern }} ]] - if: |- - always() - && (steps.step-3.outcome == 'success') - - id: 'step-12' - name: 'Test - wsl-bash_${{ matrix.distributions.distribution4.user-id }} should use the correct distribution' - shell: 'wsl-bash_openSUSE-Leap-15.2 {0}' - run: |- - cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true) - [[ "$(cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true))" == ${{ matrix.distributions.distribution4.match-pattern }} ]] - if: |- - always() - && (steps.step-4.outcome == 'success') - - id: 'step-13' - name: 'Test - wsl-bash_${{ matrix.distributions.distribution5.user-id }} should use the correct distribution' - shell: 'wsl-bash_Ubuntu-24.04 {0}' - run: |- - cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true) - [[ "$(cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true))" == ${{ matrix.distributions.distribution5.match-pattern }} ]] - if: |- - always() - && (steps.step-5.outcome == 'success') - - id: 'step-14' - name: 'Test - wsl-bash_${{ matrix.distributions.distribution6.user-id }} should use the correct distribution' - shell: 'wsl-bash_Ubuntu-22.04 {0}' - run: |- - cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true) - [[ "$(cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true))" == ${{ matrix.distributions.distribution6.match-pattern }} ]] - if: |- - always() - && (steps.step-6.outcome == 'success') - && (matrix.distributions.distribution6.user-id != 'Ubuntu-20.04') - - id: 'step-15' - name: 'Test - wsl-bash_${{ matrix.distributions.distribution6.user-id }} should use the correct distribution' - shell: 'wsl-bash_Ubuntu-20.04 {0}' - run: |- - cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true) - [[ "$(cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true))" == ${{ matrix.distributions.distribution6.match-pattern }} ]] - if: |- - always() - && (steps.step-6.outcome == 'success') - && (matrix.distributions.distribution6.user-id != 'Ubuntu-22.04') - - id: 'step-16' - name: 'Test - wsl-bash_${{ matrix.distributions.distribution7.user-id }} should use the correct distribution' - shell: 'wsl-bash_Ubuntu-18.04 {0}' - run: |- - cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true) - [[ "$(cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true))" == ${{ matrix.distributions.distribution7.match-pattern }} ]] - if: |- - always() - && (steps.step-7.outcome == 'success') - - id: 'step-17' - name: 'Test - wsl-bash_${{ matrix.distributions.distribution8.user-id }} should use the correct distribution' - shell: 'wsl-bash_Ubuntu-16.04 {0}' - run: |- - cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true) - [[ "$(cat <(lsb_release -a || true) <(uname -a || true) <([ -d /etc ] && find /etc -maxdepth 1 -type f \( -name '*release' -or -name 'issue*' \) -exec cat {} + || true) <([ -d /etc/products.d ] && find /etc/products.d -maxdepth 1 -type f -name '*.prod' -exec cat {} + || true) <([ -f /proc/version ] && cat /proc/version || true))" == ${{ matrix.distributions.distribution8.match-pattern }} ]] - if: |- - always() - && (steps.step-8.outcome == 'success') diff --git a/.github/workflows/validate-gradle-wrapper.yaml b/.github/workflows/validate-gradle-wrapper.yaml deleted file mode 100644 index 50eb0e9..0000000 --- a/.github/workflows/validate-gradle-wrapper.yaml +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright 2020-2024 Björn Kautler -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# This file was generated using Kotlin DSL (.github/workflows/validate-gradle-wrapper.main.kts). -# If you want to modify the workflow, please change the Kotlin file and regenerate this YAML file. -# Generated with https://github.com/typesafegithub/github-workflows-kt - -name: 'Validate Gradle Wrapper' -on: - push: {} - pull_request: {} -jobs: - check_yaml_consistency: - name: 'Check YAML consistency' - runs-on: 'ubuntu-latest' - steps: - - id: 'step-0' - name: 'Check out' - uses: 'actions/checkout@v4' - - id: 'step-1' - name: 'Execute script' - run: 'rm ''.github/workflows/validate-gradle-wrapper.yaml'' && ''.github/workflows/validate-gradle-wrapper.main.kts''' - - id: 'step-2' - name: 'Consistency check' - run: 'git diff --exit-code ''.github/workflows/validate-gradle-wrapper.yaml''' - validate_gradle_wrapper: - name: 'Validate Gradle Wrapper' - runs-on: 'ubuntu-latest' - needs: - - 'check_yaml_consistency' - steps: - - id: 'step-0' - name: 'Configure Git' - run: 'git config --global core.autocrlf input' - - id: 'step-1' - name: 'Checkout' - uses: 'actions/checkout@v4' - - id: 'step-2' - name: 'Validate Gradle Wrapper' - uses: 'gradle/wrapper-validation-action@v1' diff --git a/test.sh b/test.sh new file mode 100755 index 0000000..4d7b245 --- /dev/null +++ b/test.sh @@ -0,0 +1,3 @@ +#!/bin/bash +set -Eeuo pipefail +echo "test"