From 77c8001db4980b40e1bd6137016dc9267054523f Mon Sep 17 00:00:00 2001 From: SteveGilham Date: Sun, 7 Apr 2024 12:42:04 +0100 Subject: [PATCH] Mitigate exception messages from tidying the recorder assembly --- AltCover.Engine/Runner.fs | 2 ++ AltCover.Engine/Strings.eo.resx | 3 +++ AltCover.Engine/Strings.resx | 3 +++ AltCover.Engine/Tasks.fs | 13 ++++++++++--- AltCover.Tests/Tests3.fs | 11 ++++++++++- 5 files changed, 28 insertions(+), 4 deletions(-) diff --git a/AltCover.Engine/Runner.fs b/AltCover.Engine/Runner.fs index 580a29c8..4a7dc9e9 100644 --- a/AltCover.Engine/Runner.fs +++ b/AltCover.Engine/Runner.fs @@ -1486,6 +1486,8 @@ module internal Runner = |> J.getFirstOperandAsNumber |> enum + use _ = fst pair + let hits = Dictionary>() diff --git a/AltCover.Engine/Strings.eo.resx b/AltCover.Engine/Strings.eo.resx index 3500da2d..3ed9036b 100644 --- a/AltCover.Engine/Strings.eo.resx +++ b/AltCover.Engine/Strings.eo.resx @@ -471,4 +471,7 @@ Se la opcio ne ĉeestas, tiam la defaŭlta estas 'OC'. Laŭvola: porteblaj operacioj - priraporta raporto, kontroldosiero kaj registritaj datumoj samlokaj kun la registrilo. + + Malsukcesis forigi dosieron {0} + \ No newline at end of file diff --git a/AltCover.Engine/Strings.resx b/AltCover.Engine/Strings.resx index 05875a38..ae2534d2 100644 --- a/AltCover.Engine/Strings.resx +++ b/AltCover.Engine/Strings.resx @@ -475,4 +475,7 @@ If the option is not present, then the default is 'OC'. Optional: portable operations - coverage report, control file and recorded data co-located with the recorder assembly + + Failed to delete file {0} + \ No newline at end of file diff --git a/AltCover.Engine/Tasks.fs b/AltCover.Engine/Tasks.fs index 4226bee2..58d71bd8 100644 --- a/AltCover.Engine/Tasks.fs +++ b/AltCover.Engine/Tasks.fs @@ -540,13 +540,20 @@ type RetryDelete() = Justification = "MSBuild tasks use arrays")>] member val Files: string array = [||] with get, set - member internal self.Write message = - ``base``.Log.LogMessage(MessageImportance.High, message) + [] + member internal self.Write0 (o: string->unit) (f:string) (_:string) : unit = + CommandLine.Format.Local("FailedToDelete", f) + |> o + + member internal self.Write (f:string) (dummy:string) : unit = + self.Write0 (``base``.Log.LogWarning) f dummy override self.Execute() = if self.Files.IsNotNull then self.Files |> Seq.filter File.Exists - |> Seq.iter (CommandLine.I.doRetry File.Delete self.Write 10 1000 0) + |> Seq.iter (fun f -> (CommandLine.I.doRetry File.Delete (self.Write f) 100 100 0 f)) true \ No newline at end of file diff --git a/AltCover.Tests/Tests3.fs b/AltCover.Tests/Tests3.fs index e9139047..134e1a24 100644 --- a/AltCover.Tests/Tests3.fs +++ b/AltCover.Tests/Tests3.fs @@ -4899,6 +4899,15 @@ module AltCoverTests3 = monitor ("Hello") test <@ builder.ToString() = "Hello" @> + let write0 = + subject + .GetType() + .GetMethod("Write0", BindingFlags.NonPublic ||| BindingFlags.Instance) + + let mutable written = "written" + write0.Invoke(subject, [| (fun x -> written <- x); "xx"; "yy" |]) |> ignore + test <@ written = "Failed to delete file xx" @> + let write = subject .GetType() @@ -4906,7 +4915,7 @@ module AltCoverTests3 = let ex = Assert.Throws(fun () -> - write.Invoke(subject, [| "xx" |]) |> ignore) + write.Invoke(subject, [| "xx"; "yy" |]) |> ignore) test <@ ex.InnerException.GetType().FullName = "System.InvalidOperationException" @> // Recorder.fs => Recorder.Tests \ No newline at end of file