diff --git a/AltCover.Engine/Tasks.fs b/AltCover.Engine/Tasks.fs index 83689d80..b76c58a9 100644 --- a/AltCover.Engine/Tasks.fs +++ b/AltCover.Engine/Tasks.fs @@ -332,6 +332,9 @@ type Echo() = true +[] type RunSettings() = inherit Task(null) @@ -354,6 +357,9 @@ type RunSettings() = Justification = "Unit test accessor")>] member val internal MessageIO: (string -> unit) option = None with get, set + member val internal GetTempFileName: Func = + Func(Path.GetTempFileName) with get, set + override self.Execute() = let signal = Option.defaultValue self.Message self.MessageIO @@ -367,7 +373,7 @@ type RunSettings() = |> sprintf "Settings Before: %s" |> signal - let tempFile = Path.GetTempFileName() + let tempFile = self.GetTempFileName.Invoke() try let settings = diff --git a/AltCover.Tests/Tests3.fs b/AltCover.Tests/Tests3.fs index 8c38ca0e..5db6e05d 100644 --- a/AltCover.Tests/Tests3.fs +++ b/AltCover.Tests/Tests3.fs @@ -4455,10 +4455,29 @@ module AltCoverTests3 = Console.SetOut(fst saved) Console.SetError(snd saved) + let MakeRunSettings () = + let subject = RunSettings() + + let temper = + subject + .GetType() + .GetProperty("GetTempFileName", BindingFlags.Instance ||| BindingFlags.NonPublic) + + let basic = + temper.GetValue(subject) :?> Func + + let badge = + (fun () -> + let t1 = basic.Invoke() + Path.Combine(Path.GetDirectoryName t1, "altcover.test." + Path.GetFileName(t1))) + + temper.SetValue(subject, Func(badge)) + subject + [] let RunSettingsFailsIfCollectorNotFound () = Main.init () - let subject = RunSettings() + let subject = MakeRunSettings() let dc = subject @@ -4474,6 +4493,7 @@ module AltCoverTests3 = .GetProperty("MessageIO", BindingFlags.Instance ||| BindingFlags.NonPublic) write.SetValue(subject, Some(fun (s: string) -> ())) + Assert.That(subject.Execute(), Is.False) Assert.That(subject.Extended, Is.Empty) CommandLine.verbosity <- 0 @@ -4495,7 +4515,7 @@ module AltCoverTests3 = [] let RunSettingsWorksIfOK () = Main.init () - let subject = RunSettings() + let subject = MakeRunSettings() let dc = subject @@ -4517,9 +4537,18 @@ module AltCoverTests3 = Assert.That(subject.Execute(), Is.True) Assert.That(subject.Extended.EndsWith(".altcover.runsettings")) + Assert.That( + Path + .GetFileName(subject.Extended) + .StartsWith("altcover.test.") + ) + let result = subject.Extended |> File.ReadAllText + [ subject.Extended ] + |> Seq.iter (fun f -> maybeIOException (fun () -> File.Delete f)) + Assert.That( result .Replace("\r", String.Empty) @@ -4542,7 +4571,7 @@ module AltCoverTests3 = [] let RunSettingsExtendsOK () = Main.init () - let subject = RunSettings() + let subject = MakeRunSettings() let dc = subject @@ -4571,6 +4600,9 @@ module AltCoverTests3 = let result = subject.Extended |> File.ReadAllText + [ subject.Extended ] + |> Seq.iter (fun f -> maybeIOException (fun () -> File.Delete f)) + Assert.That( result .Replace("\r", String.Empty) @@ -4593,7 +4625,7 @@ module AltCoverTests3 = [] let RunSettingsThrowsIfUninitialized () = Main.init () - let subject = RunSettings() + let subject = MakeRunSettings() let dc = subject @@ -4616,7 +4648,7 @@ module AltCoverTests3 = [] let RunSettingsRecoversOK () = Main.init () - let subject = RunSettings() + let subject = MakeRunSettings() let dc = subject @@ -4641,6 +4673,9 @@ module AltCoverTests3 = let result = subject.Extended |> File.ReadAllText + [ subject.Extended ] + |> Seq.iter (fun f -> maybeIOException (fun () -> File.Delete f)) + Assert.That( result .Replace("\r", String.Empty) diff --git a/nupkg/build/AltCover.targets b/nupkg/build/AltCover.targets index e399da40..fe4d5a3a 100644 --- a/nupkg/build/AltCover.targets +++ b/nupkg/build/AltCover.targets @@ -190,6 +190,27 @@ VSTestNoLogo="$(VSTestNoLogo)" /> + + + + + + + + + + + + + + + + + + + + @@ -212,14 +233,6 @@ - - - - - - - - - + \ No newline at end of file