-
Notifications
You must be signed in to change notification settings - Fork 201
Expand file tree
/
Copy pathsetup-e2e-tests.ps1
More file actions
139 lines (109 loc) · 3.44 KB
/
setup-e2e-tests.ps1
File metadata and controls
139 lines (109 loc) · 3.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#Requires -Version 6
param(
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[String]
[ValidateSet("net8", "netfx")]
$DotnetVersion,
[Switch]
$SkipStorageEmulator,
[Switch]
$SkipCosmosDBEmulator,
[Switch]
$SkipCoreTools,
[Switch]
$UseCoreToolsBuildFromIntegrationTests,
[Switch]
$SkipBuildOnPack
)
$FunctionsRuntimeVersion = 4
function StopOnFailedExecution {
if ($LastExitCode)
{
exit $LastExitCode
}
}
if($SkipCoreTools)
{
Write-Host
Write-Host "---Skipping Core Tools download---"
}
else
{
$arch = [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString().ToLowerInvariant()
if ($IsWindows) {
$os = "win"
$coreToolsURL = $env:CORE_TOOLS_URL
}
elseif ($IsMacOS) {
$os = "osx"
}
else {
$os = "linux"
$coreToolsURL = $env:CORE_TOOLS_URL_LINUX
}
if ($UseCoreToolsBuildFromIntegrationTests -eq $true -or $UseCoreToolsBuildFromIntegrationTests.IsPresent) {
Write-Host ""
Write-Host "Using Core Tools from integration test feed..."
if ([string]::IsNullOrWhiteSpace($coreToolsURL)) {
Write-Error "CORE_TOOLS_URL (or CORE_TOOLS_URL_LINUX) is not set."
exit 1
}
}
else {
Write-Host ""
Write-Host "Using latest Core Tools release from GitHub..."
# GitHub API call for latest release
$releaseInfo = Invoke-RestMethod -Uri "https://api.github.com/repos/Azure/azure-functions-core-tools/releases/latest" -Headers @{ "User-Agent" = "PowerShell" }
$latestVersion = $releaseInfo.tag_name
Write-Host "`nLatest Core Tools version: $latestVersion"
# Look for zip file matching os and arch
$pattern = "Azure\.Functions\.Cli\.$os-$arch\..*\.zip$"
$asset = $releaseInfo.assets | Where-Object {
$_.name -match $pattern
}
if (-not $asset) {
Write-Error "Could not find a Core Tools .zip for OS '$os' and arch '$arch'"
exit 1
}
$coreToolsURL = $asset.browser_download_url
}
Write-Host ""
Write-Host "---Downloading the Core Tools for Functions V$FunctionsRuntimeVersion---"
Write-Host "Core Tools download URL: $coreToolsURL"
$FUNC_CLI_DIRECTORY = Join-Path $PSScriptRoot 'Azure.Functions.Cli'
Write-Host 'Deleting Functions Core Tools if exists...'
Remove-Item -Force "$FUNC_CLI_DIRECTORY.zip" -ErrorAction Ignore
Remove-Item -Recurse -Force $FUNC_CLI_DIRECTORY -ErrorAction Ignore
$output = "$FUNC_CLI_DIRECTORY.zip"
Invoke-RestMethod -Uri $coreToolsURL -OutFile $output
Write-Host 'Extracting Functions Core Tools...'
Expand-Archive $output -DestinationPath $FUNC_CLI_DIRECTORY
if ($IsMacOS -or $IsLinux)
{
& "chmod" "a+x" "$FUNC_CLI_DIRECTORY/func"
}
if (Test-Path $output)
{
Remove-Item $output -Recurse -Force -ErrorAction Ignore
}
Write-Host "------"
}
Write-Host "----- Executing tests for Dotnet version $DotnetVersion -----"
$AdditionalPackArgs = @("-c", "Release", "-p:FunctionsRuntimeVersion=$FunctionsRuntimeVersion", "-p:DotnetVersion=$DotnetVersion")
if ($SkipBuildOnPack -eq $true)
{
$AdditionalPackArgs += "--no-build"
}
.\tools\devpack.ps1 -DotnetVersion $DotnetVersion -E2E -AdditionalPackArgs $AdditionalPackArgs
if ($SkipStorageEmulator -And $SkipCosmosDBEmulator)
{
Write-Host
Write-Host "---Skipping emulator startup---"
Write-Host
}
else
{
.\tools\start-emulators.ps1 -SkipStorageEmulator:$SkipStorageEmulator -SkipCosmosDBEmulator:$SkipCosmosDBEmulator
}
StopOnFailedExecution