diff --git a/tests/introspection/iOS/introspection-ios-dotnet.csproj b/tests/introspection/iOS/introspection-ios-dotnet.csproj index b174c92a94..9c4c01d2c2 100644 --- a/tests/introspection/iOS/introspection-ios-dotnet.csproj +++ b/tests/introspection/iOS/introspection-ios-dotnet.csproj @@ -12,6 +12,7 @@ xamarinios10;$(AssetTargetFallback) $(DefaultItemExcludes);packages/**; + false @@ -33,6 +34,18 @@ + + + + + + + + + + + + ApiBaseTest.cs @@ -103,6 +116,26 @@ ApiTypeTest.cs + + + Info.plist + + + + + + + + + + + + + + + + + xamarin1.png diff --git a/tests/xharness/Microsoft.DotNet.XHarness.iOS.Shared/TestProject.cs b/tests/xharness/Microsoft.DotNet.XHarness.iOS.Shared/TestProject.cs index 1df1bb5d07..ec81f7a75b 100644 --- a/tests/xharness/Microsoft.DotNet.XHarness.iOS.Shared/TestProject.cs +++ b/tests/xharness/Microsoft.DotNet.XHarness.iOS.Shared/TestProject.cs @@ -95,50 +95,52 @@ namespace Microsoft.DotNet.XHarness.iOS.Shared { doc.ResolveAllPaths (original_path); if (doc.IsDotNetProject ()) { - // Many types of files below the csproj directory are included by default, - // which means that we have to include them manually in the cloned csproj, - // because the cloned project is stored in a very different directory. - var test_dir = System.IO.Path.GetDirectoryName (original_path); + if (doc.GetEnableDefaultItems () != false) { + // Many types of files below the csproj directory are included by default, + // which means that we have to include them manually in the cloned csproj, + // because the cloned project is stored in a very different directory. + var test_dir = System.IO.Path.GetDirectoryName (original_path); - // Get all the files in the project directory from git - using var process = new Process (); - process.StartInfo.FileName = "git"; - process.StartInfo.Arguments = "ls-files"; - process.StartInfo.WorkingDirectory = test_dir; - var stdout = new MemoryLog () { Timestamp = false }; - var result = await processManager.RunAsync (process, log, stdout, stdout, timeout: TimeSpan.FromSeconds (15)); - if (!result.Succeeded) - throw new Exception ($"Failed to list the files in the directory {test_dir} (TimedOut: {result.TimedOut} ExitCode: {result.ExitCode}):\n{stdout}"); + // Get all the files in the project directory from git + using var process = new Process (); + process.StartInfo.FileName = "git"; + process.StartInfo.Arguments = "ls-files"; + process.StartInfo.WorkingDirectory = test_dir; + var stdout = new MemoryLog () { Timestamp = false }; + var result = await processManager.RunAsync (process, log, stdout, stdout, timeout: TimeSpan.FromSeconds (15)); + if (!result.Succeeded) + throw new Exception ($"Failed to list the files in the directory {test_dir} (TimedOut: {result.TimedOut} ExitCode: {result.ExitCode}):\n{stdout}"); - var files = stdout.ToString ().Split ('\n'); - foreach (var file in files) { - var ext = System.IO.Path.GetExtension (file); - var full_path = System.IO.Path.Combine (test_dir, file); - var windows_file = full_path.Replace ('/', '\\'); + var files = stdout.ToString ().Split ('\n'); + foreach (var file in files) { + var ext = System.IO.Path.GetExtension (file); + var full_path = System.IO.Path.Combine (test_dir, file); + var windows_file = full_path.Replace ('/', '\\'); - if (file.Contains (".xcasset")) { - doc.AddInclude ("ImageAsset", file, windows_file, true); - continue; - } + if (file.Contains (".xcasset")) { + doc.AddInclude ("ImageAsset", file, windows_file, true); + continue; + } - switch (ext.ToLowerInvariant ()) { - case ".cs": - doc.AddInclude ("Compile", file, windows_file, true); - break; - case ".plist": - doc.AddInclude ("None", file, windows_file, true); - break; - case ".storyboard": - doc.AddInclude ("InterfaceDefinition", file, windows_file, true); - break; - case ".gitignore": - case ".csproj": - case ".props": // Directory.Build.props - case "": // Makefile - break; // ignore these files - default: - Console.WriteLine ($"Unknown file: {file} (extension: {ext}). There might be a default inclusion behavior for this file."); - break; + switch (ext.ToLowerInvariant ()) { + case ".cs": + doc.AddInclude ("Compile", file, windows_file, true); + break; + case ".plist": + doc.AddInclude ("None", file, windows_file, true); + break; + case ".storyboard": + doc.AddInclude ("InterfaceDefinition", file, windows_file, true); + break; + case ".gitignore": + case ".csproj": + case ".props": // Directory.Build.props + case "": // Makefile + break; // ignore these files + default: + Console.WriteLine ($"Unknown file: {file} (extension: {ext}). There might be a default inclusion behavior for this file."); + break; + } } } diff --git a/tests/xharness/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/ProjectFileExtensions.cs b/tests/xharness/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/ProjectFileExtensions.cs index ef35445eee..0648d08432 100644 --- a/tests/xharness/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/ProjectFileExtensions.cs +++ b/tests/xharness/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/ProjectFileExtensions.cs @@ -588,6 +588,14 @@ namespace Microsoft.DotNet.XHarness.iOS.Shared.Utilities { return attrib != null; } + public static bool? GetEnableDefaultItems (this XmlDocument csproj) + { + var node = csproj.SelectSingleNode ($"/*/*/*[local-name() = 'EnableDefaultItems']"); + if (node == null) + return null; + return string.Equals (node.InnerText, "true", StringComparison.OrdinalIgnoreCase); + } + static XmlNode GetInfoPListNode (this XmlDocument csproj, bool throw_if_not_found = false) { var logicalNames = csproj.SelectNodes ("//*[local-name() = 'LogicalName']");