Skip to content

Commit 02a05a3

Browse files
committed
Test cleanup
1 parent 0ad30b8 commit 02a05a3

File tree

6 files changed

+90
-64
lines changed

6 files changed

+90
-64
lines changed

src/Dotnet.Script.Shared.Tests/InteractiveRunnerTestsBase.cs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
1-
using Dotnet.Script.Core;
2-
using Dotnet.Script.DependencyModel.Runtime;
3-
using Dotnet.Script.DependencyModel.Logging;
4-
using System.Threading.Tasks;
5-
using Xunit;
1+
using System;
62
using System.IO;
7-
using System.Text;
8-
using System;
9-
using Microsoft.CodeAnalysis.Text;
3+
using System.Threading.Tasks;
4+
using Dotnet.Script.Core;
105
using Dotnet.Script.DependencyModel.Context;
11-
using Dotnet.Script.DependencyModel.Environment;
6+
using Dotnet.Script.DependencyModel.Runtime;
7+
using Microsoft.CodeAnalysis.Text;
8+
using Xunit;
129
using Xunit.Abstractions;
1310

1411
namespace Dotnet.Script.Shared.Tests

src/Dotnet.Script.Tests/PackageSourceTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ public void ShouldHandleSpecifyingPackageSourceWhenEvaluatingCode()
2929
var fixture = "ScriptPackage/WithNoNuGetConfig";
3030
var pathToScriptPackages = TestPathUtils.GetPathToScriptPackages(fixture);
3131
var code = @"#load \""nuget:ScriptPackageWithMainCsx,1.0.0\"" SayHello();";
32-
var result = ScriptTestRunner.Default.Execute("-s", pathToScriptPackages, "eval", $"\"{code}\"");
32+
var result = ScriptTestRunner.Default.Execute($"-s {pathToScriptPackages} eval \"{code}\"");
33+
//var result = ScriptTestRunner.Default.Execute("-s", pathToScriptPackages, "eval", $"\"{code}\"");
3334
Assert.Contains("Hello", result.output);
3435
Assert.Equal(0, result.exitCode);
3536
}

src/Dotnet.Script.Tests/ProcessHelper.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,39 @@ public static (string output, int exitcode) RunAndCaptureOutput(string fileName,
3939

4040
return (output.Trim(), process.ExitCode);
4141
}
42+
43+
public static (string output, int exitcode) RunAndCaptureOutput2(string fileName, string arguments, string workingDirectory = null)
44+
{
45+
var startInfo = new ProcessStartInfo(fileName, arguments)
46+
{
47+
RedirectStandardOutput = true,
48+
RedirectStandardError = true,
49+
CreateNoWindow = true,
50+
UseShellExecute = false,
51+
WorkingDirectory = workingDirectory ?? Directory.GetCurrentDirectory()
52+
};
53+
54+
var process = new Process
55+
{
56+
StartInfo = startInfo
57+
};
58+
59+
try
60+
{
61+
process.Start();
62+
}
63+
catch
64+
{
65+
Console.WriteLine($"Failed to launch '{fileName}' with args, '{arguments}'");
66+
return (null, -1);
67+
}
68+
69+
var output = process.StandardOutput.ReadToEnd();
70+
output += process.StandardError.ReadToEnd();
71+
72+
process.WaitForExit();
73+
74+
return (output.Trim(), process.ExitCode);
75+
}
4276
}
4377
}
Lines changed: 30 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
using System.IO;
2-
using Xunit;
3-
using Newtonsoft.Json;
4-
using Newtonsoft.Json.Linq;
52
using Dotnet.Script.DependencyModel.Environment;
3+
using Newtonsoft.Json.Linq;
4+
using Xunit;
65

76

