diff --git a/build/_k-test.shade b/build/_k-test.shade index 6182aeb514..4edd44951e 100644 --- a/build/_k-test.shade +++ b/build/_k-test.shade @@ -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 projectText = File.ReadAllText(projectFile); + var project = (Dictionary)serializer.DeserializeObject(projectText); + + object commandsObject; + var commands = project.TryGetValue("commands", out commandsObject) + ? (Dictionary)commandsObject + : new Dictionary(); + + if (commands.Keys.Contains("test")) + { + var projectFolder = Path.GetDirectoryName(projectFile); + + object configsObject; + var configs = project.TryGetValue("configurations", out configsObject) + ? (Dictionary)configsObject + : new Dictionary(); + + var targetFrameworks = configs.Keys.Where(k => k.StartsWith("net", StringComparison.OrdinalIgnoreCase) + || k.StartsWith("k", StringComparison.OrdinalIgnoreCase)); + + var originalTargetFramework = Environment.GetEnvironmentVariable("TARGET_FRAMEWORK"); + try { - var serializer = new JavaScriptSerializer(); - var projectText = File.ReadAllText(projectFile); - var project = (Dictionary)serializer.DeserializeObject(projectText); - - object commandsObject; - if (!project.TryGetValue("commands", out commandsObject)) - return false; - var commands = (Dictionary)commandsObject; - - return commands.Keys.Contains("test"); + 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 \ No newline at end of file