Run tests for all configured platforms

This commit is contained in:
AndriySvyryd 2014-04-29 17:18:50 -07:00
parent 01daa33403
commit 85a9af832e
1 changed files with 41 additions and 17 deletions

View File

@ -11,23 +11,47 @@ projectFile=''
*/} */}
var projectFolder='${Path.GetDirectoryName(projectFile)}'
k command='test' workingdir='${projectFolder}' if='HasTestCommand(projectFile)'
functions
@{ @{
bool HasTestCommand(string projectFile)
{
var serializer = new JavaScriptSerializer(); var serializer = new JavaScriptSerializer();
var projectText = File.ReadAllText(projectFile); var projectText = File.ReadAllText(projectFile);
var project = (Dictionary<string, object>)serializer.DeserializeObject(projectText); var project = (Dictionary<string, object>)serializer.DeserializeObject(projectText);
object commandsObject; object commandsObject;
if (!project.TryGetValue("commands", out commandsObject)) var commands = project.TryGetValue("commands", out commandsObject)
return false; ? (Dictionary<string, object>)commandsObject
var commands = (Dictionary<string, object>)commandsObject; : new Dictionary<string, object>();
return commands.Keys.Contains("test"); if (commands.Keys.Contains("test"))
{
var projectFolder = Path.GetDirectoryName(projectFile);
object configsObject;
var configs = project.TryGetValue("configurations", out configsObject)
? (Dictionary<string, object>)configsObject
: new Dictionary<string, object>();
var targetFrameworks = configs.Keys.Where(k => k.StartsWith("net", StringComparison.OrdinalIgnoreCase)
|| k.StartsWith("k", StringComparison.OrdinalIgnoreCase));
var originalTargetFramework = Environment.GetEnvironmentVariable("TARGET_FRAMEWORK");
try
{
foreach (var framework in targetFrameworks)
{
// Workaround for aspnet/KRuntime#129
var frameworkString = framework.StartsWith("net", StringComparison.OrdinalIgnoreCase)
? ""
: framework;
Environment.SetEnvironmentVariable("TARGET_FRAMEWORK", frameworkString);
K("test", projectFolder);
}
} finally
{
Environment.SetEnvironmentVariable("TARGET_FRAMEWORK", originalTargetFramework);
} }
} }
}
macro name='K' command='string' workingdir='string'
k