[tests] Port bindings-test2 to .NET.
This commit is contained in:
Родитель
d883eb4725
Коммит
8814e8ca24
|
@ -0,0 +1,3 @@
|
|||
global.json
|
||||
NuGet.config
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.iOS.Sdk">
|
||||
<PropertyGroup>
|
||||
<NativeLibName>ios-fat</NativeLibName>
|
||||
<PlatformName>iOS</PlatformName>
|
||||
</PropertyGroup>
|
||||
<Import Project="..\shared.targets" />
|
||||
</Project>
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.macOS.Sdk">
|
||||
<PropertyGroup>
|
||||
<NativeLibName>macos</NativeLibName>
|
||||
<PlatformName>macOS</PlatformName>
|
||||
</PropertyGroup>
|
||||
<Import Project="..\shared.targets" />
|
||||
</Project>
|
|
@ -0,0 +1,56 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<RootNamespace>bindingstest2</RootNamespace>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>..\..\..\..\product.snk</AssemblyOriginatorKeyFile>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<IsBindingProject>true</IsBindingProject>
|
||||
|
||||
<RootTestsDirectory>$(MSBuildThisFileDirectory)\..\..</RootTestsDirectory>
|
||||
<BindingsTest2Directory>$(RootTestsDirectory)\bindings-test2</BindingsTest2Directory>
|
||||
<TestLibrariesDirectory>$(RootTestsDirectory)\test-libraries</TestLibrariesDirectory>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="NUnitLite" Version="3.12.0" />
|
||||
|
||||
<ProjectReference Include="$(RootTestsDirectory)\bindings-test\dotnet\$(PlatformName)\bindings-test.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ObjcBindingApiDefinition Include="$(BindingsTest2Directory)\ApiDefinition.cs" />
|
||||
<ObjcBindingApiDefinition Include="$(BindingsTest2Directory)\ApiProtocol.cs" />
|
||||
<ObjcBindingCoreSource Include="$(BindingsTest2Directory)\StructsAndEnums.cs" />
|
||||
<ObjcBindingNativeLibrary Include="$(TestLibrariesDirectory)\.libs\$(NativeLibName)\libtest2.a">
|
||||
<Link>libtest2.a</Link>
|
||||
</ObjcBindingNativeLibrary>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="$(BindingsTest2Directory)\libtest2.linkwith.cs">
|
||||
<DependentUpon>libtest2.a</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="$(BindingsTest2Directory)\BindingTest.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="$(TestLibrariesDirectory)\libtest2.m">
|
||||
<Link>libtest2.m</Link>
|
||||
</None>
|
||||
<None Include="$(TestLibrariesDirectory)\libtest2.h">
|
||||
<Link>libtest2.h</Link>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<GeneratedTestInput Include="$(TestLibrariesDirectory)\*.m" />
|
||||
<GeneratedTestInput Include="$(TestLibrariesDirectory)\*.h" />
|
||||
<GeneratedTestInput Include="$(TestLibrariesDirectory)\*.cs" />
|
||||
<GeneratedTestInput Include="$(TestLibrariesDirectory)\Makefile" />
|
||||
<GeneratedTestOutput Include="$(TestLibrariesDirectory)\.libs\$(NativeLibName)\libtest2.a" />
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="BuildTestLibraries" Inputs="@(GeneratedTestInput)" Outputs="@(GeneratedTestOutput)" BeforeTargets="BeforeBuild">
|
||||
<Exec Command="make -j8 -C $(TestLibrariesDirectory)" />
|
||||
</Target>
|
||||
</Project>
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.tvOS.Sdk">
|
||||
<PropertyGroup>
|
||||
<NativeLibName>tvos-fat</NativeLibName>
|
||||
<PlatformName>tvOS</PlatformName>
|
||||
</PropertyGroup>
|
||||
<Import Project="..\shared.targets" />
|
||||
</Project>
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.watchOS.Sdk">
|
||||
<PropertyGroup>
|
||||
<NativeLibName>watchos-fat</NativeLibName>
|
||||
<PlatformName>watchOS</PlatformName>
|
||||
</PropertyGroup>
|
||||
<Import Project="..\shared.targets" />
|
||||
</Project>
|
|
@ -217,6 +217,47 @@ namespace Xamarin.Tests {
|
|||
Assert.That (ad.MainModule.Resources [0].Name, Is.EqualTo ("libtest.a"), "libtest.a");
|
||||
}
|
||||
|
||||
[TestCase ("iOS")]
|
||||
[TestCase ("tvOS")]
|
||||
[TestCase ("watchOS")]
|
||||
[TestCase ("macOS")]
|
||||
public void BuildBindingsTest2 (string platform)
|
||||
{
|
||||
var assemblyName = "bindings-test2";
|
||||
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}.csproj");
|
||||
|
||||
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 one resource in the binding assembly, and its name
|
||||
var ad = AssemblyDefinition.ReadAssembly (asm, new ReaderParameters { ReadingMode = ReadingMode.Deferred });
|
||||
Assert.That (ad.MainModule.Resources.Count, Is.EqualTo (1), "1 resource");
|
||||
Assert.That (ad.MainModule.Resources [0].Name, Is.EqualTo ("libtest2.a"), "libtest2.a");
|
||||
}
|
||||
|
||||
void CopyDotNetSupportingFiles (string targetDirectory)
|
||||
{
|
||||
var srcDirectory = Path.Combine (Configuration.SourceRoot, "tests", "dotnet");
|
||||
|
|
Загрузка…
Ссылка в новой задаче