From c3b689680b58f5c29b79143061d2d043a593ecb0 Mon Sep 17 00:00:00 2001 From: Paul Irwin Date: Wed, 8 Jan 2025 13:56:50 -0700 Subject: [PATCH] Finish [SuppressTempFileChecks] attribute functionality, #898 (#1084) * Finish [SuppressTempFileChecks] attribute functionality, #898 * PR feedback * Lucene.Net.Util.LuceneTestCase: Removed setting SuiteFailureMarker to false, which will cause all additional tests keep temporary files on disk --------- Co-authored-by: Shad Storhaug --- .../Util/LuceneTestCase.cs | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs b/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs index 3d8b53dc05..95af61982e 100644 --- a/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs +++ b/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs @@ -440,7 +440,6 @@ public SuppressCodecsAttribute(params string[] value) public string[] Value { get; private set; } } - // LUCENENET TODO: Finish implementation /// /// Marks any suites which are known not to close all the temporary /// files. This may prevent temp files and folders from being cleaned @@ -743,11 +742,11 @@ private static IList LoadCoreDirectories() /// internal static TestRuleSetupAndRestoreClassEnv ClassEnvRule { get; } = new TestRuleSetupAndRestoreClassEnv(); - // LUCENENET TODO + // LUCENENET TODO: Implement these rules /// /// Suite failure marker (any error in the test or suite scope). /// - public static readonly /*TestRuleMarkFailure*/ bool SuiteFailureMarker = true; // Means: was successful + public static /*TestRuleMarkFailure*/ bool SuiteFailureMarker = true; // Means: was successful ///// ///// Ignore tests after hitting a designated number of initial failures. This @@ -3091,9 +3090,10 @@ private static void RegisterToRemoveAfterSuite(FileSystemInfo f) [MethodImpl(MethodImplOptions.NoInlining)] protected string GetFullMethodName([CallerMemberName] string memberName = "") { - return string.Format("{0}+{1}", this.GetType().Name, memberName); + return $"{this.GetType().Name}+{memberName}"; } + // LUCENENET specific - this is equivalent to TemporaryFilesCleanupRule in Lucene private static void CleanupTemporaryFiles() { // Drain cleanup queue and clear it. @@ -3131,19 +3131,19 @@ private static void CleanupTemporaryFiles() } catch (Exception e) when (e.IsIOException()) { - // Type suiteClass = RandomizedContext.Current.GetTargetType; - // if (suiteClass.IsAnnotationPresent(typeof(SuppressTempFileChecks))) - // { - Console.Error.WriteLine("WARNING: Leftover undeleted temporary files " + e.Message); - return; - // } + if (RandomizedContext.CurrentContext.CurrentTest.TypeInfo?.Type.GetCustomAttribute(inherit: true) is { } suppressAttr) + { + Console.Error.WriteLine($"WARNING: Leftover undeleted temporary files (bugUrl: {suppressAttr.BugUrl}): {e.Message}"); + return; + } + throw; } } else { if (tempDirBasePath != null) { - Console.Error.WriteLine("NOTE: leaving temporary files on disk at: " + tempDirBasePath); + Console.Error.WriteLine($"NOTE: leaving temporary files on disk at: {tempDirBasePath}"); } } }