Run tests on CoreCLR using DNX
This commit is contained in:
parent
76c0f12c06
commit
c626a599a7
|
|
@ -24,6 +24,18 @@ CALL %~dp0dotnet-install.cmd
|
||||||
ECHO Adding %DOTNET_LOCAL_INSTALL_FOLDER% to PATH
|
ECHO Adding %DOTNET_LOCAL_INSTALL_FOLDER% to PATH
|
||||||
SET PATH=%DOTNET_LOCAL_INSTALL_FOLDER%;%PATH%
|
SET PATH=%DOTNET_LOCAL_INSTALL_FOLDER%;%PATH%
|
||||||
SET DOTNET_HOME=%DOTNET_LOCAL_INSTALL_FOLDER%
|
SET DOTNET_HOME=%DOTNET_LOCAL_INSTALL_FOLDER%
|
||||||
|
|
||||||
|
REM ==== Temporary ====
|
||||||
|
IF "%BUILDCMD_DNX_VERSION%"=="" (
|
||||||
|
SET BUILDCMD_DNX_VERSION=latest
|
||||||
|
)
|
||||||
|
IF "%SKIP_DNX_INSTALL%"=="" (
|
||||||
|
CALL %KOREBUILD_FOLDER%\build\dnvm install %BUILDCMD_DNX_VERSION% -runtime CoreCLR -arch x86 -alias default
|
||||||
|
CALL %KOREBUILD_FOLDER%\build\dnvm install default -runtime CLR -arch x86 -alias default
|
||||||
|
) ELSE (
|
||||||
|
CALL %KOREBUILD_FOLDER%\build\dnvm use default -runtime CLR -arch x86
|
||||||
|
)
|
||||||
|
REM ============================
|
||||||
|
|
||||||
SET MAKEFILE_PATH=makefile.shade
|
SET MAKEFILE_PATH=makefile.shade
|
||||||
IF NOT EXIST %MAKEFILE_PATH% (
|
IF NOT EXIST %MAKEFILE_PATH% (
|
||||||
|
|
@ -31,5 +43,6 @@ IF NOT EXIST %MAKEFILE_PATH% (
|
||||||
)
|
)
|
||||||
ECHO Using makefile: %MAKEFILE_PATH%
|
ECHO Using makefile: %MAKEFILE_PATH%
|
||||||
|
|
||||||
|
|
||||||
REM Don't use full paths. Sake doesn't support them!
|
REM Don't use full paths. Sake doesn't support them!
|
||||||
"%~dp0Sake\tools\Sake.exe" -I %KOREBUILD_FOLDER%\build -f %MAKEFILE_PATH% %*
|
"%~dp0Sake\tools\Sake.exe" -I %KOREBUILD_FOLDER%\build -f %MAKEFILE_PATH% %*
|
||||||
|
|
@ -27,10 +27,23 @@ export DOTNET_HOME=DOTNET_INSTALL_DIR
|
||||||
export KOREBUILD_FOLDER=$koreBuildFolder
|
export KOREBUILD_FOLDER=$koreBuildFolder
|
||||||
source $koreBuildFolder/build/dotnet-install.sh
|
source $koreBuildFolder/build/dotnet-install.sh
|
||||||
|
|
||||||
|
# ==== Temporary ====
|
||||||
|
if ! type dnvm > /dev/null 2>&1; then
|
||||||
|
source $koreBuildFolder/build/dnvm.sh
|
||||||
|
fi
|
||||||
|
if ! type dnx > /dev/null 2>&1 || [ -z "$SKIP_DNX_INSTALL" ]; then
|
||||||
|
dnvm install latest -runtime coreclr -alias default
|
||||||
|
dnvm install default -runtime mono -alias default
|
||||||
|
else
|
||||||
|
dnvm use default -runtime mono
|
||||||
|
fi
|
||||||
|
# ============
|
||||||
|
|
||||||
makefilePath=makefile.shade
|
makefilePath=makefile.shade
|
||||||
if test ! -f $makefilePath; then
|
if test ! -f $makefilePath; then
|
||||||
makefilePath=$koreBuildFolder/build/makefile.shade
|
makefilePath=$koreBuildFolder/build/makefile.shade
|
||||||
fi
|
fi
|
||||||
|
echo "Using makefile: ${makefile}"
|
||||||
|
|
||||||
# Probe for Mono Reference assemblies
|
# Probe for Mono Reference assemblies
|
||||||
if test -z "$DOTNET_REFERENCE_ASSEMBLIES_PATH"; then
|
if test -z "$DOTNET_REFERENCE_ASSEMBLIES_PATH"; then
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
use import="Json"
|
||||||
|
use import="Environment"
|
||||||
|
|
||||||
|
default NO_PARALLEL_TEST_PROJECTS='${E("NO_PARALLEL_TEST_PROJECTS")}'
|
||||||
|
default KOREBUILD_TEST_DNXCORE='${E("KOREBUILD_TEST_DNXCORE")}'
|
||||||
|
default KOREBUILD_TEST_SKIPMONO='${E("KOREBUILD_TEST_SKIPMONO")}'
|
||||||
|
|
||||||
|
@{/*
|
||||||
|
|
||||||
|
dnx-test
|
||||||
|
Run unit tests in your project.
|
||||||
|
|
||||||
|
projectFile=''
|
||||||
|
Required. Path to the test project.json to execute
|
||||||
|
|
||||||
|
*/}
|
||||||
|
|
||||||
|
@{
|
||||||
|
var projectText = File.ReadAllText(projectFile);
|
||||||
|
var project = (JsonObject)Json.Deserialize(projectText);
|
||||||
|
|
||||||
|
var commands = project.ValueAsJsonObject("commands");
|
||||||
|
|
||||||
|
if (commands != null && commands.Keys.Contains("test"))
|
||||||
|
{
|
||||||
|
var projectFolder = Path.GetDirectoryName(projectFile);
|
||||||
|
var projectName = Path.GetFileName(projectFolder);
|
||||||
|
|
||||||
|
var noParallelTestProjects = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
|
||||||
|
if (!string.IsNullOrEmpty(NO_PARALLEL_TEST_PROJECTS))
|
||||||
|
{
|
||||||
|
noParallelTestProjects.UnionWith(NO_PARALLEL_TEST_PROJECTS.Split((char)','));
|
||||||
|
}
|
||||||
|
|
||||||
|
var configs = project.ValueAsJsonObject("frameworks");
|
||||||
|
IEnumerable<string> targetFrameworks = configs == null?
|
||||||
|
new string[0]:
|
||||||
|
configs.Keys.Where(k => k.StartsWith("dnx", StringComparison.OrdinalIgnoreCase));
|
||||||
|
|
||||||
|
foreach (var framework in targetFrameworks)
|
||||||
|
{
|
||||||
|
var testArgs = noParallelTestProjects.Contains(projectName) ? " -parallel none" : "";
|
||||||
|
|
||||||
|
if (framework.StartsWith("dnxcore", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
if (IsLinux)
|
||||||
|
{
|
||||||
|
// Work around issue with testing in parallel on Mono.
|
||||||
|
testArgs = " -parallel none";
|
||||||
|
}
|
||||||
|
|
||||||
|
Dnx("test" + testArgs, projectFolder, "default -runtime coreclr");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
@{/*
|
||||||
|
|
||||||
|
dnx
|
||||||
|
Run dnx commands in your project. Executes `dnx` command.
|
||||||
|
|
||||||
|
command=''
|
||||||
|
The `dnx` subcommand to execute.
|
||||||
|
dnxDir=''
|
||||||
|
Optional. The directory in which to execute the `dnx` command.
|
||||||
|
dnvmUse=''
|
||||||
|
Optional. The DNX framework to use. Suitable for a `dnvm run` or `dnvm use` command.
|
||||||
|
*/}
|
||||||
|
|
||||||
|
default currentDir = '${Directory.GetCurrentDirectory()}'
|
||||||
|
default dnxDir = '${ currentDir }'
|
||||||
|
|
||||||
|
default dnvmUse=''
|
||||||
|
var dnvmPath = '${ Path.Combine(Directory.GetCurrentDirectory(), ".build", "KoreBuild-dotnet", "build", "dnvm") }'
|
||||||
|
|
||||||
|
exec program='cmd' commandline='/C dnx ${command}' workingdir='${dnxDir}' if='!IsLinux && string.IsNullOrEmpty(dnvmUse)'
|
||||||
|
|
||||||
|
var cmdCommand = '/S /C ""${dnvmPath}.cmd" use ${dnvmUse} && dnx ${command}"'
|
||||||
|
exec program='cmd' commandline='${ cmdCommand }' workingdir='${dnxDir}' if='!IsLinux && !string.IsNullOrEmpty(dnvmUse)'
|
||||||
|
|
||||||
|
exec program='dnx' commandline='${command}' workingdir='${dnxDir}' if='IsLinux && string.IsNullOrEmpty(dnvmUse)'
|
||||||
|
|
||||||
|
var envCommand = 'bash -c "source \"${dnvmPath}.sh\" && dnvm use ${dnvmUse} && dnx ${command}"'
|
||||||
|
exec program='/usr/bin/env' commandline='${ envCommand }' workingdir='${dnxDir}' if='IsLinux && !string.IsNullOrEmpty(dnvmUse)'
|
||||||
|
|
@ -171,12 +171,14 @@ default NUGET_FEED = 'https://api.nuget.org/v3/index.json'
|
||||||
if (ShouldRunInParallel)
|
if (ShouldRunInParallel)
|
||||||
{
|
{
|
||||||
Parallel.ForEach(projectFiles, projectFile => XunitTest(projectFile, testParallel: true));
|
Parallel.ForEach(projectFiles, projectFile => XunitTest(projectFile, testParallel: true));
|
||||||
Parallel.ForEach(projectFiles, projectFile => DotnetTest(projectFile, testParallel: true));
|
//Parallel.ForEach(projectFiles, projectFile => DotnetTest(projectFile, testParallel: true));
|
||||||
|
Parallel.ForEach(projectFiles, projectFile => DnxTest(projectFile, testParallel: true));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
projectFiles.ForEach(projectFile => XunitTest(projectFile, testParallel: false));
|
projectFiles.ForEach(projectFile => XunitTest(projectFile, testParallel: false));
|
||||||
projectFiles.ForEach(projectFile => DotnetTest(projectFile, testParallel: false));
|
//projectFiles.ForEach(projectFile => DotnetTest(projectFile, testParallel: false));
|
||||||
|
projectFiles.ForEach(projectFile => DnxTest(projectFile, testParallel: false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -347,4 +349,11 @@ macro name="DotnetTest" projectFile='string' testParallel='bool'
|
||||||
|
|
||||||
macro name="XunitTest" projectFile='string' testParallel='bool'
|
macro name="XunitTest" projectFile='string' testParallel='bool'
|
||||||
xunit-test
|
xunit-test
|
||||||
|
|
||||||
|
|
||||||
|
macro name='Dnx' command='string' dnxDir='string' dnvmUse='string'
|
||||||
|
dnx
|
||||||
|
|
||||||
|
macro name="DnxTest" projectFile='string' testParallel='bool'
|
||||||
|
dnx-test
|
||||||
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
@Echo off
|
||||||
|
|
||||||
|
for /f "delims=" %%i in ('PowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command "[System.IO.Path]::GetTempFileName()"') do set DNVM_CMD_PATH_FILE=%%i.cmd
|
||||||
|
|
||||||
|
PowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command "[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';$CmdPathFile='%DNVM_CMD_PATH_FILE%';& '%~dp0dnvm.ps1' %*"
|
||||||
|
|
||||||
|
IF EXIST %DNVM_CMD_PATH_FILE% (
|
||||||
|
CALL %DNVM_CMD_PATH_FILE%
|
||||||
|
DEL %DNVM_CMD_PATH_FILE%
|
||||||
|
)
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue