80 lines
2.4 KiB
Plaintext
80 lines
2.4 KiB
Plaintext
use import="Json"
|
|
use import="Environment"
|
|
|
|
default NO_PARALLEL_TEST_PROJECTS='${E("NO_PARALLEL_TEST_PROJECTS")}'
|
|
default KOREBUILD_TEST_DNXCORE='${E("KOREBUILD_TEST_DNXCORE")}'
|
|
|
|
@{/*
|
|
|
|
k-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;
|
|
if (configs == null)
|
|
{
|
|
// Assume dnx451 only if none specified
|
|
targetFrameworks = new[] { "dnx451" };
|
|
}
|
|
else
|
|
{
|
|
targetFrameworks = configs.Keys;
|
|
}
|
|
|
|
// Currently only dnx* targets are supported. See aspnet/Universe#53
|
|
targetFrameworks = targetFrameworks.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))
|
|
{
|
|
string runtime;
|
|
if (IsLinux)
|
|
{
|
|
runtime = "mono";
|
|
|
|
// Work around issue with testing in parallel on Mono.
|
|
testArgs = " -parallel none";
|
|
}
|
|
else
|
|
{
|
|
runtime = "clr";
|
|
}
|
|
|
|
K("test" + testArgs, projectFolder, "default -runtime " + runtime);
|
|
}
|
|
else if (!IsLinux || !string.IsNullOrEmpty(KOREBUILD_TEST_DNXCORE))
|
|
{
|
|
K("test" + testArgs, projectFolder, "default -runtime coreclr");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
macro name='K' command='string' workingdir='string' dnvmUse='string'
|
|
k
|