Add ability to install runtime only #103
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: e2e tests | |
on: | |
pull_request: | |
paths-ignore: | |
- '**.md' | |
push: | |
branches: | |
- main | |
- releases/* | |
paths-ignore: | |
- '**.md' | |
jobs: | |
test-setup-multiple-versions: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ubuntu-latest, windows-latest, macOS-latest] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
- name: Setup dotnet 2.2.402, 3.1.404 and 3.0.x | |
uses: ./ | |
with: | |
dotnet-version: | | |
2.2.402 | |
3.1.404 | |
3.0.x | |
- name: Verify dotnet | |
shell: pwsh | |
run: __tests__/verify-dotnet.ps1 -Patterns "^2.2.402$", "^3.1.404$", "^3.0" | |
test-setup-full-version: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ubuntu-latest, windows-latest, macOS-latest] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
# Side-by-side install of 2.2 and 3.1 used for the test project | |
- name: Setup dotnet 2.2.402 | |
uses: ./ | |
with: | |
dotnet-version: 2.2.402 | |
- name: Setup dotnet 3.1.201 | |
uses: ./ | |
with: | |
dotnet-version: 3.1.201 | |
# We are including this variable to force the generation of the nuget config file to verify that it is created in the correct place | |
source-url: https://api.nuget.org/v3/index.json | |
env: | |
NUGET_AUTH_TOKEN: NOTATOKEN | |
- name: Verify dotnet | |
shell: pwsh | |
run: __tests__/verify-dotnet.ps1 -Patterns "^3.1.201$", "^2.2.402$" -CheckNugetConfig | |
test-setup-without-patch-version: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ubuntu-latest, windows-latest, macOS-latest] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
# 2.0, 3.0, 5.0 needs to be in single quotes to interpret as a string instead of as an integer | |
- name: Setup dotnet '3.1' | |
uses: ./ | |
with: | |
dotnet-version: '3.1' | |
- name: Setup dotnet '2.2' | |
uses: ./ | |
with: | |
dotnet-version: '2.2' | |
- name: Verify dotnet | |
shell: pwsh | |
run: __tests__/verify-dotnet.ps1 -Patterns "^3.1", "^2.2" | |
test-setup-prerelease-version: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ubuntu-latest, windows-latest, macOS-latest] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
- name: Setup dotnet '3.1.100-preview1-014459' | |
uses: ./ | |
with: | |
dotnet-version: '3.1.100-preview1-014459' | |
- name: Verify dotnet | |
shell: pwsh | |
run: __tests__/verify-dotnet.ps1 -Patterns "3.1.100-preview1-014459" | |
test-setup-latest-patch-version: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ubuntu-latest, windows-latest, macOS-latest] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
- name: Setup dotnet 3.1.x | |
uses: ./ | |
with: | |
dotnet-version: 3.1.x | |
- name: Setup dotnet 2.2.X | |
uses: ./ | |
with: | |
dotnet-version: 2.2.X | |
- name: Verify dotnet | |
shell: pwsh | |
run: __tests__/verify-dotnet.ps1 -Patterns "^2.2", "^3.1" | |
test-ABCxx-syntax: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ubuntu-latest, windows-latest, macOS-latest] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
- name: Setup dotnet 6.0.4xx | |
uses: ./ | |
with: | |
dotnet-version: '6.0.4xx' | |
- name: Verify dotnet | |
shell: pwsh | |
run: __tests__/verify-dotnet.ps1 -Patterns "^6\.0\.4\d{2}" | |
test-setup-with-wildcard: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ubuntu-latest, windows-latest, macOS-latest] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
- name: Setup dotnet 3.1.* | |
uses: ./ | |
with: | |
dotnet-version: 3.1.* | |
- name: Setup dotnet 2.2.* | |
uses: ./ | |
with: | |
dotnet-version: 2.2.* | |
- name: Verify dotnet | |
shell: pwsh | |
run: __tests__/verify-dotnet.ps1 -Patterns "^3.1", "^2.2" | |
test-setup-global-json-specified-and-version: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ubuntu-latest, windows-latest, macOS-latest] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
- name: Write global.json | |
shell: bash | |
run: | | |
mkdir subdirectory | |
echo '{"sdk":{"version": "2.2.207","rollForward": "latestFeature"}}' > ./subdirectory/global.json | |
- name: Setup dotnet | |
uses: ./ | |
with: | |
dotnet-version: 3.1 | |
global-json-file: ./subdirectory/global.json | |
- name: Verify dotnet | |
shell: pwsh | |
run: __tests__/verify-dotnet.ps1 -Patterns "^2.2", "^3.1" | |
test-setup-global-json-only: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ubuntu-latest, windows-latest, macOS-latest] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
- name: Write global.json | |
shell: bash | |
run: | | |
mkdir subdirectory | |
echo '{"sdk":{"version": "2.2.207","rollForward": "latestFeature"}}' > ./subdirectory/global.json | |
- name: Setup dotnet | |
uses: ./ | |
with: | |
global-json-file: ./subdirectory/global.json | |
- name: Verify dotnet | |
shell: pwsh | |
run: __tests__/verify-dotnet.ps1 -Patterns "^2.2" | |
test-global-json-with-comments: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ubuntu-latest, windows-latest, macOS-latest] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
- name: Write global.json | |
shell: bash | |
run: | | |
mkdir subdirectory | |
echo '/* should support comments */ {"sdk":{"version": "2.2.207","rollForward": "latestFeature"}} // should support comments' > ./subdirectory/global.json | |
- name: Setup dotnet | |
uses: ./ | |
with: | |
global-json-file: ./subdirectory/global.json | |
- name: Verify dotnet | |
shell: pwsh | |
run: __tests__/verify-dotnet.ps1 -Patterns "^2.2" | |
test-setup-with-dotnet-quality: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ubuntu-latest, windows-latest, macOS-latest] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
- name: Setup dotnet 7.0 with preview quality | |
uses: ./ | |
with: | |
dotnet-version: '7.0' | |
dotnet-quality: 'preview' | |
- name: Verify dotnet | |
shell: pwsh | |
run: __tests__/verify-dotnet.ps1 -Patterns "^7\.0\.\d+-" | |
test-setup-with-cache: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ubuntu-latest, windows-latest, macos-latest] | |
env: | |
NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
- name: Copy NuGet lock file to root | |
shell: bash | |
run: cp ./__tests__/e2e-test-csproj/packages.lock.json ./packages.lock.json | |
- name: Setup .NET Core 3.1 | |
id: setup-dotnet | |
uses: ./ | |
with: | |
dotnet-version: 3.1 | |
cache: true | |
- name: Verify Cache | |
if: steps.setup-dotnet.outputs.cache-hit == 'true' | |
shell: bash | |
run: if [[ -e ${NUGET_PACKAGES} ]]; then exit 0; else exit 1; fi | |
- name: Verify dotnet | |
shell: pwsh | |
run: __tests__/verify-dotnet.ps1 -Patterns "^3.1" | |
test-setup-with-cache-dependency-path: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ubuntu-latest, windows-latest, macos-latest] | |
env: | |
NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
- name: Setup .NET Core 3.1 | |
id: setup-dotnet | |
uses: ./ | |
with: | |
dotnet-version: 3.1 | |
cache: true | |
cache-dependency-path: './__tests__/e2e-test-csproj/packages.lock.json' | |
- name: Verify Cache | |
if: steps.setup-dotnet.outputs.cache-hit == 'true' | |
shell: bash | |
run: if [[ -e ${NUGET_PACKAGES} ]]; then exit 0; else exit 1; fi | |
- name: Verify dotnet | |
shell: pwsh | |
run: __tests__/verify-dotnet.ps1 -Patterns "^3.1" | |
test-dotnet-version-output-during-single-version-installation: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ubuntu-latest, windows-latest, macOS-latest] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
- name: Setup dotnet 6.0.401 | |
uses: ./ | |
id: step1 | |
with: | |
dotnet-version: '6.0.401' | |
- name: Verify value of the dotnet-version output | |
shell: pwsh | |
run: | | |
$version = & dotnet --version | |
Write-Host "Installed version: $version" | |
if (-not ($version -eq '${{steps.step1.outputs.dotnet-version}}')) { throw "Unexpected output value" } | |
test-dotnet-version-output-during-multiple-version-installation: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ubuntu-latest, windows-latest, macOS-latest] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
- name: Setup dotnet 6.0.401, 5.0.408, 7.0.100-rc.1.22431.12 | |
uses: ./ | |
id: step2 | |
with: | |
dotnet-version: | | |
7.0.100-rc.1.22431.12 | |
6.0.401 | |
5.0.408 | |
- name: Verify value of the dotnet-version output | |
shell: pwsh | |
run: | | |
$version = "7.0.100-rc.1.22431.12" | |
if (-not ($version -eq '${{steps.step2.outputs.dotnet-version}}')) { throw "Unexpected output value" } | |
test-proxy: | |
runs-on: ubuntu-latest | |
container: | |
image: ubuntu:latest | |
options: --dns 127.0.0.1 | |
services: | |
squid-proxy: | |
image: ubuntu/squid:latest | |
ports: | |
- 3128:3128 | |
env: | |
https_proxy: http://squid-proxy:3128 | |
http_proxy: http://squid-proxy:3128 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install Powershell | |
run: | | |
apt-get update | |
apt-get install -y wget apt-transport-https software-properties-common | |
wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb" | |
dpkg -i packages-microsoft-prod.deb | |
rm packages-microsoft-prod.deb | |
apt-get update | |
apt-get install -y powershell | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
- name: Setup dotnet 6.0 | |
uses: ./ | |
with: | |
dotnet-version: 6.0 | |
source-url: https://api.nuget.org/v3/index.json | |
env: | |
NUGET_AUTH_TOKEN: NOTATOKEN | |
- name: Verify dotnet | |
shell: pwsh | |
run: | | |
__tests__/verify-dotnet.ps1 -Patterns "^6.0" -CheckNugetConfig | |
test-bypass-proxy: | |
runs-on: ubuntu-latest | |
env: | |
https_proxy: http://no-such-proxy:3128 | |
no_proxy: github.com,dotnetcli.blob.core.windows.net,download.visualstudio.microsoft.com,api.nuget.org,dotnetcli.azureedge.net | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
- name: Setup dotnet 3.1.201 | |
uses: ./ | |
with: | |
dotnet-version: 3.1.201 | |
source-url: https://api.nuget.org/v3/index.json | |
env: | |
NUGET_AUTH_TOKEN: NOTATOKEN | |
- name: Verify dotnet | |
shell: pwsh | |
run: __tests__/verify-dotnet.ps1 -Patterns "^3.1.201$" -CheckNugetConfig | |
test-sequential-version-installation: | |
runs-on: ${{ matrix.operating-system }} | |
strategy: | |
fail-fast: false | |
matrix: | |
operating-system: [ubuntu-latest, windows-latest, macOS-latest] | |
lower-version: ['3.1.426'] | |
higher-version: ['7.0.203'] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear toolcache | |
shell: pwsh | |
run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | |
# Install one version, use it for something, then switch to next version | |
- name: Setup dotnet (lower version) | |
uses: ./ | |
with: | |
dotnet-version: ${{ matrix.lower-version }} | |
- name: Verify dotnet (lower version) | |
shell: pwsh | |
run: __tests__/verify-dotnet.ps1 -Patterns "^${{ matrix.lower-version }}$" | |
- name: Setup dotnet (higher version) | |
uses: ./ | |
with: | |
dotnet-version: ${{ matrix.higher-version }} | |
- name: Verify dotnet (higher version) | |
shell: pwsh | |
run: __tests__/verify-dotnet.ps1 -Patterns "^${{ matrix.lower-version }}$", "^${{ matrix.higher-version }}$" |