[dotnet] Port the fsharplibrary project to .NET (#9339)
This commit is contained in:
Родитель
d96827cd89
Коммит
19e53376dd
|
@ -138,6 +138,44 @@ namespace Xamarin.Tests {
|
||||||
Assert.That (Path.Combine (asm_dir, "es", "EmbeddedResources.resources.dll"), Does.Exist, "es");
|
Assert.That (Path.Combine (asm_dir, "es", "EmbeddedResources.resources.dll"), Does.Exist, "es");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestCase ("iOS")]
|
||||||
|
[TestCase ("tvOS")]
|
||||||
|
[TestCase ("watchOS")]
|
||||||
|
[TestCase ("macOS")]
|
||||||
|
public void BuildFSharpLibraryTest (string platform)
|
||||||
|
{
|
||||||
|
var assemblyName = "fsharplibrary";
|
||||||
|
var dotnet_bindings_dir = Path.Combine (Configuration.SourceRoot, "tests", assemblyName, "dotnet");
|
||||||
|
var project_dir = Path.Combine (dotnet_bindings_dir, platform);
|
||||||
|
var project_path = Path.Combine (project_dir, $"{assemblyName}.fsproj");
|
||||||
|
Clean (project_path);
|
||||||
|
CopyDotNetSupportingFiles (dotnet_bindings_dir);
|
||||||
|
var result = DotNet.AssertBuild (project_path, verbosity);
|
||||||
|
var lines = result.StandardOutput.ToString ().Split ('\n');
|
||||||
|
// Find the resulting binding assembly from the build log
|
||||||
|
var assemblies = lines.
|
||||||
|
Select (v => v.Trim ()).
|
||||||
|
Where (v => {
|
||||||
|
if (v.Length < 10)
|
||||||
|
return false;
|
||||||
|
if (v [0] != '/')
|
||||||
|
return false;
|
||||||
|
if (!v.EndsWith ($"{assemblyName}.dll", StringComparison.Ordinal))
|
||||||
|
return false;
|
||||||
|
if (!v.Contains ("/bin/", StringComparison.Ordinal))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
Assert.That (assemblies, Is.Not.Empty, "Assemblies");
|
||||||
|
// Make sure there's no other assembly confusing our logic
|
||||||
|
Assert.That (assemblies.Distinct ().Count (), Is.EqualTo (1), "Unique assemblies");
|
||||||
|
var asm = assemblies.First ();
|
||||||
|
Assert.That (asm, Does.Exist, "Assembly existence");
|
||||||
|
// Verify that there's no resources in the assembly
|
||||||
|
var ad = AssemblyDefinition.ReadAssembly (asm, new ReaderParameters { ReadingMode = ReadingMode.Deferred });
|
||||||
|
Assert.That (ad.MainModule.Resources.Count (), Is.EqualTo (2), "2 resources"); // There are 2 embedded resources by default by the F# compiler.
|
||||||
|
}
|
||||||
|
|
||||||
void CopyDotNetSupportingFiles (string targetDirectory)
|
void CopyDotNetSupportingFiles (string targetDirectory)
|
||||||
{
|
{
|
||||||
var srcDirectory = Path.Combine (Configuration.SourceRoot, "tests", "dotnet");
|
var srcDirectory = Path.Combine (Configuration.SourceRoot, "tests", "dotnet");
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
global.json
|
||||||
|
NuGet.config
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project Sdk="Microsoft.iOS.Sdk">
|
||||||
|
<Import Project="..\shared.targets" />
|
||||||
|
</Project>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project Sdk="Microsoft.macOS.Sdk">
|
||||||
|
<Import Project="..\shared.targets" />
|
||||||
|
</Project>
|
|
@ -0,0 +1,21 @@
|
||||||
|
<Project>
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net5.0</TargetFramework>
|
||||||
|
<SignAssembly>true</SignAssembly>
|
||||||
|
<GenerateTailCalls>true</GenerateTailCalls>
|
||||||
|
|
||||||
|
<RootTestsDirectory>$(MSBuildThisFileDirectory)\..\..</RootTestsDirectory>
|
||||||
|
<FSharpLibraryDirectory>$(RootTestsDirectory)\fsharplibrary</FSharpLibraryDirectory>
|
||||||
|
|
||||||
|
<AssemblyOriginatorKeyFile>$(RootTestsDirectory)\..\product.snk</AssemblyOriginatorKeyFile>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="NUnitLite" Version="3.12.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="$(FSharpLibraryDirectory)\AssemblyInfo.fs" />
|
||||||
|
<Compile Include="$(FSharpLibraryDirectory)\ObjCRuntime\RegistrarTest.fs" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project Sdk="Microsoft.tvOS.Sdk">
|
||||||
|
<Import Project="..\shared.targets" />
|
||||||
|
</Project>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project Sdk="Microsoft.watchOS.Sdk">
|
||||||
|
<Import Project="..\shared.targets" />
|
||||||
|
</Project>
|
Загрузка…
Ссылка в новой задаче