Skip to content

Commit

Permalink
Merge branch 'master' into issue-529
Browse files Browse the repository at this point in the history
  • Loading branch information
OsirisTerje authored Jul 31, 2019
2 parents 687a81e + d125829 commit 1eafc06
Show file tree
Hide file tree
Showing 3 changed files with 107 additions and 7 deletions.
39 changes: 37 additions & 2 deletions src/NUnitTestAdapter/NUnitTestAdapter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,10 @@
using NUnit.Common;
using NUnit.Engine;
using System.Linq;

using Microsoft.VisualStudio.TestPlatform.ObjectModel;


namespace NUnit.VisualStudio.TestAdapter
{
/// <summary>
Expand Down Expand Up @@ -113,6 +115,8 @@ public static bool IsRunningUnderIDE
}
}

public List<string> ForbiddenFolders { get; private set; }

#endregion

#region Protected Helper Methods
Expand All @@ -133,16 +137,47 @@ protected void Initialize(IDiscoveryContext context, IMessageLogger messageLogge
{
Settings.Load(context);
TestLog.Verbosity = Settings.Verbosity;

InitializeForbiddenFolders();
SetCurrentWorkingDirectory();
}
catch (Exception e)
{
TestLog.Warning("Error initializing RunSettings. Default settings will be used");
TestLog.Warning(e.ToString());
}

}

public void InitializeForbiddenFolders()
{
ForbiddenFolders = new []
{
Environment.GetEnvironmentVariable("ProgramW6432"),
Environment.GetEnvironmentVariable("ProgramFiles(x86)"),
Environment.GetEnvironmentVariable("windir"),
}.Where(o => !string.IsNullOrEmpty(o)).Select(o=>o.ToLower()+@"\").ToList();
}

private void SetCurrentWorkingDirectory()
{
var dir = Directory.GetCurrentDirectory();
bool foundForbiddenFolder = CheckDirectory(dir);
if (foundForbiddenFolder)
Directory.SetCurrentDirectory(Path.GetTempPath());
}


/// <summary>
/// If a directory matches one of the forbidden folders, then we should reroute, so we return true in that case
/// </summary>
public bool CheckDirectory(string dir)
{
var checkdir = (dir.EndsWith("\\") ? dir : dir + "\\");
return ForbiddenFolders.Any(o => checkdir.StartsWith(o, StringComparison.OrdinalIgnoreCase));
}

protected ITestRunner GetRunnerFor(string assemblyName, IGrouping<string, TestCase> testCases)

{
var package = CreateTestPackage(assemblyName, testCases);
return TestEngine.GetRunner(package);
Expand Down Expand Up @@ -237,7 +272,7 @@ private TestPackage CreateTestPackage(string assemblyName, IGrouping<string, Tes
Directory.CreateDirectory(workDir);
package.Settings[PackageSettings.WorkDirectory] = workDir;
WorkDir = workDir;
// CreateTestOutputFolder(workDir);
// CreateTestOutputFolder(workDir);
return package;
}

Expand Down
61 changes: 61 additions & 0 deletions src/NUnitTestAdapterTests/CurrentDirectoryTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// ***********************************************************************
// Copyright (c) 2019-2019 Charlie Poole, Terje Sandstrom
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// ***********************************************************************

using System.Linq;
using NUnit.Framework;

namespace NUnit.VisualStudio.TestAdapter.Tests
{
public class CurrentDirectoryTests
{
[TestCase(@"C:\Windows")]
[TestCase(@"C:\Windows\Whatever")]
[TestCase(@"C:\Program Files\Something")]
[TestCase(@"C:\Program Files (x86)\Something")]
public void ThatWeFindForbiddenFolders(string folder)
{
var sut = new TestAdapter.NUnit3TestExecutor();
sut.InitializeForbiddenFolders();
Assert.That(sut.CheckDirectory(folder));
}

[TestCase(@"C:\Whatever")]
[TestCase(@"C:\WindowsWhatever")]
[TestCase(@"C:\Program Files Whatever\Something")]
public void ThatWeAcceptNonForbiddenFolders(string folder)
{
var sut = new TestAdapter.NUnit3TestExecutor();
sut.InitializeForbiddenFolders();
Assert.That(sut.CheckDirectory(folder),Is.False);
}

[Test]
public void ThatForbiddenFoldersAreUnique()
{
var sut = new TestAdapter.NUnit3TestExecutor();
sut.InitializeForbiddenFolders();
var sutunique = sut.ForbiddenFolders.Distinct();
Assert.That(sutunique.Count(),Is.EqualTo(sut.ForbiddenFolders.Count),"There are duplicate entries in ForbiddenFolders");
}
}
}
14 changes: 9 additions & 5 deletions src/NUnitTestAdapterTests/TestDiscoveryTests.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// ***********************************************************************
// Copyright (c) 2011-2017 Charlie Poole, Terje Sandstrom
// Copyright (c) 2011-2019 Charlie Poole, Terje Sandstrom
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
Expand Down Expand Up @@ -165,10 +165,14 @@ public void WhenAssemblyDontExist()
context,
messageLoggerStub,
this);
Assert.That(messageLoggerStub.Count, Is.EqualTo(noOfMessagesFound));
Assert.That(messageLoggerStub.LatestTestMessageLevel, Is.EqualTo(TestMessageLevel.Informational));
Assert.That(testcaseWasSent, Is.False);
Assert.That(!messageLoggerStub.ErrorMessages.Any());
Assert.Multiple(() =>
{
Assert.That(messageLoggerStub.Count, Is.EqualTo(noOfMessagesFound));
Assert.That(messageLoggerStub.LatestTestMessageLevel, Is.EqualTo(TestMessageLevel.Informational));
Assert.That(testcaseWasSent, Is.False);
Assert.That(!messageLoggerStub.ErrorMessages.Any());
Assert.That(!messageLoggerStub.WarningMessages.Any());
});
}

#if NET46
Expand Down

0 comments on commit 1eafc06

Please sign in to comment.