[xharness] Bump to the latest version of Microsoft.DotNet.XHarness.iOS.Shared (1.0.0-prerelease.21527.2). (#12899)
* [xharness] Bump to the latest version of Microsoft.DotNet.XHarness.iOS.Shared (1.0.0-prerelease.21479.1). * [xharness] Handle an exceptional condition when we fail to enumerate simulators. * [xharness] Use new xharness API to select which simulators to use. This also required bumping xharness. * Bump again. * Bump yet again. * [xharness] Bump and fix according to API break. * [xharness] Stop the listener before cancelling it. Cancelling it doesn't do anything if the listener has connected, and that's usually the case. This prevents subsequent logic from reading incomplete logs. Co-authored-by: Manuel de la Pena <mandel@microsoft.com>
This commit is contained in:
Родитель
7fb9bc98f0
Коммит
8e150c5bfe
|
@ -5,6 +5,7 @@ using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.DotNet.XHarness.Common.CLI;
|
||||||
using Microsoft.DotNet.XHarness.Common.Execution;
|
using Microsoft.DotNet.XHarness.Common.Execution;
|
||||||
using Microsoft.DotNet.XHarness.Common.Logging;
|
using Microsoft.DotNet.XHarness.Common.Logging;
|
||||||
using Microsoft.DotNet.XHarness.Common.Utilities;
|
using Microsoft.DotNet.XHarness.Common.Utilities;
|
||||||
|
@ -128,7 +129,7 @@ namespace Xharness {
|
||||||
|
|
||||||
var sims = simulatorsLoaderFactory.CreateLoader ();
|
var sims = simulatorsLoaderFactory.CreateLoader ();
|
||||||
await sims.LoadDevices (Logs.Create ($"simulator-list-{Harness.Helpers.Timestamp}.log", "Simulator list"), false, false);
|
await sims.LoadDevices (Logs.Create ($"simulator-list-{Harness.Helpers.Timestamp}.log", "Simulator list"), false, false);
|
||||||
(simulator, companionSimulator) = await sims.FindSimulators (target, MainLog);
|
(simulator, companionSimulator) = await sims.FindSimulators (target.GetTargetOs (false), MainLog);
|
||||||
|
|
||||||
return simulator != null;
|
return simulator != null;
|
||||||
}
|
}
|
||||||
|
@ -366,8 +367,8 @@ namespace Xharness {
|
||||||
|
|
||||||
MainLog.WriteLine ("Starting test run");
|
MainLog.WriteLine ("Starting test run");
|
||||||
|
|
||||||
await testReporter.CollectSimulatorResult (
|
var testRunResult = await processManager.ExecuteCommandAsync (args, MainLog, testReporterTimeout, cancellationToken: testReporter.CancellationToken);
|
||||||
processManager.ExecuteCommandAsync (args, MainLog, testReporterTimeout, cancellationToken: testReporter.CancellationToken));
|
await testReporter.CollectSimulatorResult (testRunResult);
|
||||||
|
|
||||||
// cleanup after us
|
// cleanup after us
|
||||||
if (EnsureCleanSimulatorState)
|
if (EnsureCleanSimulatorState)
|
||||||
|
@ -406,13 +407,13 @@ namespace Xharness {
|
||||||
|
|
||||||
// We need to check for MT1111 (which means that mlaunch won't wait for the app to exit).
|
// We need to check for MT1111 (which means that mlaunch won't wait for the app to exit).
|
||||||
var aggregatedLog = Log.CreateAggregatedLog (testReporter.CallbackLog, MainLog);
|
var aggregatedLog = Log.CreateAggregatedLog (testReporter.CallbackLog, MainLog);
|
||||||
Task<ProcessExecutionResult> runTestTask = processManager.ExecuteCommandAsync (
|
ProcessExecutionResult runTestResults = await processManager.ExecuteCommandAsync (
|
||||||
args,
|
args,
|
||||||
aggregatedLog,
|
aggregatedLog,
|
||||||
testReporterTimeout,
|
testReporterTimeout,
|
||||||
cancellationToken: testReporter.CancellationToken);
|
cancellationToken: testReporter.CancellationToken);
|
||||||
|
|
||||||
await testReporter.CollectDeviceResult (runTestTask);
|
await testReporter.CollectDeviceResult (runTestResults);
|
||||||
} finally {
|
} finally {
|
||||||
deviceLogCapturer.StopCapture ();
|
deviceLogCapturer.StopCapture ();
|
||||||
deviceSystemLog.Dispose ();
|
deviceSystemLog.Dispose ();
|
||||||
|
@ -425,7 +426,10 @@ namespace Xharness {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
listener.Cancel ();
|
if (!listener.StopAsync ().Wait (TimeSpan.FromSeconds (5))) {
|
||||||
|
MainLog.WriteLine ("Failed to stop listener within 5 seconds. Will cancel it.");
|
||||||
|
listener.Cancel ();
|
||||||
|
}
|
||||||
listener.Dispose ();
|
listener.Dispose ();
|
||||||
|
|
||||||
// close a tunnel if it was created
|
// close a tunnel if it was created
|
||||||
|
|
|
@ -8,17 +8,17 @@ using Microsoft.DotNet.XHarness.iOS.Shared;
|
||||||
|
|
||||||
namespace Xharness.Jenkins {
|
namespace Xharness.Jenkins {
|
||||||
public class ErrorKnowledgeBase : IErrorKnowledgeBase {
|
public class ErrorKnowledgeBase : IErrorKnowledgeBase {
|
||||||
static readonly Dictionary<string, (string HumanMessage, string IssueLink)> testErrorMaps = new Dictionary<string, (string HumanMessage, string IssueLink)> {
|
static readonly Dictionary<string, KnownIssue> testErrorMaps = new Dictionary<string, KnownIssue> {
|
||||||
["error HE0038: Failed to launch the app"] = (HumanMessage: "HE0038", IssueLink: "https://github.com/xamarin/maccore/issues/581)"),
|
["error HE0038: Failed to launch the app"] = new KnownIssue ("HE0038", issueLink: "https://github.com/xamarin/maccore/issues/581)"),
|
||||||
["Couldn't establish a TCP connection with any of the hostnames"] = (HumanMessage: "Tcp Connection Error: Tests are reported as crashes when they succeeded.", IssueLink: "https://github.com/xamarin/maccore/issues/1741"),
|
["Couldn't establish a TCP connection with any of the hostnames"] = new KnownIssue ("Tcp Connection Error: Tests are reported as crashes when they succeeded.", issueLink: "https://github.com/xamarin/maccore/issues/1741"),
|
||||||
["BCLTests.TestRunner.Core.TcpTextWriter..ctor"] = (HumanMessage: "Tcp Connection Error: Tests are reported as crashes when they succeeded.", IssueLink: "https://github.com/xamarin/maccore/issues/1741"),
|
["BCLTests.TestRunner.Core.TcpTextWriter..ctor"] = new KnownIssue ("Tcp Connection Error: Tests are reported as crashes when they succeeded.", issueLink: "https://github.com/xamarin/maccore/issues/1741"),
|
||||||
};
|
};
|
||||||
|
|
||||||
static readonly Dictionary<string, (string HumanMessage, string IssueLink)> buildErrorMaps = new Dictionary<string, (string HumanMessage, string IssueLink)> {
|
static readonly Dictionary<string, KnownIssue> buildErrorMaps = new Dictionary<string, KnownIssue> {
|
||||||
["error MT5210: Native linking failed, undefined symbol: ___multi3"] = (HumanMessage: "Undefined symbol ___multi3 on Release Mode.", IssueLink:"https://github.com/mono/mono/issues/18560"),
|
["error MT5210: Native linking failed, undefined symbol: ___multi3"] = new KnownIssue ("Undefined symbol ___multi3 on Release Mode.", issueLink: "https://github.com/mono/mono/issues/18560"),
|
||||||
};
|
};
|
||||||
|
|
||||||
static bool TryFindErrors (IFileBackedLog? log, Dictionary<string, (string HumanMessage, string IssueLink)> errorMap, [NotNullWhen (true)] out (string HumanMessage, string? IssueLink)? failureMessage)
|
static bool TryFindErrors (IFileBackedLog? log, Dictionary<string, KnownIssue> errorMap, [NotNullWhen (true)] out KnownIssue? failureMessage)
|
||||||
{
|
{
|
||||||
failureMessage = null;
|
failureMessage = null;
|
||||||
if (log == null) {
|
if (log == null) {
|
||||||
|
@ -45,13 +45,13 @@ namespace Xharness.Jenkins {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsKnownBuildIssue (IFileBackedLog buildLog, [NotNullWhen (true)] out (string HumanMessage, string? IssueLink)? knownFailureMessage) =>
|
public bool IsKnownBuildIssue (IFileBackedLog buildLog, [NotNullWhen (true)] out KnownIssue? knownFailureMessage) =>
|
||||||
TryFindErrors (buildLog, buildErrorMaps, out knownFailureMessage);
|
TryFindErrors (buildLog, buildErrorMaps, out knownFailureMessage);
|
||||||
|
|
||||||
public bool IsKnownTestIssue (IFileBackedLog runLog, [NotNullWhen (true)] out (string HumanMessage, string? IssueLink)? knownFailureMessage) =>
|
public bool IsKnownTestIssue (IFileBackedLog runLog, [NotNullWhen (true)] out KnownIssue? knownFailureMessage) =>
|
||||||
TryFindErrors (runLog, testErrorMaps, out knownFailureMessage);
|
TryFindErrors (runLog, testErrorMaps, out knownFailureMessage);
|
||||||
|
|
||||||
public bool IsKnownInstallIssue (IFileBackedLog installLog, [NotNullWhen (true)] out (string HumanMessage, string? IssueLink)? knownFailureMessage)
|
public bool IsKnownInstallIssue (IFileBackedLog installLog, [NotNullWhen (true)] out KnownIssue? knownFailureMessage)
|
||||||
{
|
{
|
||||||
// nothing yet that we are aware of
|
// nothing yet that we are aware of
|
||||||
knownFailureMessage = null;
|
knownFailureMessage = null;
|
||||||
|
|
|
@ -100,7 +100,7 @@ namespace Xharness.Jenkins {
|
||||||
this.processManager = processManager ?? throw new ArgumentNullException (nameof (processManager));
|
this.processManager = processManager ?? throw new ArgumentNullException (nameof (processManager));
|
||||||
this.TunnelBore = tunnelBore ?? throw new ArgumentNullException (nameof (tunnelBore));
|
this.TunnelBore = tunnelBore ?? throw new ArgumentNullException (nameof (tunnelBore));
|
||||||
Harness = harness ?? throw new ArgumentNullException (nameof (harness));
|
Harness = harness ?? throw new ArgumentNullException (nameof (harness));
|
||||||
Simulators = new SimulatorLoader (processManager);
|
Simulators = new SimulatorLoader (processManager, new SimulatorSelector ());
|
||||||
Devices = new HardwareDeviceLoader (processManager);
|
Devices = new HardwareDeviceLoader (processManager);
|
||||||
testSelector = new TestSelector (this, processManager, new GitHub (harness, processManager));
|
testSelector = new TestSelector (this, processManager, new GitHub (harness, processManager));
|
||||||
testVariationsFactory = new TestVariationsFactory (this, processManager);
|
testVariationsFactory = new TestVariationsFactory (this, processManager);
|
||||||
|
|
|
@ -310,7 +310,7 @@ namespace Xharness.Jenkins.Reports {
|
||||||
writer.Write ($"<span id='button_container2_{groupId}' class='expander' onclick='javascript: toggleContainerVisibility2 (\"{groupId}\");'>{defaultExpander}</span>");
|
writer.Write ($"<span id='button_container2_{groupId}' class='expander' onclick='javascript: toggleContainerVisibility2 (\"{groupId}\");'>{defaultExpander}</span>");
|
||||||
writer.Write ($"<span id='x{id_counter++}' class='p1 autorefreshable' onclick='javascript: toggleContainerVisibility2 (\"{groupId}\");'>{group.Key}{RenderTextStates (group)}</span>");
|
writer.Write ($"<span id='x{id_counter++}' class='p1 autorefreshable' onclick='javascript: toggleContainerVisibility2 (\"{groupId}\");'>{group.Key}{RenderTextStates (group)}</span>");
|
||||||
if (jenkins.IsServerMode) {
|
if (jenkins.IsServerMode) {
|
||||||
var groupIds = string.Join (",", group.Where ((v) => !v.KnownFailure.HasValue).Select ((v) => v.ID.ToString ()));
|
var groupIds = string.Join (",", group.Where ((v) => v.KnownFailure is null).Select ((v) => v.ID.ToString ()));
|
||||||
writer.Write ($" <span class='runall'><a href='javascript: runtest (\"{groupIds}\");'>Run all</a> <a href='javascript: buildtest (\"{groupIds}\");'>Build all</a></span>");
|
writer.Write ($" <span class='runall'><a href='javascript: runtest (\"{groupIds}\");'>Run all</a> <a href='javascript: buildtest (\"{groupIds}\");'>Build all</a></span>");
|
||||||
}
|
}
|
||||||
writer.WriteLine ("</div>");
|
writer.WriteLine ("</div>");
|
||||||
|
@ -331,7 +331,7 @@ namespace Xharness.Jenkins.Reports {
|
||||||
writer.Write ($"<span id='button_container2_{modeGroupId}' class='expander' onclick='javascript: toggleContainerVisibility2 (\"{modeGroupId}\");'>{defaultExpander}</span>");
|
writer.Write ($"<span id='button_container2_{modeGroupId}' class='expander' onclick='javascript: toggleContainerVisibility2 (\"{modeGroupId}\");'>{defaultExpander}</span>");
|
||||||
writer.Write ($"<span id='x{id_counter++}' class='p2 autorefreshable' onclick='javascript: toggleContainerVisibility2 (\"{modeGroupId}\");'>{modeGroup.Key}{RenderTextStates (modeGroup)}</span>");
|
writer.Write ($"<span id='x{id_counter++}' class='p2 autorefreshable' onclick='javascript: toggleContainerVisibility2 (\"{modeGroupId}\");'>{modeGroup.Key}{RenderTextStates (modeGroup)}</span>");
|
||||||
if (jenkins.IsServerMode) {
|
if (jenkins.IsServerMode) {
|
||||||
var modeGroupIds = string.Join (",", modeGroup.Where ((v) => !v.KnownFailure.HasValue).Select ((v) => v.ID.ToString ()));
|
var modeGroupIds = string.Join (",", modeGroup.Where ((v) => v.KnownFailure is null).Select ((v) => v.ID.ToString ()));
|
||||||
writer.Write ($" <span class='runall'><a href='javascript: runtest (\"{modeGroupIds}\");'>Run all</a> <a href='javascript: buildtest (\"{modeGroupIds}\");'>Build all</a></span>");
|
writer.Write ($" <span class='runall'><a href='javascript: runtest (\"{modeGroupIds}\");'>Run all</a> <a href='javascript: buildtest (\"{modeGroupIds}\");'>Build all</a></span>");
|
||||||
}
|
}
|
||||||
writer.WriteLine ("</div>");
|
writer.WriteLine ("</div>");
|
||||||
|
@ -363,8 +363,8 @@ namespace Xharness.Jenkins.Reports {
|
||||||
writer.Write ($"<span id='button_{log_id}' class='expander' onclick='javascript: toggleLogVisibility (\"{log_id}\");'>{defaultExpander}</span>");
|
writer.Write ($"<span id='button_{log_id}' class='expander' onclick='javascript: toggleLogVisibility (\"{log_id}\");'>{defaultExpander}</span>");
|
||||||
// we have a very common error we want to make this easier for the person that is dealing with the results
|
// we have a very common error we want to make this easier for the person that is dealing with the results
|
||||||
var knownFailure = string.Empty;
|
var knownFailure = string.Empty;
|
||||||
if (test.KnownFailure.HasValue)
|
if (test.KnownFailure is not null)
|
||||||
knownFailure = $" <a href='{test.KnownFailure.Value.IssueLink}'>{test.KnownFailure.Value.HumanMessage}</a>";
|
knownFailure = $" <a href='{test.KnownFailure.IssueLink}'>{test.KnownFailure.HumanMessage}</a>";
|
||||||
writer.Write ($"<span id='x{id_counter++}' class='p3 autorefreshable' onclick='javascript: toggleLogVisibility (\"{log_id}\");'>{title} (<span style='color: {test.GetTestColor ()}'>{state}{knownFailure}</span>{buildOnly}) </span>");
|
writer.Write ($"<span id='x{id_counter++}' class='p3 autorefreshable' onclick='javascript: toggleLogVisibility (\"{log_id}\");'>{title} (<span style='color: {test.GetTestColor ()}'>{state}{knownFailure}</span>{buildOnly}) </span>");
|
||||||
if (jenkins.IsServerMode) {
|
if (jenkins.IsServerMode) {
|
||||||
writer.Write ($" <span id='x{id_counter++}' class='autorefreshable'>");
|
writer.Write ($" <span id='x{id_counter++}' class='autorefreshable'>");
|
||||||
|
@ -385,8 +385,8 @@ namespace Xharness.Jenkins.Reports {
|
||||||
if (testAssemblies.Any ())
|
if (testAssemblies.Any ())
|
||||||
writer.WriteLine ($"Test assemblies:<br/>- {String.Join ("<br/>- ", testAssemblies)}<br />");
|
writer.WriteLine ($"Test assemblies:<br/>- {String.Join ("<br/>- ", testAssemblies)}<br />");
|
||||||
|
|
||||||
if (test.KnownFailure.HasValue)
|
if (test.KnownFailure is not null)
|
||||||
writer.WriteLine ($"Known failure: <a href='{test.KnownFailure.Value.IssueLink}'>{test.KnownFailure.Value.HumanMessage}</a> <br />");
|
writer.WriteLine ($"Known failure: <a href='{test.KnownFailure.IssueLink}'>{test.KnownFailure.HumanMessage}</a> <br />");
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty (test.FailureMessage)) {
|
if (!string.IsNullOrEmpty (test.FailureMessage)) {
|
||||||
var msg = test.FailureMessage.AsHtml ();
|
var msg = test.FailureMessage.AsHtml ();
|
||||||
|
|
|
@ -27,8 +27,8 @@ namespace Xharness.Jenkins.Reports {
|
||||||
writer.Write ($": {test.ExecutionResult}");
|
writer.Write ($": {test.ExecutionResult}");
|
||||||
if (!string.IsNullOrEmpty (test.FailureMessage))
|
if (!string.IsNullOrEmpty (test.FailureMessage))
|
||||||
writer.Write ($" ({test.FailureMessage})");
|
writer.Write ($" ({test.FailureMessage})");
|
||||||
if (test.KnownFailure.HasValue)
|
if (test.KnownFailure is not null)
|
||||||
writer.Write ($" Known issue: [{test.KnownFailure.Value.HumanMessage}]({test.KnownFailure.Value.IssueLink})");
|
writer.Write ($" Known issue: [{test.KnownFailure.HumanMessage}]({test.KnownFailure.IssueLink})");
|
||||||
writer.WriteLine ();
|
writer.WriteLine ();
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -137,7 +137,7 @@ namespace Xharness.Jenkins {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < targets.Length; i++) {
|
for (int i = 0; i < targets.Length; i++) {
|
||||||
var sims = jenkins.Simulators.SelectDevices (targets [i], jenkins.SimulatorLoadLog, false);
|
var sims = jenkins.Simulators.SelectDevices (targets [i].GetTargetOs (false), jenkins.SimulatorLoadLog, false);
|
||||||
runtasks.Add (new RunSimulatorTask (
|
runtasks.Add (new RunSimulatorTask (
|
||||||
jenkins: jenkins,
|
jenkins: jenkins,
|
||||||
simulators: jenkins.Simulators,
|
simulators: jenkins.Simulators,
|
||||||
|
|
|
@ -9,7 +9,7 @@ namespace Xharness.Jenkins {
|
||||||
public string Variation;
|
public string Variation;
|
||||||
public string MTouchExtraArgs;
|
public string MTouchExtraArgs;
|
||||||
public string MonoBundlingExtraArgs; // mmp
|
public string MonoBundlingExtraArgs; // mmp
|
||||||
public (string HumanMessage, string IssueLink)? KnownFailure;
|
public KnownIssue KnownFailure;
|
||||||
public bool Debug;
|
public bool Debug;
|
||||||
public bool Profiling;
|
public bool Profiling;
|
||||||
public string LinkMode;
|
public string LinkMode;
|
||||||
|
|
|
@ -36,7 +36,7 @@ namespace Xharness.Jenkins.TestTasks {
|
||||||
bool BuildOnly { get; set; }
|
bool BuildOnly { get; set; }
|
||||||
bool Ignored { get; set; }
|
bool Ignored { get; set; }
|
||||||
|
|
||||||
(string HumanMessage, string IssueLink)? KnownFailure { get; set; }
|
KnownIssue KnownFailure { get; set; }
|
||||||
string ProjectConfiguration { get; set; }
|
string ProjectConfiguration { get; set; }
|
||||||
string ProjectPlatform { get; set; }
|
string ProjectPlatform { get; set; }
|
||||||
string ProjectFile { get; }
|
string ProjectFile { get; }
|
||||||
|
|
|
@ -48,7 +48,7 @@ namespace Xharness.Jenkins.TestTasks {
|
||||||
this.errorKnowledgeBase = errorKnowledgeBase ?? throw new ArgumentNullException (nameof (errorKnowledgeBase));
|
this.errorKnowledgeBase = errorKnowledgeBase ?? throw new ArgumentNullException (nameof (errorKnowledgeBase));
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<(TestExecutingResult ExecutionResult, (string HumanMessage, string IssueLink)? KnownFailure)> ExecuteAsync (
|
public async Task<(TestExecutingResult ExecutionResult, KnownIssue KnownFailure)> ExecuteAsync (
|
||||||
string projectPlatform,
|
string projectPlatform,
|
||||||
string projectConfiguration,
|
string projectConfiguration,
|
||||||
string projectFile,
|
string projectFile,
|
||||||
|
@ -58,7 +58,7 @@ namespace Xharness.Jenkins.TestTasks {
|
||||||
ILog mainLog)
|
ILog mainLog)
|
||||||
{
|
{
|
||||||
BuildLog = buildLog;
|
BuildLog = buildLog;
|
||||||
(TestExecutingResult ExecutionResult, (string HumanMessage, string IssueLink)? KnownFailure) result = (TestExecutingResult.NotStarted, ((string HumanMessage, string IssueLink)?) null);
|
(TestExecutingResult ExecutionResult, KnownIssue KnownFailure) result = (TestExecutingResult.NotStarted, (KnownIssue) null);
|
||||||
var restoreResult = await RestoreNugetsAsync (buildLog, resource);
|
var restoreResult = await RestoreNugetsAsync (buildLog, resource);
|
||||||
if ((restoreResult & TestExecutingResult.Failed) == TestExecutingResult.Failed) {
|
if ((restoreResult & TestExecutingResult.Failed) == TestExecutingResult.Failed) {
|
||||||
BuildLog.WriteLine ($"Failed to restore nugets: {restoreResult}");
|
BuildLog.WriteLine ($"Failed to restore nugets: {restoreResult}");
|
||||||
|
|
|
@ -60,15 +60,19 @@ namespace Xharness.Jenkins.TestTasks {
|
||||||
if (asyncEnumerable != null)
|
if (asyncEnumerable != null)
|
||||||
await asyncEnumerable.ReadyTask;
|
await asyncEnumerable.ReadyTask;
|
||||||
|
|
||||||
if (!testTask.Candidates.Any ()) {
|
try {
|
||||||
|
if (!testTask.Candidates.Any ()) {
|
||||||
|
testTask.ExecutionResult = TestExecutingResult.DeviceNotFound;
|
||||||
|
testTask.FailureMessage = "No applicable devices found.";
|
||||||
|
} else {
|
||||||
|
testTask.Device = testTask.Candidates.First ();
|
||||||
|
if (testTask.Platform == TestPlatform.watchOS)
|
||||||
|
testTask.CompanionDevice = simulators.FindCompanionDevice (simulatorLoadLog, testTask.Device);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
testTask.ExecutionResult = TestExecutingResult.DeviceNotFound;
|
testTask.ExecutionResult = TestExecutingResult.DeviceNotFound;
|
||||||
testTask.FailureMessage = "No applicable devices found.";
|
testTask.FailureMessage = $"No applicable devices found ({e.Message})";
|
||||||
} else {
|
|
||||||
testTask.Device = testTask.Candidates.First ();
|
|
||||||
if (testTask.Platform == TestPlatform.watchOS)
|
|
||||||
testTask.CompanionDevice = simulators.FindCompanionDevice (simulatorLoadLog, testTask.Device);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task SelectSimulatorAsync ()
|
public async Task SelectSimulatorAsync ()
|
||||||
|
|
|
@ -67,7 +67,7 @@ namespace Xharness.Jenkins.TestTasks {
|
||||||
testTask.ExecutionResult = TestExecutingResult.BuildFailure;
|
testTask.ExecutionResult = TestExecutingResult.BuildFailure;
|
||||||
}
|
}
|
||||||
testTask.FailureMessage = BuildTask.FailureMessage;
|
testTask.FailureMessage = BuildTask.FailureMessage;
|
||||||
if (BuildTask.KnownFailure.HasValue)
|
if (BuildTask.KnownFailure is not null)
|
||||||
testTask.KnownFailure = BuildTask.KnownFailure;
|
testTask.KnownFailure = BuildTask.KnownFailure;
|
||||||
if (generateXmlFailures && BuildTask.BuildLog != null && File.Exists (BuildTask.BuildLog.FullPath)) {
|
if (generateXmlFailures && BuildTask.BuildLog != null && File.Exists (BuildTask.BuildLog.FullPath)) {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -31,7 +31,7 @@ namespace Xharness.Jenkins.TestTasks {
|
||||||
|
|
||||||
public int ID { get; private set; }
|
public int ID { get; private set; }
|
||||||
public bool BuildOnly { get; set; }
|
public bool BuildOnly { get; set; }
|
||||||
public (string HumanMessage, string IssueLink)? KnownFailure { get; set; }
|
public KnownIssue KnownFailure { get; set; }
|
||||||
public string ProjectConfiguration { get; set; }
|
public string ProjectConfiguration { get; set; }
|
||||||
public string ProjectPlatform { get; set; }
|
public string ProjectPlatform { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.DotNet.XHarness.Common.Execution;
|
using Microsoft.DotNet.XHarness.Common.Execution;
|
||||||
|
using Microsoft.DotNet.XHarness.iOS.Shared;
|
||||||
using Microsoft.DotNet.XHarness.iOS.Shared.Hardware;
|
using Microsoft.DotNet.XHarness.iOS.Shared.Hardware;
|
||||||
using Microsoft.DotNet.XHarness.iOS.Shared.Utilities;
|
using Microsoft.DotNet.XHarness.iOS.Shared.Utilities;
|
||||||
using Xharness.Jenkins.TestTasks;
|
using Xharness.Jenkins.TestTasks;
|
||||||
|
@ -92,10 +93,10 @@ namespace Xharness.Jenkins {
|
||||||
yield return new TestData { Variation = "Debug: SGenConc", MTouchExtraArgs = "", Debug = true, Profiling = false, MonoNativeLinkMode = MonoNativeLinkMode.Static, EnableSGenConc = true};
|
yield return new TestData { Variation = "Debug: SGenConc", MTouchExtraArgs = "", Debug = true, Profiling = false, MonoNativeLinkMode = MonoNativeLinkMode.Static, EnableSGenConc = true};
|
||||||
if (supports_interpreter) {
|
if (supports_interpreter) {
|
||||||
if (supports_debug) {
|
if (supports_debug) {
|
||||||
yield return new TestData { Variation = "Debug (interpreter)", MTouchExtraArgs = "--interpreter", Debug = true, Profiling = false, Undefines = "FULL_AOT_RUNTIME", KnownFailure = (HumanMessage: "#1683", IssueLink: "https://github.com/xamarin/maccore/issues/1683") };
|
yield return new TestData { Variation = "Debug (interpreter)", MTouchExtraArgs = "--interpreter", Debug = true, Profiling = false, Undefines = "FULL_AOT_RUNTIME", KnownFailure = new KnownIssue ("#1683", issueLink: "https://github.com/xamarin/maccore/issues/1683") };
|
||||||
yield return new TestData { Variation = "Debug (interpreter -mscorlib)", MTouchExtraArgs = "--interpreter=-mscorlib", Debug = true, Profiling = false, Undefines = "FULL_AOT_RUNTIME", KnownFailure = (HumanMessage:"#1682", IssueLink:"https://github.com/xamarin/maccore/issues/1682") };
|
yield return new TestData { Variation = "Debug (interpreter -mscorlib)", MTouchExtraArgs = "--interpreter=-mscorlib", Debug = true, Profiling = false, Undefines = "FULL_AOT_RUNTIME", KnownFailure = new KnownIssue ("#1682", issueLink: "https://github.com/xamarin/maccore/issues/1682") };
|
||||||
}
|
}
|
||||||
yield return new TestData { Variation = "Release (interpreter -mscorlib)", MTouchExtraArgs = "--interpreter=-mscorlib", Debug = false, Profiling = false, Undefines = "FULL_AOT_RUNTIME", KnownFailure = (HumanMessage:"#1682", IssueLink:"https://github.com/xamarin/maccore/issues/1682") };
|
yield return new TestData { Variation = "Release (interpreter -mscorlib)", MTouchExtraArgs = "--interpreter=-mscorlib", Debug = false, Profiling = false, Undefines = "FULL_AOT_RUNTIME", KnownFailure = new KnownIssue ("#1682", issueLink: "https://github.com/xamarin/maccore/issues/1682") };
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -117,7 +118,7 @@ namespace Xharness.Jenkins {
|
||||||
yield return new TestData {
|
yield return new TestData {
|
||||||
Variation = $"Debug ({test.Platform.GetSimulatorMinVersion ()})",
|
Variation = $"Debug ({test.Platform.GetSimulatorMinVersion ()})",
|
||||||
Debug = true,
|
Debug = true,
|
||||||
Candidates = jenkins.Simulators.SelectDevices (target, jenkins.SimulatorLoadLog, true),
|
Candidates = jenkins.Simulators.SelectDevices (target.GetTargetOs (true), jenkins.SimulatorLoadLog, true),
|
||||||
Ignored = ignore ?? !jenkins.IncludeOldSimulatorTests,
|
Ignored = ignore ?? !jenkins.IncludeOldSimulatorTests,
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
|
@ -189,7 +190,7 @@ namespace Xharness.Jenkins {
|
||||||
if (task.TestProject.IsDotNetProject)
|
if (task.TestProject.IsDotNetProject)
|
||||||
variation += " [dotnet]";
|
variation += " [dotnet]";
|
||||||
|
|
||||||
if (known_failure.HasValue)
|
if (known_failure is not null)
|
||||||
ignored = true;
|
ignored = true;
|
||||||
|
|
||||||
var clone = task.TestProject.Clone ();
|
var clone = task.TestProject.Clone ();
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
|
using Microsoft.DotNet.XHarness.iOS.Shared;
|
||||||
using Microsoft.DotNet.XHarness.iOS.Shared.Execution;
|
using Microsoft.DotNet.XHarness.iOS.Shared.Execution;
|
||||||
using Microsoft.DotNet.XHarness.iOS.Shared.Hardware;
|
using Microsoft.DotNet.XHarness.iOS.Shared.Hardware;
|
||||||
|
|
||||||
|
@ -16,6 +17,20 @@ namespace Xharness {
|
||||||
this.processManager = processManager ?? throw new ArgumentNullException (nameof (processManager));
|
this.processManager = processManager ?? throw new ArgumentNullException (nameof (processManager));
|
||||||
}
|
}
|
||||||
|
|
||||||
public ISimulatorLoader CreateLoader () => new SimulatorLoader (processManager);
|
public ISimulatorLoader CreateLoader () => new SimulatorLoader (processManager, new SimulatorSelector ());
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SimulatorSelector : DefaultSimulatorSelector {
|
||||||
|
public override string GetDeviceType (TestTargetOs target, bool minVersion)
|
||||||
|
{
|
||||||
|
return target.Platform switch {
|
||||||
|
TestTarget.Simulator_iOS => "com.apple.CoreSimulator.SimDeviceType.iPhone-5s",
|
||||||
|
TestTarget.Simulator_iOS32 => "com.apple.CoreSimulator.SimDeviceType.iPhone-5s",
|
||||||
|
TestTarget.Simulator_iOS64 => "com.apple.CoreSimulator.SimDeviceType." + (minVersion ? "iPhone-6" : "iPhone-X"),
|
||||||
|
TestTarget.Simulator_tvOS => "com.apple.CoreSimulator.SimDeviceType.Apple-TV-1080p",
|
||||||
|
TestTarget.Simulator_watchOS => "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-3-38mm",
|
||||||
|
_ => throw new Exception (string.Format ("Invalid simulator target: {0}", target))
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,5 +25,18 @@ namespace Xharness {
|
||||||
throw new NotImplementedException (platform.ToString ());
|
throw new NotImplementedException (platform.ToString ());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static TestTargetOs GetTargetOs (this TestTarget target, bool minVersion)
|
||||||
|
{
|
||||||
|
return target switch {
|
||||||
|
TestTarget.Simulator_iOS32 => new TestTargetOs (target, minVersion ? SdkVersions.MiniOSSimulator : "10.3"),
|
||||||
|
TestTarget.Simulator_iOS64 => new TestTargetOs (target, minVersion ? SdkVersions.MiniOSSimulator : SdkVersions.MaxiOSSimulator),
|
||||||
|
TestTarget.Simulator_iOS => new TestTargetOs (target, minVersion ? SdkVersions.MiniOSSimulator : SdkVersions.MaxiOSSimulator),
|
||||||
|
TestTarget.Simulator_tvOS => new TestTargetOs (target, minVersion ? SdkVersions.MinTVOSSimulator : SdkVersions.MaxTVOSSimulator),
|
||||||
|
TestTarget.Simulator_watchOS => new TestTargetOs (target, minVersion ? SdkVersions.MinWatchOSSimulator : SdkVersions.MaxWatchOSSimulator),
|
||||||
|
_ => throw new Exception (string.Format ("Invalid simulator target: {0}", target))
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.DotNet.XHarness.Common.CLI;
|
||||||
using Microsoft.DotNet.XHarness.Common.Execution;
|
using Microsoft.DotNet.XHarness.Common.Execution;
|
||||||
using Microsoft.DotNet.XHarness.Common.Logging;
|
using Microsoft.DotNet.XHarness.Common.Logging;
|
||||||
using Microsoft.DotNet.XHarness.Common.Utilities;
|
using Microsoft.DotNet.XHarness.Common.Utilities;
|
||||||
|
@ -261,6 +262,7 @@ namespace Xharness.Tests {
|
||||||
mainLog.Object,
|
mainLog.Object,
|
||||||
TimeSpan.FromHours (1),
|
TimeSpan.FromHours (1),
|
||||||
null,
|
null,
|
||||||
|
5,
|
||||||
cancellationToken));
|
cancellationToken));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -304,6 +306,7 @@ namespace Xharness.Tests {
|
||||||
mainLog.Object,
|
mainLog.Object,
|
||||||
TimeSpan.FromMinutes (1),
|
TimeSpan.FromMinutes (1),
|
||||||
null,
|
null,
|
||||||
|
5,
|
||||||
null));
|
null));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -320,7 +323,7 @@ namespace Xharness.Tests {
|
||||||
|
|
||||||
// Mock finding simulators
|
// Mock finding simulators
|
||||||
simulators
|
simulators
|
||||||
.Setup (x => x.LoadDevices (It.IsAny<ILog> (), false, false, false))
|
.Setup (x => x.LoadDevices (It.IsAny<ILog> (), false, false, false, true))
|
||||||
.Returns (Task.FromResult(true));
|
.Returns (Task.FromResult(true));
|
||||||
|
|
||||||
string simulatorLogPath = Path.Combine (Path.GetTempPath (), "simulator-logs");
|
string simulatorLogPath = Path.Combine (Path.GetTempPath (), "simulator-logs");
|
||||||
|
@ -403,7 +406,7 @@ namespace Xharness.Tests {
|
||||||
|
|
||||||
// Mock finding simulators
|
// Mock finding simulators
|
||||||
simulators
|
simulators
|
||||||
.Setup (x => x.LoadDevices (It.IsAny<ILog> (), false, false, false))
|
.Setup (x => x.LoadDevices (It.IsAny<ILog> (), false, false, false, true))
|
||||||
.Returns (Task.FromResult(true));
|
.Returns (Task.FromResult(true));
|
||||||
|
|
||||||
string simulatorLogPath = Path.Combine (Path.GetTempPath (), "simulator-logs");
|
string simulatorLogPath = Path.Combine (Path.GetTempPath (), "simulator-logs");
|
||||||
|
@ -460,6 +463,7 @@ namespace Xharness.Tests {
|
||||||
mainLog.Object,
|
mainLog.Object,
|
||||||
TimeSpan.FromMinutes (harness.Timeout * 2),
|
TimeSpan.FromMinutes (harness.Timeout * 2),
|
||||||
null,
|
null,
|
||||||
|
5,
|
||||||
It.IsAny<CancellationToken> ()))
|
It.IsAny<CancellationToken> ()))
|
||||||
.ReturnsAsync (new ProcessExecutionResult () { ExitCode = 0 });
|
.ReturnsAsync (new ProcessExecutionResult () { ExitCode = 0 });
|
||||||
|
|
||||||
|
@ -505,7 +509,7 @@ namespace Xharness.Tests {
|
||||||
simulators.VerifyAll ();
|
simulators.VerifyAll ();
|
||||||
|
|
||||||
captureLog.Verify (x => x.StartCapture (), Times.AtLeastOnce);
|
captureLog.Verify (x => x.StartCapture (), Times.AtLeastOnce);
|
||||||
captureLog.Verify (x => x.StopCapture (), Times.AtLeastOnce);
|
captureLog.Verify (x => x.StopCapture (null), Times.AtLeastOnce);
|
||||||
|
|
||||||
// When ensureCleanSimulatorState == true
|
// When ensureCleanSimulatorState == true
|
||||||
simulator.Verify (x => x.PrepareSimulator (It.IsAny<ILog> (), appName));
|
simulator.Verify (x => x.PrepareSimulator (It.IsAny<ILog> (), appName));
|
||||||
|
@ -624,6 +628,7 @@ namespace Xharness.Tests {
|
||||||
It.IsAny<ILog> (),
|
It.IsAny<ILog> (),
|
||||||
TimeSpan.FromMinutes (harness.Timeout * 2),
|
TimeSpan.FromMinutes (harness.Timeout * 2),
|
||||||
null,
|
null,
|
||||||
|
5,
|
||||||
It.IsAny<CancellationToken> ()))
|
It.IsAny<CancellationToken> ()))
|
||||||
.ReturnsAsync (new ProcessExecutionResult () { ExitCode = 0 });
|
.ReturnsAsync (new ProcessExecutionResult () { ExitCode = 0 });
|
||||||
|
|
||||||
|
@ -732,6 +737,7 @@ namespace Xharness.Tests {
|
||||||
It.IsAny<ILog> (),
|
It.IsAny<ILog> (),
|
||||||
TimeSpan.FromMinutes (harness.Timeout * 2),
|
TimeSpan.FromMinutes (harness.Timeout * 2),
|
||||||
null,
|
null,
|
||||||
|
5,
|
||||||
It.IsAny<CancellationToken> ()))
|
It.IsAny<CancellationToken> ()))
|
||||||
.ReturnsAsync (new ProcessExecutionResult () { ExitCode = 0 });
|
.ReturnsAsync (new ProcessExecutionResult () { ExitCode = 0 });
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<Import Project="..\..\..\packages\NUnit3TestAdapter.3.16.1\build\net35\NUnit3TestAdapter.props" Condition="Exists('..\..\..\packages\NUnit3TestAdapter.3.16.1\build\net35\NUnit3TestAdapter.props')" />
|
|
||||||
<Import Project="..\..\..\packages\NUnit.3.12.0\build\NUnit.props" Condition="Exists('..\..\..\packages\NUnit.3.12.0\build\NUnit.props')" />
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
@ -31,114 +29,10 @@
|
||||||
<LangVersion>8.0</LangVersion>
|
<LangVersion>8.0</LangVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Castle.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Castle.Core.4.4.0\lib\net45\Castle.Core.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0-rc.1.20451.14\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.DotNet.XHarness.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Microsoft.DotNet.XHarness.Common.1.0.0-prerelease.20621.4\lib\netstandard2.0\Microsoft.DotNet.XHarness.Common.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.DotNet.XHarness.iOS.Shared, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Microsoft.DotNet.XHarness.iOS.Shared.1.0.0-prerelease.20621.4\lib\netstandard2.0\Microsoft.DotNet.XHarness.iOS.Shared.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.Extensions.Configuration, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Microsoft.Extensions.Configuration.5.0.0-rc.1.20451.14\lib\net461\Microsoft.Extensions.Configuration.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.Extensions.Configuration.Abstractions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Microsoft.Extensions.Configuration.Abstractions.5.0.0-rc.1.20451.14\lib\net461\Microsoft.Extensions.Configuration.Abstractions.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.Extensions.Configuration.Binder, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Microsoft.Extensions.Configuration.Binder.5.0.0-rc.1.20451.14\lib\net461\Microsoft.Extensions.Configuration.Binder.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.Extensions.DependencyInjection, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Microsoft.Extensions.DependencyInjection.5.0.0-rc.1.20451.14\lib\net461\Microsoft.Extensions.DependencyInjection.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.5.0.0-rc.1.20451.14\lib\net461\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.Extensions.Logging, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Microsoft.Extensions.Logging.5.0.0-rc.1.20451.14\lib\net461\Microsoft.Extensions.Logging.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Microsoft.Extensions.Logging.Abstractions.5.0.0-rc.1.20451.14\lib\net461\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Configuration, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Microsoft.Extensions.Logging.Configuration.5.0.0-rc.1.20451.14\lib\net461\Microsoft.Extensions.Logging.Configuration.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Console, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Microsoft.Extensions.Logging.Console.5.0.0-rc.1.20451.14\lib\net461\Microsoft.Extensions.Logging.Console.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.Extensions.Options, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Microsoft.Extensions.Options.5.0.0-rc.1.20451.14\lib\net461\Microsoft.Extensions.Options.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.Extensions.Options.ConfigurationExtensions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Microsoft.Extensions.Options.ConfigurationExtensions.5.0.0-rc.1.20451.14\lib\net461\Microsoft.Extensions.Options.ConfigurationExtensions.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Microsoft.Extensions.Primitives, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Microsoft.Extensions.Primitives.5.0.0-rc.1.20451.14\lib\net461\Microsoft.Extensions.Primitives.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Mono.Cecil, Version=0.11.2.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Mono.Cecil.0.11.2\lib\net40\Mono.Cecil.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Mono.Cecil.Mdb, Version=0.11.2.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Mono.Cecil.0.11.2\lib\net40\Mono.Cecil.Mdb.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Mono.Cecil.Pdb, Version=0.11.2.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Mono.Cecil.0.11.2\lib\net40\Mono.Cecil.Pdb.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Mono.Cecil.Rocks, Version=0.11.2.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Mono.Cecil.0.11.2\lib\net40\Mono.Cecil.Rocks.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Mono.Options, Version=6.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Mono.Options.6.6.0.161\lib\net40\Mono.Options.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Moq, Version=4.13.0.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\Moq.4.13.1\lib\net45\Moq.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="nunit.framework, Version=3.12.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\NUnit.3.12.0\lib\net45\nunit.framework.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System" />
|
|
||||||
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Diagnostics.DiagnosticSource, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\System.Diagnostics.DiagnosticSource.5.0.0-rc.1.20451.14\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Numerics" />
|
|
||||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0-rc.1.20451.14\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
|
|
||||||
<Private>True</Private>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Text.Encodings.Web, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\System.Text.Encodings.Web.5.0.0-rc.1.20451.14\lib\net461\System.Text.Encodings.Web.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Text.Json, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\System.Text.Json.5.0.0-rc.1.20451.14\lib\net461\System.Text.Json.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\..\..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Web" />
|
<Reference Include="System.Web" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
<Reference Include="System.Runtime.Serialization" />
|
<PackageReference Include="Moq" Version="4.13.0.0" />
|
||||||
<Reference Include="System.Configuration" />
|
<PackageReference Include="NUnit" Version="3.12.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Jenkins\ErrorKnowledgeBaseTests.cs" />
|
<Compile Include="Jenkins\ErrorKnowledgeBaseTests.cs" />
|
||||||
|
@ -189,11 +83,4 @@
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
|
||||||
<PropertyGroup>
|
|
||||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Error Condition="!Exists('..\..\..\packages\NUnit.3.12.0\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\NUnit.3.12.0\build\NUnit.props'))" />
|
|
||||||
<Error Condition="!Exists('..\..\..\packages\NUnit3TestAdapter.3.16.1\build\net35\NUnit3TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\NUnit3TestAdapter.3.16.1\build\net35\NUnit3TestAdapter.props'))" />
|
|
||||||
</Target>
|
|
||||||
</Project>
|
</Project>
|
|
@ -22,7 +22,7 @@
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<ConsolePause>false</ConsolePause>
|
<ConsolePause>false</ConsolePause>
|
||||||
<PlatformTarget>x64</PlatformTarget>
|
<PlatformTarget>x64</PlatformTarget>
|
||||||
<LangVersion>8.0</LangVersion>
|
<LangVersion>latest</LangVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<DebugType>full</DebugType>
|
<DebugType>full</DebugType>
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<Externalconsole>true</Externalconsole>
|
<Externalconsole>true</Externalconsole>
|
||||||
<OutputPath>bin\Release</OutputPath>
|
<OutputPath>bin\Release</OutputPath>
|
||||||
<LangVersion>8.0</LangVersion>
|
<LangVersion>latest</LangVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(RunConfiguration)' == 'Default' ">
|
<PropertyGroup Condition=" '$(RunConfiguration)' == 'Default' ">
|
||||||
<StartAction>Project</StartAction>
|
<StartAction>Project</StartAction>
|
||||||
|
@ -62,13 +62,10 @@
|
||||||
<Reference Include="System.Web" />
|
<Reference Include="System.Web" />
|
||||||
<Reference Include="Mono.Posix" />
|
<Reference Include="Mono.Posix" />
|
||||||
<Reference Include="System.Runtime.Serialization" />
|
<Reference Include="System.Runtime.Serialization" />
|
||||||
<Reference Include="mscorlib" />
|
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.DotNet.XHarness.iOS.Shared">
|
<PackageReference Include="Microsoft.DotNet.XHarness.iOS.Shared" Version="1.0.0-prerelease.21527.2" />
|
||||||
<Version>1.0.0-branch-xamarin-xcode-12.5.21168.1</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="Mono.Cecil" Version="0.11.4" />
|
<PackageReference Include="Mono.Cecil" Version="0.11.4" />
|
||||||
<PackageReference Include="Mono.Options" Version="6.6.0.161" />
|
<PackageReference Include="Mono.Options" Version="6.6.0.161" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
Загрузка…
Ссылка в новой задаче