[Helix] Try running node services tests on helix again (#9046)
This commit is contained in:
parent
abd70031cb
commit
0b54783877
|
|
@ -0,0 +1,71 @@
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Installs NodeJs from http://nodejs.org/dist on a machine
|
||||||
|
.DESCRIPTION
|
||||||
|
This script installs NodeJs from http://nodejs.org/dist on a machine.
|
||||||
|
.PARAMETER Version
|
||||||
|
The version of NodeJS to install.
|
||||||
|
.PARAMETER InstallDir
|
||||||
|
The directory to install NodeJS to.
|
||||||
|
.LINK
|
||||||
|
https://nodejs.org/en/
|
||||||
|
#>
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
$Version,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
$InstallDir
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
$ProgressPreference = 'SilentlyContinue' # Workaround PowerShell/PowerShell#2138
|
||||||
|
|
||||||
|
Set-StrictMode -Version 1
|
||||||
|
|
||||||
|
if (Get-Command "node.exe" -ErrorAction SilentlyContinue)
|
||||||
|
{
|
||||||
|
Write-Host "Found node.exe in PATH"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Test-Path "$output_dir\node.exe")
|
||||||
|
{
|
||||||
|
Write-Host "Node.exe found at $output_dir"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
$nodeFile="node-v$Version-win-x64"
|
||||||
|
$url="http://nodejs.org/dist/v$Version/$nodeFile.zip"
|
||||||
|
Write-Host "Starting download of NodeJs ${Version} from $url"
|
||||||
|
Invoke-WebRequest -UseBasicParsing -Uri "$url" -OutFile "nodejs.zip"
|
||||||
|
Write-Host "Done downloading NodeJS ${Version}"
|
||||||
|
|
||||||
|
$tempPath = [System.IO.Path]::GetTempPath()
|
||||||
|
$tempDir = Join-Path $tempPath nodejs
|
||||||
|
New-Item -Path "$tempDir" -ItemType "directory" -Force
|
||||||
|
Write-Host "Extracting to $tempDir"
|
||||||
|
|
||||||
|
if (Get-Command -Name 'Microsoft.PowerShell.Archive\Expand-Archive' -ErrorAction Ignore) {
|
||||||
|
# Use built-in commands where possible as they are cross-plat compatible
|
||||||
|
Microsoft.PowerShell.Archive\Expand-Archive -Path "nodejs.zip" -DestinationPath $tempDir
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
# Fallback to old approach for old installations of PowerShell
|
||||||
|
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
||||||
|
[System.IO.Compression.ZipFile]::ExtractToDirectory("nodejs.zip", $tempDir)
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "Expanded NodeJs"
|
||||||
|
New-Item -Path "$InstallDir" -ItemType "directory" -Force
|
||||||
|
Write-Host "Copying $tempDir\$nodeFile\node.exe to $InstallDir"
|
||||||
|
Copy-Item "$tempDir\$nodeFile\node.exe" "$InstallDir\node.exe"
|
||||||
|
|
||||||
|
if (Test-Path "$InstallDir\node.exe")
|
||||||
|
{
|
||||||
|
Write-Host "Node.exe copied to $InstallDir"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Write-Host "Node.exe not copied to $InstallDir"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Cause the script to fail if any subcommand fails
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if type -P "node" &>/dev/null; then
|
||||||
|
echo "node is in \$PATH"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
node_version=$1
|
||||||
|
osname=`uname -s`
|
||||||
|
echo $osname
|
||||||
|
if [ "$osname" = "Darwin" ]; then
|
||||||
|
platformarch='darwin-x64'
|
||||||
|
else
|
||||||
|
platformarch='linux-x64'
|
||||||
|
fi
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
output_dir="$DIR/node"
|
||||||
|
url="http://nodejs.org/dist/v$node_version/node-v$node_version-$platformarch.tar.gz"
|
||||||
|
tmp="$(mktemp -d -t install-node.XXXXXX)"
|
||||||
|
trap "rm -rf $tmp" EXIT
|
||||||
|
cd "$tmp"
|
||||||
|
curl -Lsfo $(basename $url) "$url"
|
||||||
|
echo "Installing node from $(basename $url) $url"
|
||||||
|
mkdir $output_dir
|
||||||
|
echo "Unpacking to $output_dir"
|
||||||
|
tar --strip-components 1 -xzf "node-v$node_version-$platformarch.tar.gz" --no-same-owner --directory "$output_dir"
|
||||||
|
|
@ -14,7 +14,7 @@ set DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||||
set DOTNET_MULTILEVEL_LOOKUP=0
|
set DOTNET_MULTILEVEL_LOOKUP=0
|
||||||
set DOTNET_CLI_HOME=%HELIX_CORRELATION_PAYLOAD%\home
|
set DOTNET_CLI_HOME=%HELIX_CORRELATION_PAYLOAD%\home
|
||||||
|
|
||||||
set PATH=%DOTNET_ROOT%;%PATH%
|
set PATH=%DOTNET_ROOT%;%PATH%;%HELIX_CORRELATION_PAYLOAD%\node\bin
|
||||||
|
|
||||||
powershell.exe -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -useb 'https://dot.net/v1/dotnet-install.ps1'))) -Architecture x64 -Version %sdkVersion% -InstallDir %DOTNET_ROOT%"
|
powershell.exe -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -useb 'https://dot.net/v1/dotnet-install.ps1'))) -Architecture x64 -Version %sdkVersion% -InstallDir %DOTNET_ROOT%"
|
||||||
powershell.exe -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -useb 'https://dot.net/v1/dotnet-install.ps1'))) -Architecture x64 -Runtime dotnet -Version %runtimeVersion% -InstallDir %DOTNET_ROOT%"
|
powershell.exe -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -useb 'https://dot.net/v1/dotnet-install.ps1'))) -Architecture x64 -Runtime dotnet -Version %runtimeVersion% -InstallDir %DOTNET_ROOT%"
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
export DOTNET_ROOT="$DIR/.dotnet$RANDOM"
|
export DOTNET_ROOT="$DIR/.dotnet$RANDOM"
|
||||||
|
|
||||||
# Ensure dotnet comes first on PATH
|
# Ensure dotnet comes first on PATH
|
||||||
export PATH="$DOTNET_ROOT:$PATH"
|
export PATH="$DOTNET_ROOT:$PATH:$DIR/node/bin"
|
||||||
|
|
||||||
# Prevent fallback to global .NET locations. This ensures our tests use the shared frameworks we specify and don't rollforward to something else that might be installed on the machine
|
# Prevent fallback to global .NET locations. This ensures our tests use the shared frameworks we specify and don't rollforward to something else that might be installed on the machine
|
||||||
export DOTNET_MULTILEVEL_LOOKUP=0
|
export DOTNET_MULTILEVEL_LOOKUP=0
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
<HelixTestName>$(MSBuildProjectName)/$(TargetFramework)</HelixTestName>
|
<HelixTestName>$(MSBuildProjectName)/$(TargetFramework)</HelixTestName>
|
||||||
<HelixUseArchive>false</HelixUseArchive>
|
<HelixUseArchive>false</HelixUseArchive>
|
||||||
<LoggingTestingDisableFileLogging Condition="'$(IsHelixJob)' == 'true'">true</LoggingTestingDisableFileLogging>
|
<LoggingTestingDisableFileLogging Condition="'$(IsHelixJob)' == 'true'">true</LoggingTestingDisableFileLogging>
|
||||||
|
<NodeVersion>10.15.3</NodeVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'">
|
<ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'">
|
||||||
|
|
@ -35,4 +36,12 @@
|
||||||
<HelixPreCommand Include="call RunPowershell.cmd mssql\InstallSqlServerLocalDB.ps1 || exit /b 1" />
|
<HelixPreCommand Include="call RunPowershell.cmd mssql\InstallSqlServerLocalDB.ps1 || exit /b 1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup Condition="'$(TestDependsOnNode)' == 'true' AND '$(IsWindowsHelixQueue)' == 'false'">
|
||||||
|
<HelixPreCommand Include="./installnode.sh $(NodeVersion)" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup Condition="'$(TestDependsOnNode)' == 'true' AND '$(IsWindowsHelixQueue)' == 'true'">
|
||||||
|
<HelixPreCommand Include="call RunPowershell.cmd InstallNode.ps1 $(NodeVersion) %25HELIX_CORRELATION_PAYLOAD%25\node\bin || exit /b 1" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -2,19 +2,14 @@
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netcoreapp3.0</TargetFramework>
|
<TargetFramework>netcoreapp3.0</TargetFramework>
|
||||||
|
<TestDependsOnNode>true</TestDependsOnNode>
|
||||||
<!-- Tests do not work on Helix or when bin/ directory is not in project directory due to undeclared dependency on test content. -->
|
|
||||||
<!-- https://github.com/aspnet/AspNetCore/issues/8044 -->
|
|
||||||
<BuildHelixPayload>false</BuildHelixPayload>
|
|
||||||
<BaseOutputPath />
|
|
||||||
<OutputPath />
|
|
||||||
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.AspNetCore.NodeServices" />
|
<Reference Include="Microsoft.AspNetCore.NodeServices" />
|
||||||
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
||||||
|
<Content Include="js\**\*" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
using Microsoft.AspNetCore.NodeServices.HostingModels;
|
using Microsoft.AspNetCore.NodeServices.HostingModels;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using System;
|
using System;
|
||||||
|
using System.IO;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
|
@ -115,7 +116,7 @@ namespace Microsoft.AspNetCore.NodeServices
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string ModulePath(string testModuleName)
|
private static string ModulePath(string testModuleName)
|
||||||
=> $"../../../js/{testModuleName}";
|
=> Path.Combine(AppContext.BaseDirectory, "js", testModuleName);
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue