public void CanRunSimpleProgram() { var program = @" class Dummy { static void Main() { System.Console.WriteLine(""Hello!""); } } "; var output = new CSharpRunner().Run(new ProgramDescripton() { new SourceFileDescription() { Contents = program, File = new NPath("Main.cs") } }); CollectionAssert.AreEqual(new[] { "Hello!" }, output); }
public string[] Run(JamRunnerInstructions instructions) { var tempDir = NPath.CreateTempDirectory("jamrunner"); instructions.WorkingDir = instructions.WorkingDir ?? tempDir; foreach (var f in instructions.JamfilesToCreate) { instructions.WorkingDir.Combine(f.File).WriteAllText(f.Contents); } string startupArg = ""; if (instructions.CSharpFiles.Any()) { var csharpExe = tempDir.Combine("csharp.exe"); CSharpRunner.Compile(instructions.CSharpFiles, JamToCSharpConverter.RuntimeDependencies, csharpExe); startupArg += "-m " + csharpExe.InQuotes(); } var jamPath = Environment.OSVersion.Platform == PlatformID.Win32NT ? "external/jamplus/bin/win32/jam.exe" : "external/jamplus/macosx64/jam"; var jamBinary = ConverterRoot.Combine(jamPath); startupArg += " -f " + (instructions.JamFileToInvokeOnStartup ?? instructions.JamfilesToCreate[0].File.FileName); startupArg += " -C " + instructions.WorkingDir; startupArg += " " + instructions.AdditionalArg; Console.WriteLine("args: " + startupArg); var execute = Shell.Execute(jamBinary, startupArg); var lines = execute.Split(new[] { Environment.NewLine }, StringSplitOptions.None); var relevance = RelevantLinesFrom(lines); return(relevance.ToArray()); }