87
namespace Dotnet.Script.Tests
@@ -20,9 +19,10 @@ public ScaffoldingTests()
2019
public void ShouldInitializeScriptFolder()
2120
{
2221
using (var scriptFolder = new DisposableFolder())
23-
{
24-
var result = Execute("init", scriptFolder.Path);
25-
Assert.Equal(0, result.exitCode);
22+
{
23+
var (output, exitCode) = ScriptTestRunner.Default.Execute("init", scriptFolder.Path);
24+
25+
Assert.Equal(0, exitCode);
2626
Assert.True(File.Exists(Path.Combine(scriptFolder.Path, "main.csx")));
2727
Assert.True(File.Exists(Path.Combine(scriptFolder.Path, "omnisharp.json")));
2828
Assert.True(File.Exists(Path.Combine(scriptFolder.Path, ".vscode", "launch.json")));
@@ -34,9 +34,12 @@ public void ShouldCreateEnableScriptNugetReferencesSetting()
3434
{
3535
using (var scriptFolder = new DisposableFolder())
3636
{
37-
var result = Execute("init", scriptFolder.Path);
38-
Assert.Equal(0, result.exitCode);
37+
var (output, exitCode) = ScriptTestRunner.Default.Execute("init", scriptFolder.Path);
38+
39+
Assert.Equal(0, exitCode);
40+
3941
dynamic settings = JObject.Parse(File.ReadAllText(Path.Combine(scriptFolder.Path, "omnisharp.json")));
42+
4043
Assert.True(settings.script.enableScriptNuGetReferences.Value);
4144
}
4245
}
@@ -46,9 +49,12 @@ public void ShouldCreateDefaultTargetFrameworkSetting()
4649
{
4750
using (var scriptFolder = new DisposableFolder())
4851
{
49-
var result = Execute("init", scriptFolder.Path);
52+
var result = ScriptTestRunner.Default.Execute("init", scriptFolder.Path);
53+
5054
Assert.Equal(0, result.exitCode);
55+
5156
dynamic settings = JObject.Parse(File.ReadAllText(Path.Combine(scriptFolder.Path, "omnisharp.json")));
57+
5258
Assert.Equal(_scriptEnvironment.TargetFramework, settings.script.defaultTargetFramework.Value);
5359
}
5460
}
@@ -58,9 +64,9 @@ public void ShouldCreateNewScript()
5864
{
5965
using (var scriptFolder = new DisposableFolder())
6066
{
61-
var result = Execute("new script.csx", scriptFolder.Path);
62-
63-
Assert.Equal(0, result.exitCode);
67+
var (output, exitCode) = ScriptTestRunner.Default.Execute("new script.csx", scriptFolder.Path);
68+
69+
Assert.Equal(0, exitCode);
6470
Assert.True(File.Exists(Path.Combine(scriptFolder.Path, "script.csx")));
6571
}
6672
}
@@ -70,9 +76,9 @@ public void ShouldCreateNewScriptWithExtension()
7076
{
7177
using (var scriptFolder = new DisposableFolder())
7278
{
73-
var result = Execute("new anotherScript", scriptFolder.Path);
74-
75-
Assert.Equal(0, result.exitCode);
79+
var (output, exitCode) = ScriptTestRunner.Default.Execute("new anotherScript", scriptFolder.Path);
80+
81+
Assert.Equal(0, exitCode);
7682
Assert.True(File.Exists(Path.Combine(scriptFolder.Path, "anotherScript.csx")));
7783
}
7884
}
@@ -82,9 +88,9 @@ public void ShouldInitFolderWithCustomFileName()
8288
{
8389
using (var scriptFolder = new DisposableFolder())
8490
{
85-
var result = Execute("init custom.csx", scriptFolder.Path);
91+
var (output, exitCode) = ScriptTestRunner.Default.Execute("init custom.csx", scriptFolder.Path);
8692

87-
Assert.Equal(0, result.exitCode);
93+
Assert.Equal(0, exitCode);
8894
Assert.True(File.Exists(Path.Combine(scriptFolder.Path, "custom.csx")));
8995
}
9096
}
@@ -94,9 +100,9 @@ public void ShouldInitFolderWithCustomFileNameAndExtension()
94100
{
95101
using (var scriptFolder = new DisposableFolder())
96102
{
97-
var result = Execute("init anotherCustom", scriptFolder.Path);
103+
var (output, exitCode) = ScriptTestRunner.Default.Execute("init anotherCustom", scriptFolder.Path);
98104

99-
Assert.Equal(0, result.exitCode);
105+
Assert.Equal(0, exitCode);
100106
Assert.True(File.Exists(Path.Combine(scriptFolder.Path, "anotherCustom.csx")));
101107
}
102108
}
@@ -106,8 +112,8 @@ public void ShouldNotCreateDefaultFileForFolderWithExistingScriptFiles()
106112
{
107113
using (var scriptFolder = new DisposableFolder())
108114
{
109-
Execute("init custom.csx", scriptFolder.Path);
110-
Execute("init", scriptFolder.Path);
115+
ScriptTestRunner.Default.Execute("init custom.csx", scriptFolder.Path);
116+
ScriptTestRunner.Default.Execute("init", scriptFolder.Path);
111117
Assert.False(File.Exists(Path.Combine(scriptFolder.Path, "main.csx")));
112118
}
113119
}
@@ -116,46 +122,21 @@ public void ShouldNotCreateDefaultFileForFolderWithExistingScriptFiles()
116122
public void ShouldUpdatePathToDotnetScript()
117123
{
118124
using (var scriptFolder = new DisposableFolder())
119-
{
120-
Execute("init", scriptFolder.Path);
125+
{
126+
ScriptTestRunner.Default.Execute("init", scriptFolder.Path);
121127
var pathToLaunchConfiguration = Path.Combine(scriptFolder.Path, ".vscode/launch.json");
122128
var config = JObject.Parse(File.ReadAllText(pathToLaunchConfiguration));
123129

124130
config.SelectToken("configurations[0].args[1]").Replace("InvalidPath/dotnet-script.dll,");
125131

126132
File.WriteAllText(pathToLaunchConfiguration, config.ToString());
127133

128-
var result = Execute("init", scriptFolder.Path);
134+
ScriptTestRunner.Default.Execute("init", scriptFolder.Path);
129135

130136
config = JObject.Parse(File.ReadAllText(pathToLaunchConfiguration));
131137
Assert.NotEqual("InvalidPath/dotnet-script.dll", config.SelectToken("configurations[0].args[1]").Value<string>());
132138
}
133139
}
134-
135-
/// <summary>
136-
/// Use this if you need to debug.
137-
/// </summary>
138-
private static int ExecuteInProcess(params string[] args)
139-
{
140-
return Program.Main(args);
141-
}
142-
143-
private (string output, int exitCode) Execute(string args, string workingDirectory)
144-
{
145-
var result = ProcessHelper.RunAndCaptureOutput("dotnet", GetDotnetScriptArguments(args), workingDirectory);
146-
return result;
147-
}
148-
149-
private string[] GetDotnetScriptArguments(string args)
150-
{
151-
string configuration;
152-
#if DEBUG
153-
configuration = "Debug";
154-
#else
155-
configuration = "Release";
156-
#endif
157-
return new[] { "exec", Path.Combine(Directory.GetCurrentDirectory(), "..", "..", "..", "..", "Dotnet.Script", "bin", configuration, _scriptEnvironment.TargetFramework, "dotnet-script.dll"), args };
158-
}
159140
}
160141

161142
}

src/Dotnet.Script.Tests/ScriptExecutionTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public ScriptExecutionTests(ITestOutputHelper testOutputHelper)
2121
[Fact]
2222
public void ShouldExecuteHelloWorld()
2323
{
24-
var result = ScriptTestRunner.Default.ExecuteFixture("Helloworld");
24+
var result = ScriptTestRunner.Default.ExecuteFixture("HelloWorld");
2525
Assert.Contains("Hello World", result.output);
2626
}
2727

src/Dotnet.Script.Tests/ScriptTestRunner.cs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ private ScriptTestRunner()
1818
_scriptEnvironment = ScriptEnvironment.Default;
1919
Program.CreateLogFactory = (verbosity, debugMode) => TestOutputHelper.CreateTestLogFactory();
2020
}
21-
22-
23-
public (string output, int exitCode) Execute(params string[] arguments)
21+
22+
public (string output, int exitCode) Execute(string arguments, string workingDirectory = null)
2423
{
25-
var result = ProcessHelper.RunAndCaptureOutput("dotnet", GetDotnetScriptArguments(arguments));
24+
var result = ProcessHelper.RunAndCaptureOutput2("dotnet", GetDotnetScriptArguments2(arguments), workingDirectory);
2625
return result;
2726
}
2827

28+
2929
public int ExecuteInProcess(params string[] arguments)
3030
{
3131
return Program.Main(arguments ?? Array.Empty<string>());
@@ -81,5 +81,18 @@ private string[] GetDotnetScriptArguments(params string[] arguments)
8181
}
8282
return allArguments.ToArray();
8383
}
84+
85+
private string GetDotnetScriptArguments2(string arguments)
86+
{
87+
string configuration;
88+
#if DEBUG
89+
configuration = "Debug";
90+
#else
91+
configuration = "Release";
92+
#endif
93+
var allArgs = $"exec {Path.Combine(Directory.GetCurrentDirectory(), "..", "..", "..", "..", "Dotnet.Script", "bin", configuration, _scriptEnvironment.TargetFramework, "dotnet-script.dll")} {arguments}";
94+
95+
return allArgs;
96+
}
8497
}
8598
}

0 commit comments

Comments
 (0)