Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/cecil.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJb Evain <jb@evain.net>2017-04-26 04:03:05 +0300
committerJb Evain <jb@evain.net>2017-04-26 04:03:05 +0300
commit727305ba6c3b7d3eefe52439b5070332abbf15f0 (patch)
treee242d246938b14fb465687490a91c1dd6684547a
parentc4d772dce231ee9853b7ab8c8f5528cd1006bbb0 (diff)
Add test making sure file handles are released when failing to write an assembly
-rw-r--r--Test/Mono.Cecil.Tests/ModuleTests.cs16
1 files changed, 16 insertions, 0 deletions
diff --git a/Test/Mono.Cecil.Tests/ModuleTests.cs b/Test/Mono.Cecil.Tests/ModuleTests.cs
index 1533081..3c930e2 100644
--- a/Test/Mono.Cecil.Tests/ModuleTests.cs
+++ b/Test/Mono.Cecil.Tests/ModuleTests.cs
@@ -294,5 +294,21 @@ namespace Mono.Cecil.Tests {
using (var module = ModuleDefinition.ReadModule (path))
Assert.AreEqual ("Foo.Foo", module.Types [1].FullName);
}
+
+ [Test]
+ public void ExceptionInWriteDoesNotKeepLockOnFile ()
+ {
+ var path = Path.GetTempFileName ();
+
+ var module = ModuleDefinition.CreateModule ("FooFoo", ModuleKind.Dll);
+
+ // Invalid type to make writing throw
+ module.Types.Add (new TypeDefinition ("Foo", "Foo", (TypeAttributes) 0));
+
+ Assert.Throws<Exception>(() => module.Write (path));
+
+ // Ensure you can still delete the file
+ File.Delete (path);
+ }
}
}