Skip to content

Commit

Permalink
(#380) IntegrationTests: cleanup and run all
Browse files Browse the repository at this point in the history
  • Loading branch information
ForNeVeR committed Jul 16, 2023
1 parent 3d36dae commit 32d82bd
Show file tree
Hide file tree
Showing 9 changed files with 50 additions and 510 deletions.
18 changes: 4 additions & 14 deletions Cesium.IntegrationTests/Cesium.IntegrationTests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,26 +8,16 @@
</PropertyGroup>

<ItemGroup>
<Content Include="**/*.c">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="**/*.h">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Remove="bin/**/*.c" />
<Content Remove="bin/**/*.h" />
<None Remove="xunit.runner.json" />
<None Include="**/*.c"/>
<None Include="**/*.h"/>
</ItemGroup>

<ItemGroup>
<PackageReference Include="JetBrains.Annotations" Version="2022.1.0" />
<PackageReference Include="MedallionShell" Version="1.6.2" />
<PackageReference Include="Meziantou.Xunit.ParallelTestFramework" Version="2.1.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
<PackageReference Include="xunit" Version="2.4.1" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Cesium.TestAdapter\Cesium.TestAdapter.csproj" />
<PackageReference Include="xunit" Version="2.4.2" />
</ItemGroup>

</Project>
12 changes: 6 additions & 6 deletions Cesium.IntegrationTests/ExecUtil.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace Cesium.IntegrationTests;
internal static class ExecUtil
{
public static void RunToSuccess(
ITestOutputHelper output,
ITestOutputHelper? output,
string executable,
string workingDirectory,
string[] args)
Expand All @@ -17,22 +17,22 @@ public static void RunToSuccess(
}

public static CommandResult Run(
ITestOutputHelper output,
ITestOutputHelper? output,
string executable,
string workingDirectory,
string[] args)
{
output.WriteLine($"$ {executable} {string.Join(" ", args)}");
output?.WriteLine($"$ {executable} {string.Join(" ", args)}");
var result = Command.Run(executable, args, o => o.WorkingDirectory(workingDirectory)).Result;
foreach (var s in result.StandardOutput.Split("\n"))
output.WriteLine(s.TrimEnd());
output?.WriteLine(s.TrimEnd());
if (result.StandardError.Trim() != "")
{
foreach (var s in result.StandardError.Split("\n"))
output.WriteLine($"[ERR] {s.TrimEnd()}");
output?.WriteLine($"[ERR] {s.TrimEnd()}");
}

output.WriteLine($"Command exit code: {result.ExitCode}");
output?.WriteLine($"Command exit code: {result.ExitCode}");
return result;
}
}
13 changes: 11 additions & 2 deletions Cesium.IntegrationTests/IntegrationTestContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
namespace Cesium.IntegrationTests;

[UsedImplicitly]
public class IntegrationTestContext
public class IntegrationTestContext : IDisposable
{
public readonly string SolutionRootPath = GetSolutionRoot();
public static readonly string SolutionRootPath = GetSolutionRoot();
public const string BuildConfiguration = "Release";
private readonly object _lock = new();
private bool _initialized;
Expand Down Expand Up @@ -40,6 +40,15 @@ public void EnsureInitialized(ITestOutputHelper output)
}
}

public void Dispose()
{
ExecUtil.RunToSuccess(null, "dotnet", SolutionRootPath, new[]
{
"build-server",
"shutdown"
});
}

private static string GetSolutionRoot()
{
var assemblyDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
Expand Down
37 changes: 27 additions & 10 deletions Cesium.IntegrationTests/IntegrationTestRunner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,24 @@ namespace Cesium.IntegrationTests;
public class IntegrationTestRunner : IClassFixture<IntegrationTestContext>
{
private readonly ITestOutputHelper _output;
private readonly string _solutionRootPath;
public IntegrationTestRunner(IntegrationTestContext context, ITestOutputHelper output)
{
_output = output;
context.EnsureInitialized(output);
_solutionRootPath = context.SolutionRootPath;
}

public static IEnumerable<object[]> TestCaseProvider()
{
var testCaseDirectory = Path.Combine(IntegrationTestContext.SolutionRootPath, "Cesium.IntegrationTests");
var cFiles = Directory.EnumerateFileSystemEntries(testCaseDirectory, "*.c", SearchOption.AllDirectories);
return cFiles
.Where(file => !file.EndsWith(".ignore.c"))
.Select(file => Path.GetRelativePath(testCaseDirectory, file))
.Select(path => new object[] { path });
}

[Theory]
[InlineData("arithmetics.c")]
[MemberData(nameof(TestCaseProvider))]
public void TestCompiler(string relativeFilePath)
{
var outRootPath = CreateTempDir();
Expand All @@ -28,7 +36,10 @@ public void TestCompiler(string relativeFilePath)
Directory.CreateDirectory(binDirPath);
Directory.CreateDirectory(objDirPath);

var sourceFilePath = Path.Combine(_solutionRootPath, "Cesium.IntegrationTests", relativeFilePath);
var sourceFilePath = Path.Combine(
IntegrationTestContext.SolutionRootPath,
"Cesium.IntegrationTests",
relativeFilePath);

var nativeExecutable = BuildExecutableWithNativeCompiler(binDirPath, objDirPath, sourceFilePath);
var nativeResult = ExecUtil.Run(_output, nativeExecutable, outRootPath, Array.Empty<string>());
Expand All @@ -38,7 +49,9 @@ public void TestCompiler(string relativeFilePath)
var managedResult = ExecUtil.Run(_output, "dotnet", outRootPath, new[] { managedExecutable }); // TODO: Only .NET for now
Assert.Equal(42, managedResult.ExitCode);

Assert.Equal(nativeResult.StandardOutput, managedResult.StandardOutput);
Assert.Equal(
nativeResult.StandardOutput.ReplaceLineEndings("\n"),
managedResult.StandardOutput.ReplaceLineEndings("\n"));
Assert.Empty(nativeResult.StandardError);
Assert.Empty(managedResult.StandardError);
}
Expand All @@ -48,12 +61,16 @@ public void TestCompiler(string relativeFilePath)
}
}

private static readonly object _tempDirCreator = new();
private string CreateTempDir()
{
var path = Path.GetTempFileName();
File.Delete(path);
Directory.CreateDirectory(path);
return path;
lock (_tempDirCreator)
{
var path = Path.GetTempFileName();
File.Delete(path);
Directory.CreateDirectory(path);
return path;
}
}

private string BuildExecutableWithNativeCompiler(
Expand Down Expand Up @@ -130,7 +147,7 @@ private string BuildExecutableWithCesium(
"run",
"--no-build",
"--configuration", IntegrationTestContext.BuildConfiguration,
"--project", Path.Combine(_solutionRootPath, "Cesium.Compiler"),
"--project", Path.Combine(IntegrationTestContext.SolutionRootPath, "Cesium.Compiler"),
"--",
"--nologo",
sourceFilePath,
Expand Down
164 changes: 0 additions & 164 deletions Cesium.IntegrationTests/Run-Tests.ps1

This file was deleted.

13 changes: 0 additions & 13 deletions Cesium.TestAdapter/Cesium.TestAdapter.csproj

This file was deleted.

Loading

0 comments on commit 32d82bd

Please sign in to comment.