This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit 5f1b653f552d38f5e082f4a3ff5104b67b3e5540
Author: Shad Storhaug <[email protected]>
AuthorDate: Wed Dec 22 21:54:33 2021 +0700

    Lucene.Net.TestFramework.Util.LuceneTestCase: Updated XML doc comments on 
how to configure the random seed and culture via file, attribute, or 
environment variable.
---
 .../Support/JavaCompatibility/LuceneTestCase.cs    |   8 +-
 .../Util/LuceneTestCase.cs                         | 111 ++++++++++++++-------
 2 files changed, 79 insertions(+), 40 deletions(-)

diff --git 
a/src/Lucene.Net.TestFramework/Support/JavaCompatibility/LuceneTestCase.cs 
b/src/Lucene.Net.TestFramework/Support/JavaCompatibility/LuceneTestCase.cs
index 7b0da1a..e20635d 100644
--- a/src/Lucene.Net.TestFramework/Support/JavaCompatibility/LuceneTestCase.cs
+++ b/src/Lucene.Net.TestFramework/Support/JavaCompatibility/LuceneTestCase.cs
@@ -25,10 +25,10 @@ namespace Lucene.Net.Util
      * limitations under the License.
      */
 
-    /// <summary>
-    /// LUCENENET specific extensions to <see cref="LuceneTestCase"/> to make 
it easier to port tests
-    /// from Java with fewer changes.
-    /// </summary>
+
+    // LUCENENET specific extensions to <see cref="LuceneTestCase"/> to make 
it easier to port tests
+    // from Java with fewer changes.
+    // LUCENENET NOTE: Don't add xml doc comments here, they must be applied 
only to the main LuceneTestCase class
     [System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE1006:Naming 
Styles", Justification = "These methods are for making porting tests from Java 
simpler")]
     public abstract partial class LuceneTestCase
     {
diff --git a/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs 
b/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
index 968c1d9..6b99270 100644
--- a/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
+++ b/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
@@ -70,7 +70,7 @@ namespace Lucene.Net.Util
     /// static methods annotated with <see cref="OneTimeSetUp"/> and <see 
cref="OneTimeTearDown"/>. Any
     /// code in these methods is executed within the test framework's control 
and
     /// ensure proper setup has been made. <b>Try not to use static 
initializers
-    /// (including complex final field initializers).</b> Static initializers 
are
+    /// (including complex readonly field initializers).</b> Static 
initializers are
     /// executed before any setup rules are fired and may cause you (or 
somebody
     /// else) headaches.
     /// </para>
@@ -87,42 +87,81 @@ namespace Lucene.Net.Util
     /// <para>
     /// Any test method annotated with <see cref="Test"/> is considered a test 
case.
     /// </para>
+    ///
+    /// <h3>Randomized execution and test facilities</h3>
+    ///
+    /// <para>
+    /// <see cref="LuceneTestCase"/> uses a custom <see 
cref="TestFixtureAttribute"/> to execute test cases.
+    /// The custom <see cref="TestFixtureAttribute"/> has built-in support for 
test randomization
+    /// including access to a repeatable <see cref="Random"/> instance. See
+    /// <see cref="Random"/> property. Any test using <see cref="Random"/> 
acquired from
+    /// <see cref="Random"/> should be fully reproducible (assuming no race 
conditions
+    /// between threads etc.). The initial seed for a test case is reported in 
the failure
+    /// test message.
+    /// </para>
+    /// <para>
+    /// The seed can be configured with a RunSettings file, a 
<c>lucene.testSettings.config</c> JSON file,
+    /// an environment variable, or using <see cref="RandomSeedAttribute"/> at 
the assembly level.
+    /// It is recommended to configure the culture also, since they are 
randomly picked from a list
+    /// of cultures installed on a given machine, so the culture will vary 
from one machine to the next.
+    /// </para>
+    /// 
+    /// <h4><i>.runsettings</i> File Configuration Example</h4>
+    /// 
+    /// <code>
+    /// &lt;RunSettings&gt;
+    ///   &lt;TestRunParameters&gt;
+    ///     &lt;Parameter name="tests:seed" value="0x1ffa1d067056b0e6" /&gt;
+    ///     &lt;Parameter name="tests:culture" value="sw-TZ" /&gt;
+    ///   &lt;/TestRunParameters&gt;
+    /// &lt;/RunSettings&gt;
+    /// </code>
+    /// <para>
+    /// See the <i>.runsettings</i> documentation at: <a 
href="https://docs.microsoft.com/en-us/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file";>
+    /// 
https://docs.microsoft.com/en-us/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file</a>.
+    /// </para>
+    /// 
+    /// <h4>Attribute Configuration Example</h4>
+    /// 
+    /// <code>
+    /// [assembly: Lucene.Net.Util.RandomSeed("0x1ffa1d067056b0e6")]
+    /// [assembly: NUnit.Framework.SetCulture("sw-TZ")]
+    /// </code>
+    ///
+    /// <h4><i>lucene.testSettings.config</i> File Configuration Example</h4>
+    ///
+    /// <para>
+    /// Add a file named <i>lucene.testSettings.config</i> to the executable 
directory or
+    /// any directory between the executable and the root of the drive with 
the following contents.
+    /// </para>
+    /// 
+    /// <code>
+    /// {
+    ///          "tests": {
+    ///     "seed": "0x1ffa1d067056b0e6",
+    ///     "culture": "sw-TZ"
+    ///          }
+    /// }
+    /// </code>
+    ///
+    /// <h4>Environment Variable Configuration Example</h4>
+    ///
+    /// <list type="table">
+    ///     <listheader>
+    ///         <term>Variable</term>
+    ///         <term>Value</term>
+    ///     </listheader>
+    ///     <item>
+    ///         <term>lucene:tests:seed</term>
+    ///         <term>0x1ffa1d067056b0e6</term>
+    ///     </item>
+    ///     <item>
+    ///         <term>lucene:tests:culture</term>
+    ///         <term>sw-TZ</term>
+    ///     </item>
+    /// </list>
+    /// 
     /// </summary>
-
-    // LUCENENET TODO: Randomized seed
-    ///// <h3>Randomized execution and test facilities</h3>
-    /////
-    ///// <para>
-    ///// <see cref="LuceneTestCase"/> uses <see cref="RandomizedRunner"/> to 
execute test cases.
-    ///// <see cref="RandomizedRunner"/> has built-in support for tests 
randomization
-    ///// including access to a repeatable <see cref="Random"/> instance. See
-    ///// <see cref="Random"/> property. Any test using <see cref="Random"/> 
acquired from
-    ///// <see cref="Random"/> should be fully reproducible (assuming no race 
conditions
-    ///// between threads etc.). The initial seed for a test case is reported 
in many
-    ///// ways:
-    ///// <list type="bullet">
-    /////     <item>
-    /////         <description>
-    /////             as part of any exception thrown from its body (inserted 
as a dummy stack
-    /////             trace entry),
-    /////         </description>
-    /////     </item>
-    /////     <item>
-    /////         <description>
-    /////             as part of the main thread executing the test case (if 
your test hangs,
-    /////             just dump the stack trace of all threads and you'll see 
the seed),
-    /////         </description>
-    /////     </item>
-    /////     <item>
-    /////         <description>
-    /////             the master seed can also be accessed manually by getting 
the current
-    /////             context (<see cref="RandomizedContext.Current"/>) and 
then calling
-    /////             <see cref="RandomizedContext.RunnerSeed"/>.
-    /////         </description>
-    /////     </item>
-    ///// </list>
-    ///// </para>
-    ///// </summary>
     [TestFixture]
     public abstract partial class LuceneTestCase //: Assert // Wait long for 
leaked threads to complete before failure. zk needs this. -  See LUCENE-3995 
for rationale.
     {

Reply via email to