CompileAvaloniaXamlTaskTest.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using System;
  2. using System.IO;
  3. using System.Linq;
  4. using System.Reflection;
  5. using Microsoft.Build.Utilities;
  6. using Xunit;
  7. namespace Avalonia.Build.Tasks.UnitTest;
  8. public class CompileAvaloniaXamlTaskTest
  9. {
  10. [Fact]
  11. public void Does_Not_Fail_When_Codebehind_Contains_DllImport()
  12. {
  13. using var engine = UnitTestBuildEngine.Start();
  14. var basePath = Path.Combine(Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath), "Assets");
  15. var assembly = new TaskItem(Path.Combine(basePath, "PInvoke.dll"));
  16. assembly.SetMetadata(CompileAvaloniaXamlTask.AvaloniaCompileOutputMetadataName, Path.Combine(basePath, "Avalonia", Path.GetFileName(assembly.ItemSpec)));
  17. var references = File.ReadAllLines(Path.Combine(basePath, "PInvoke.dll.refs")).Select(p => new TaskItem(p)).ToArray();
  18. Assert.True(File.Exists(assembly.ItemSpec), $"The original {assembly.ItemSpec} don't exist.");
  19. new CompileAvaloniaXamlTask()
  20. {
  21. AssemblyFile = assembly,
  22. References = references,
  23. RefAssemblyFile = null,
  24. BuildEngine = engine,
  25. ProjectDirectory = Directory.GetCurrentDirectory(),
  26. VerifyIl = true
  27. }.Execute();
  28. Assert.Empty(engine.Errors);
  29. }
  30. }