Skip to content

Commit

Permalink
Merge changes from drognanar:runsettings
Browse files Browse the repository at this point in the history
  • Loading branch information
CharliePoole committed Oct 27, 2016
2 parents 5d2538f + 2bb463d commit 7d95ec7
Show file tree
Hide file tree
Showing 6 changed files with 69 additions and 2 deletions.
1 change: 0 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# Normalize line endings
* text=auto


# Prevent files from being exported
.gitattributes export-ignore
.gitignore export-ignore
16 changes: 16 additions & 0 deletions src/NUnitTestAdapter/AdapterSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,12 @@ public AdapterSettings(TestLogger logger)
public int? RandomSeed { get; private set; }
public bool RandomSeedSpecified { get; private set; }

public bool InProcDataCollectorsAvailable { get; private set; }

public bool SynchronousEvents { get; private set; }

public string DomainUsage { get; set; }

#endregion

#region Public Methods
Expand Down Expand Up @@ -136,6 +142,16 @@ public void Load(string settingsXml)
// Force Verbosity to 1 under Debug
Verbosity = 1;
#endif

// If any in proc data collector will be instantiated by the TestPlatform run tests sequentially.
var inProcDataCollectorNode = doc.SelectSingleNode("RunSettings/InProcDataCollectionRunSettings/InProcDataCollectors");
InProcDataCollectorsAvailable = inProcDataCollectorNode != null && inProcDataCollectorNode.SelectNodes("InProcDataCollector").Count > 0;
if (InProcDataCollectorsAvailable)
{
NumberOfTestWorkers = 0;
DomainUsage = "None";
SynchronousEvents = true;
}
}

public void SaveRandomSeed(string dirname)
Expand Down
7 changes: 7 additions & 0 deletions src/NUnitTestAdapter/NUnit3TestDiscoverer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,13 @@ public void DiscoverTests(IEnumerable<string> sources, IDiscoveryContext discove
// Ensure any channels registered by other adapters are unregistered
CleanUpRegisteredChannels();

if (Settings.InProcDataCollectorsAvailable && sources.Count() > 1)
{
TestLog.Error("Unexpected to discover tests in multiple assemblies when InProcDataCollectors specified in run configuration.");
Unload();
return;
}

foreach (string sourceAssembly in sources)
{
TestLog.Debug("Processing " + sourceAssembly);
Expand Down
14 changes: 14 additions & 0 deletions src/NUnitTestAdapter/NUnit3TestExecutor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,13 @@ public void RunTests(IEnumerable<string> sources, IRunContext runContext, IFrame
#endif
Initialize(runContext, frameworkHandle);

if (Settings.InProcDataCollectorsAvailable && sources.Count() > 1)
{
TestLog.Error("Failed to run tests for multiple assemblies when InProcDataCollectors specified in run configuration.");
Unload();
return;
}

foreach (var source in sources)
{
try
Expand Down Expand Up @@ -101,6 +108,13 @@ public void RunTests(IEnumerable<TestCase> tests, IRunContext runContext, IFrame
Initialize(runContext, frameworkHandle);

var assemblyGroups = tests.GroupBy(tc => tc.Source);
if (Settings.InProcDataCollectorsAvailable && assemblyGroups.Count() > 1)
{
TestLog.Error("Failed to run tests for multiple assemblies when InProcDataCollectors specified in run configuration.");
Unload();
return;
}

foreach (var assemblyGroup in assemblyGroups)
{
var assemblyName = assemblyGroup.Key;
Expand Down
12 changes: 11 additions & 1 deletion src/NUnitTestAdapter/NUnitTestAdapter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,8 @@ private TestPackage CreateTestPackage(string assemblyName)
package.Settings[PackageSettings.NumberOfTestWorkers] = workers;
}

package.Settings[PackageSettings.SynchronousEvents] = Settings.SynchronousEvents;

int timeout = Settings.DefaultTimeout;
if (timeout > 0)
package.Settings[PackageSettings.DefaultTimeout] = timeout;
Expand Down Expand Up @@ -177,7 +179,15 @@ private TestPackage CreateTestPackage(string assemblyName)

// Always run one assembly at a time in process in it's own domain
package.Settings[PackageSettings.ProcessModel] = "InProcess";
package.Settings[PackageSettings.DomainUsage] = "Single";

if (Settings.DomainUsage != null)
{
package.Settings[PackageSettings.DomainUsage] = Settings.DomainUsage;
}
else
{
package.Settings[PackageSettings.DomainUsage] = "Single";
}

// Force truncation of string arguments to test cases
package.Settings[PackageSettings.DefaultTestNamePattern] = "{m}{a:40}";
Expand Down
21 changes: 21 additions & 0 deletions src/NUnitTestAdapterTests/AdapterSettingsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,9 @@ public void DefaultSettings()
Assert.Null(_settings.BasePath);
Assert.Null(_settings.PrivateBinPath);
Assert.NotNull(_settings.RandomSeed);
Assert.False(_settings.SynchronousEvents);
Assert.Null(_settings.DomainUsage);
Assert.False(_settings.InProcDataCollectorsAvailable);
}

[Test]
Expand Down Expand Up @@ -171,5 +174,23 @@ public void RandomSeedSetting()
_settings.Load("<RunSettings><NUnit><RandomSeed>12345</RandomSeed></NUnit></RunSettings>");
Assert.That(_settings.RandomSeed, Is.EqualTo(12345));
}

[Test]
public void InProcDataCollector()
{
_settings.Load(@"
<RunSettings>
<InProcDataCollectionRunSettings>
<InProcDataCollectors>
<InProcDataCollector friendlyName='DummyCollectorName' uri='InProcDataCollector://NUnit/DummyCollectorName' />
</InProcDataCollectors>
</InProcDataCollectionRunSettings>
</RunSettings>");

Assert.That(_settings.DomainUsage, Is.EqualTo("None"));
Assert.True(_settings.SynchronousEvents);
Assert.That(_settings.NumberOfTestWorkers, Is.Zero);
Assert.True(_settings.InProcDataCollectorsAvailable);
}
}
}

0 comments on commit 7d95ec7

Please sign in to comment.