From bba92d589e125f22b5f0d3eee2b85b6503ca0935 Mon Sep 17 00:00:00 2001
From: aboulart <37553604+aboulart@users.noreply.github.com>
Date: Tue, 10 Dec 2019 17:12:49 +0000
Subject: [PATCH 1/2] capnp fixes for Linux
---
.../FeatureSteps/CodeGeneratorSteps.cs | 31 +++++++++++++------
.../Util/InlineAssemblyCompiler.cs | 7 ++++-
CapnpC.CSharp.Generator/CapnpCompilation.cs | 11 ++++++-
.../CodeGen/CodeGenerator.cs | 2 +-
.../CapnpC.CSharp.MsBuild.Generation.csproj | 2 +-
5 files changed, 39 insertions(+), 14 deletions(-)
diff --git a/CapnpC.CSharp.Generator.Tests/FeatureSteps/CodeGeneratorSteps.cs b/CapnpC.CSharp.Generator.Tests/FeatureSteps/CodeGeneratorSteps.cs
index ee75822..8096b8e 100644
--- a/CapnpC.CSharp.Generator.Tests/FeatureSteps/CodeGeneratorSteps.cs
+++ b/CapnpC.CSharp.Generator.Tests/FeatureSteps/CodeGeneratorSteps.cs
@@ -27,16 +27,27 @@ namespace CapnpC.CSharp.Generator.Tests
return assembly.GetManifestResourceStream(urn);
}
- internal static bool IsCapnpExeInstalled()
+ internal static bool IsCapnpInstalled()
{
- using (var process = Process.Start("where", "capnp.exe"))
+ try
{
- if (process == null)
- Assert.Fail("Unable to start 'where'");
+ var startInfo = new ProcessStartInfo(CapnpCompilation.CapnpCompilerFilename, "--version");
+ startInfo.UseShellExecute = false;
+ startInfo.RedirectStandardOutput = true;
+ startInfo.RedirectStandardError = true;
- process.WaitForExit();
+ using (var process = Process.Start(startInfo))
+ {
+ Assert.IsNotNull(process, $"Unable to start '{CapnpCompilation.CapnpCompilerFilename}'");
- return process.ExitCode == 0;
+ process.WaitForExit();
+
+ return process.ExitCode == 0;
+ }
+ }
+ catch (Exception)
+ {
+ return false;
}
}
@@ -112,9 +123,9 @@ namespace CapnpC.CSharp.Generator.Tests
[Given(@"capnp\.exe is installed on my system")]
public void GivenCapnp_ExeIsInstalledOnMySystem()
{
- if (!IsCapnpExeInstalled())
+ if (!IsCapnpInstalled())
{
- Assert.Inconclusive("capnp.exe not found. Precondition of this test is not met.");
+ Assert.Inconclusive("Capnp compiler not found. Precondition of this test is not met.");
}
}
@@ -151,9 +162,9 @@ namespace CapnpC.CSharp.Generator.Tests
[Given(@"capnp\.exe is not installed on my system")]
public void GivenCapnp_ExeIsNotInstalledOnMySystem()
{
- if (IsCapnpExeInstalled())
+ if (IsCapnpInstalled())
{
- Assert.Inconclusive("capnp.exe found. Precondition of this test is not met.");
+ Assert.Inconclusive("Capnp compiler found. Precondition of this test is not met.");
}
}
diff --git a/CapnpC.CSharp.Generator.Tests/Util/InlineAssemblyCompiler.cs b/CapnpC.CSharp.Generator.Tests/Util/InlineAssemblyCompiler.cs
index 7abc30f..d7d877e 100644
--- a/CapnpC.CSharp.Generator.Tests/Util/InlineAssemblyCompiler.cs
+++ b/CapnpC.CSharp.Generator.Tests/Util/InlineAssemblyCompiler.cs
@@ -22,7 +22,12 @@ namespace CapnpC.CSharp.Generator.Tests.Util
string capnpRuntimePath = Path.GetFullPath(Path.Combine(
Assembly.GetExecutingAssembly().Location,
- @"..\..\..\..\..\Capnp.Net.Runtime\bin\Debug\netcoreapp2.1\Capnp.Net.Runtime.dll"));
+ "..", "..", "..", "..", "..",
+ "Capnp.Net.Runtime",
+ "bin",
+ "Debug",
+ "netcoreapp2.1",
+ "Capnp.Net.Runtime.dll"));
var capnpRuntimeMetadataRef = MetadataReference.CreateFromFile(capnpRuntimePath);
diff --git a/CapnpC.CSharp.Generator/CapnpCompilation.cs b/CapnpC.CSharp.Generator/CapnpCompilation.cs
index 3c01261..9e9f8d0 100644
--- a/CapnpC.CSharp.Generator/CapnpCompilation.cs
+++ b/CapnpC.CSharp.Generator/CapnpCompilation.cs
@@ -4,6 +4,7 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
[assembly: InternalsVisibleTo("CapnpC.CSharp.Generator.Tests")]
@@ -15,6 +16,14 @@ namespace CapnpC.CSharp.Generator
///
public static class CapnpCompilation
{
+ ///
+ /// Returns the basename of the capnp executable
+ ///
+ public static string CapnpCompilerFilename
+ {
+ get => RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "capnp.exe" : "capnp";
+ }
+
///
/// Generates C# code from given input stream
///
@@ -60,7 +69,7 @@ namespace CapnpC.CSharp.Generator
argList.Add($"-o-");
argList.AddRange(arguments);
- compiler.StartInfo.FileName = "capnp.exe";
+ compiler.StartInfo.FileName = CapnpCompilerFilename;
compiler.StartInfo.Arguments = string.Join(" ", argList);
compiler.StartInfo.UseShellExecute = false;
compiler.StartInfo.RedirectStandardOutput = true;
diff --git a/CapnpC.CSharp.Generator/CodeGen/CodeGenerator.cs b/CapnpC.CSharp.Generator/CodeGen/CodeGenerator.cs
index 6ac4d0a..e3c5db6 100644
--- a/CapnpC.CSharp.Generator/CodeGen/CodeGenerator.cs
+++ b/CapnpC.CSharp.Generator/CodeGen/CodeGenerator.cs
@@ -210,7 +210,7 @@
cu = cu.AddMembers(ns);
- return cu.NormalizeWhitespace().ToFullString();
+ return cu.NormalizeWhitespace(" ", Environment.NewLine).ToFullString();
}
public IReadOnlyList Generate()
diff --git a/CapnpC.CSharp.MsBuild.Generation/CapnpC.CSharp.MsBuild.Generation.csproj b/CapnpC.CSharp.MsBuild.Generation/CapnpC.CSharp.MsBuild.Generation.csproj
index eea4f4c..fc757d6 100644
--- a/CapnpC.CSharp.MsBuild.Generation/CapnpC.CSharp.MsBuild.Generation.csproj
+++ b/CapnpC.CSharp.MsBuild.Generation/CapnpC.CSharp.MsBuild.Generation.csproj
@@ -107,7 +107,7 @@
-
+
\ No newline at end of file
From c3cb2655de8a28f136eaedaa82e67b037ac9d9ce Mon Sep 17 00:00:00 2001
From: aboulart <37553604+aboulart@users.noreply.github.com>
Date: Tue, 10 Dec 2019 18:02:33 +0000
Subject: [PATCH 2/2] Set dotnet core version to 2.1
---
.../Capnp.Net.Runtime.Tests.Core21.csproj | 2 +-
.../CapnpC.CSharp.Generator.Tests.csproj | 2 +-
.../CapnpC.CSharp.MsBuild.Generation.Tests.csproj | 2 +-
appveyor.yml | 10 +++++-----
4 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/Capnp.Net.Runtime.Tests.Core21/Capnp.Net.Runtime.Tests.Core21.csproj b/Capnp.Net.Runtime.Tests.Core21/Capnp.Net.Runtime.Tests.Core21.csproj
index bc841b7..1541a85 100644
--- a/Capnp.Net.Runtime.Tests.Core21/Capnp.Net.Runtime.Tests.Core21.csproj
+++ b/Capnp.Net.Runtime.Tests.Core21/Capnp.Net.Runtime.Tests.Core21.csproj
@@ -1,7 +1,7 @@
- netcoreapp2.2
+ netcoreapp2.1
false
diff --git a/CapnpC.CSharp.Generator.Tests/CapnpC.CSharp.Generator.Tests.csproj b/CapnpC.CSharp.Generator.Tests/CapnpC.CSharp.Generator.Tests.csproj
index 410f90a..3ad4483 100644
--- a/CapnpC.CSharp.Generator.Tests/CapnpC.CSharp.Generator.Tests.csproj
+++ b/CapnpC.CSharp.Generator.Tests/CapnpC.CSharp.Generator.Tests.csproj
@@ -1,7 +1,7 @@
- netcoreapp2.2
+ netcoreapp2.1
CapnpC.CSharp.Generator.Tests
false
diff --git a/CapnpC.CSharp.MsBuild.Generation.Tests/CapnpC.CSharp.MsBuild.Generation.Tests.csproj b/CapnpC.CSharp.MsBuild.Generation.Tests/CapnpC.CSharp.MsBuild.Generation.Tests.csproj
index 4b48f59..8fc6607 100644
--- a/CapnpC.CSharp.MsBuild.Generation.Tests/CapnpC.CSharp.MsBuild.Generation.Tests.csproj
+++ b/CapnpC.CSharp.MsBuild.Generation.Tests/CapnpC.CSharp.MsBuild.Generation.Tests.csproj
@@ -1,7 +1,7 @@
- netcoreapp2.2
+ netcoreapp2.1
false
diff --git a/appveyor.yml b/appveyor.yml
index 7d8f6c5..b18d96d 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -56,13 +56,13 @@ artifacts:
type: NuGetPackage
clone_depth: 1
test_script:
- - cmd: vstest.console /logger:Appveyor /inIsolation CapnpC.CSharp.Generator.Tests\bin\Release\netcoreapp2.2\CapnpC.CSharp.Generator.Tests.dll
+ - cmd: vstest.console /logger:Appveyor /inIsolation CapnpC.CSharp.Generator.Tests\bin\Release\netcoreapp2.1\CapnpC.CSharp.Generator.Tests.dll
- cmd: cd %APPVEYOR_BUILD_FOLDER%\chocolatey\install
- cmd: choco install capnpc-csharp --source=".;https://chocolatey.org/api/v2" --force -y
- cmd: cd %APPVEYOR_BUILD_FOLDER%\install-test
- cmd: compile-test
- cmd: cd %APPVEYOR_BUILD_FOLDER%
- - cmd: vstest.console /logger:Appveyor /inIsolation CapnpC.CSharp.Generator.Tests\bin\Release\netcoreapp2.2\CapnpC.CSharp.Generator.Tests.dll
+ - cmd: vstest.console /logger:Appveyor /inIsolation CapnpC.CSharp.Generator.Tests\bin\Release\netcoreapp2.1\CapnpC.CSharp.Generator.Tests.dll
- cmd: choco uninstall capnpc-csharp -y
- cmd: cd %APPVEYOR_BUILD_FOLDER%\install-test
- cmd: notinstalled-test
@@ -73,13 +73,13 @@ test_script:
- cmd: choco uninstall capnpc-csharp-win-x86 -y
- cmd: notinstalled-test
- cmd: cd %APPVEYOR_BUILD_FOLDER%
- - cmd: vstest.console /logger:Appveyor /inIsolation CapnpC.CSharp.MsBuild.Generation.Tests\bin\Release\netcoreapp2.2\CapnpC.CSharp.MsBuild.Generation.Tests.dll
+ - cmd: vstest.console /logger:Appveyor /inIsolation CapnpC.CSharp.MsBuild.Generation.Tests\bin\Release\netcoreapp2.1\CapnpC.CSharp.MsBuild.Generation.Tests.dll
- cmd: msbuild -t:restore ./MsBuildGenerationTest/MsBuildGenerationTest.csproj /p:Configuration="Debug" /p:PackageReferenceVersion="%APPVEYOR_BUILD_VERSION%"
- cmd: msbuild ./MsBuildGenerationTest/MsBuildGenerationTest.sln /p:Configuration="Debug" /p:PackageReferenceVersion="%APPVEYOR_BUILD_VERSION%"
- cmd: vstest.console /logger:Appveyor /inIsolation Capnp.Net.Runtime.Tests\bin\Debug\net471\Capnp.Net.Runtime.Tests.Std20.dll
- cmd: vstest.console /logger:Appveyor /inIsolation Capnp.Net.Runtime.Tests\bin\Release\net471\Capnp.Net.Runtime.Tests.Std20.dll
- - cmd: vstest.console /logger:Appveyor /inIsolation Capnp.Net.Runtime.Tests.Core21\bin\Debug\netcoreapp2.2\Capnp.Net.Runtime.Tests.Core21.dll
- - cmd: vstest.console /logger:Appveyor /inIsolation Capnp.Net.Runtime.Tests.Core21\bin\Release\netcoreapp2.2\Capnp.Net.Runtime.Tests.Core21.dll
+ - cmd: vstest.console /logger:Appveyor /inIsolation Capnp.Net.Runtime.Tests.Core21\bin\Debug\netcoreapp2.1\Capnp.Net.Runtime.Tests.Core21.dll
+ - cmd: vstest.console /logger:Appveyor /inIsolation Capnp.Net.Runtime.Tests.Core21\bin\Release\netcoreapp2.1\Capnp.Net.Runtime.Tests.Core21.dll
on_finish :
# any cleanup in here
deploy: