aspnetcore/build/_k-test.shade

67 lines
2.3 KiB
Plaintext

use namespace='System.Web.Script.Serialization'
use assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
use import="Environment"
default NO_PARALLEL_TEST_PROJECTS='${E("NO_PARALLEL_TEST_PROJECTS")}'
@{/*
k-test
Run unit tests in your project.
projectFile=''
Required. Path to the test project.json to execute
*/}
@{
var serializer = new JavaScriptSerializer();
var projectText = File.ReadAllText(projectFile);
var project = (Dictionary<string, object>)serializer.DeserializeObject(projectText);
object commandsObject;
var commands = project.TryGetValue("commands", out commandsObject)
? (Dictionary<string, object>)commandsObject
: new Dictionary<string, object>();
if (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)','));
}
object configsObject;
var configs = project.TryGetValue("frameworks", out configsObject)
? (Dictionary<string, object>)configsObject
: new Dictionary<string, object>
{
{ "dnx451", new Dictionary<string, object>() } // Assume dnx451 only if none specified
};
// Currently only dnx* targets are supported. See aspnet/Universe#53
var targetFrameworks = configs.Keys.Where(k => k.StartsWith("dnx", StringComparison.OrdinalIgnoreCase));
foreach (var framework in targetFrameworks)
{
var testArgs = (IsMono || noParallelTestProjects.Contains(projectName)) ? " -parallel none" : "";
if (!framework.StartsWith("dnxcore", StringComparison.OrdinalIgnoreCase))
{
K(("test" + testArgs), projectFolder, "");
}
else if (!IsMono)
{
K(("test" + testArgs), projectFolder, "default -runtime CoreCLR");
}
}
}
}
macro name='K' command='string' workingdir='string' dnvmUse='string'
k