Access denied when deleting a file in TestFixtureTearDown
"Tom Fanning" <[email protected]> Thu, 13 Nov 2008 20:59:10 +0000
| Newsgroups | gmane.comp.windows.dotnet.nunit.user |
|---|---|
| Message-ID | <[email protected]> |
I am getting an UnauthorizedAccessException when calling File.Delete()
on a file created as part of a TestFixtureSetup method.
If I manually go and delete the given file, I have no problems - there
are no locks, nothing is read only etc.
Environment is .NET 2.0, Visual Studio 2008 SP1, nunit 2.4.7 (for
historical reasons - can easily move forwards if necessary), Windows
Server 2008 x64. My assembly is built for x86 only so runs in WoW
"mode".
Here's what I'm trying to do. Any ideas at all?
Kind regards
Tom
[TestFixture]
public class SchemaConsistencyChecks
{
private string baseFolder;
private bool tornDown = false;
[TestFixtureSetUp]
public void FixtureSetUp()
{
Console.WriteLine("Setting up SchemaConsistencyChecks.cs");
// find out where this DLL is. 3 levels back out is Solution Items.
string codeBase = Assembly.GetExecutingAssembly().CodeBase;
string dllLocation = codeBase.Replace("file:///",
"").Replace("/", @"\");
string slnItems = Directory.GetParent(
Directory.GetParent(
Directory.GetParent(
Path.GetDirectoryName(dllLocation)).FullName).FullName).FullName;
string mdb = Path.Combine(slnItems, "elas.mdb");
string mdw = Path.Combine(slnItems, "elas.mdw");
try
{
string tempPath = Path.GetTempPath();
baseFolder = Path.Combine(tempPath, Guid.NewGuid().ToString());
Directory.CreateDirectory(baseFolder);
File.Copy(mdb, Path.Combine(baseFolder, Path.GetFileName(mdb)));
File.Copy(mdw, Path.Combine(baseFolder, Path.GetFileName(mdw)));
}
catch
{
FixtureTearDown();
throw;
}
}
[TestFixtureTearDown]
public void FixtureTearDown()
{
if (!tornDown)
{
tornDown = true;
Console.WriteLine("Tearing down SchemaConsistencyChecks.cs");
if (File.Exists(Path.Combine(baseFolder, "elas.mdb")))
File.Delete(Path.Combine(baseFolder, "elas.mdb"));
if (File.Exists(Path.Combine(baseFolder, "elas.mdw")))
File.Delete(Path.Combine(baseFolder, "elas.mdw"));
if (Directory.Exists(baseFolder))
Directory.Delete(baseFolder);
}
}
[Test]
public void AccessDatabaseCopiedCorrectly()
{
Assert.That(File.Exists(Path.Combine(baseFolder, "elas.mdb")));
}
}
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/