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
|
||||
SET PATH=%DOTNET_LOCAL_INSTALL_FOLDER%;%PATH%
|
||||
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
|
||||
IF NOT EXIST %MAKEFILE_PATH% (
|
||||
|
|
@ -31,5 +43,6 @@ IF NOT EXIST %MAKEFILE_PATH% (
|
|||
)
|
||||
ECHO Using makefile: %MAKEFILE_PATH%
|
||||
|
||||
|
||||
REM Don't use full paths. Sake doesn't support them!
|
||||
"%~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
|
||||
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
|
||||
if test ! -f $makefilePath; then
|
||||
makefilePath=$koreBuildFolder/build/makefile.shade
|
||||
fi
|
||||
echo "Using makefile: ${makefile}"
|
||||
|
||||
# Probe for Mono Reference assemblies
|
||||
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)
|
||||
{
|
||||
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
|
||||
{
|
||||
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'
|
||||
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