lucene-cli: added integration tests for the IndexUpgradeCommand
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/92db055e Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/92db055e Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/92db055e Branch: refs/heads/master Commit: 92db055eae0fa42ebbea1f00a46d3cefb3e7980d Parents: faa85eb Author: Shad Storhaug <[email protected]> Authored: Mon Jul 10 18:05:57 2017 +0700 Committer: Shad Storhaug <[email protected]> Committed: Mon Jul 10 18:05:57 2017 +0700 ---------------------------------------------------------------------- src/Lucene.Net/Index/IndexUpgrader.cs | 6 +- src/Lucene.Net/Properties/AssemblyInfo.cs | 1 + .../Commands/CommandTestCase.cs | 27 ++++--- .../Commands/Index/IndexUpgradeCommandTest.cs | 77 ++++++++++++++++++++ .../index/index-upgrade/IndexUpgradeCommand.cs | 3 +- 5 files changed, 97 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucenenet/blob/92db055e/src/Lucene.Net/Index/IndexUpgrader.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net/Index/IndexUpgrader.cs b/src/Lucene.Net/Index/IndexUpgrader.cs index 9898fea..8cae11f 100644 --- a/src/Lucene.Net/Index/IndexUpgrader.cs +++ b/src/Lucene.Net/Index/IndexUpgrader.cs @@ -136,9 +136,9 @@ namespace Lucene.Net.Index #pragma warning restore 612, 618 } - private readonly Directory dir; - private readonly IndexWriterConfig iwc; - private readonly bool deletePriorCommits; + internal readonly Directory dir; // LUCENENET specific - made internal for testing CLI arguments + internal readonly IndexWriterConfig iwc; // LUCENENET specific - made internal for testing CLI arguments + internal readonly bool deletePriorCommits; // LUCENENET specific - made internal for testing CLI arguments /// <summary> /// Creates index upgrader on the given directory, using an <see cref="IndexWriter"/> using the given http://git-wip-us.apache.org/repos/asf/lucenenet/blob/92db055e/src/Lucene.Net/Properties/AssemblyInfo.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net/Properties/AssemblyInfo.cs b/src/Lucene.Net/Properties/AssemblyInfo.cs index 68b5b85..948bc8f 100644 --- a/src/Lucene.Net/Properties/AssemblyInfo.cs +++ b/src/Lucene.Net/Properties/AssemblyInfo.cs @@ -63,6 +63,7 @@ using System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("Lucene.Net.Tests.ICU")] // For Analysis.Util.TestSegmentingTokenizerBase [assembly: InternalsVisibleTo("Lucene.Net.Tests.Misc")] [assembly: InternalsVisibleTo("Lucene.Net.Tests.QueryParser")] +[assembly: InternalsVisibleTo("Lucene.Net.Tests.Cli")] // For lucene-cli // NOTE: Version information is in CommonAssemblyInfo.cs http://git-wip-us.apache.org/repos/asf/lucenenet/blob/92db055e/src/tools/Lucene.Net.Tests.Cli/Commands/CommandTestCase.cs ---------------------------------------------------------------------- diff --git a/src/tools/Lucene.Net.Tests.Cli/Commands/CommandTestCase.cs b/src/tools/Lucene.Net.Tests.Cli/Commands/CommandTestCase.cs index 7d933d7..9174667 100644 --- a/src/tools/Lucene.Net.Tests.Cli/Commands/CommandTestCase.cs +++ b/src/tools/Lucene.Net.Tests.Cli/Commands/CommandTestCase.cs @@ -1,4 +1,5 @@ -using NUnit.Framework; +using Lucene.Net.Util; +using NUnit.Framework; using System.Collections.Generic; using System.IO; using System.Linq; @@ -23,18 +24,8 @@ namespace Lucene.Net.Cli.Commands */ // LUCENENET TODO: Move to TestFramework ? - public abstract class CommandTestCase + public abstract class CommandTestCase : LuceneTestCase { - [SetUp] - protected virtual void SetUp() - { - } - - [TearDown] - protected virtual void TearDown() - { - } - protected abstract ConfigurationBase CreateConfiguration(MockConsoleApp app); protected abstract IList<Arg[]> GetRequiredArgs(); @@ -142,6 +133,18 @@ namespace Lucene.Net.Cli.Commands } } + /// <summary> + /// Runs a command against the current command configuration + /// </summary> + /// <param name="command">A command as a string that will be parsed.</param> + /// <returns>A MockConsoleApp that can be used to inspect the number of calls and arguments that will be passed to the Lucene CLI tool.</returns> + public virtual MockConsoleApp RunCommand(string command) + { + var output = new MockConsoleApp(); + var cmd = CreateConfiguration(output).Execute(command.ToArgs()); + return output; + } + public class MockConsoleApp { public void Main(string[] args) http://git-wip-us.apache.org/repos/asf/lucenenet/blob/92db055e/src/tools/Lucene.Net.Tests.Cli/Commands/Index/IndexUpgradeCommandTest.cs ---------------------------------------------------------------------- diff --git a/src/tools/Lucene.Net.Tests.Cli/Commands/Index/IndexUpgradeCommandTest.cs b/src/tools/Lucene.Net.Tests.Cli/Commands/Index/IndexUpgradeCommandTest.cs index 776c3d4..547fbab 100644 --- a/src/tools/Lucene.Net.Tests.Cli/Commands/Index/IndexUpgradeCommandTest.cs +++ b/src/tools/Lucene.Net.Tests.Cli/Commands/Index/IndexUpgradeCommandTest.cs @@ -1,4 +1,6 @@ using Lucene.Net.Cli.CommandLine; +using Lucene.Net.Index; +using Lucene.Net.Store; using NUnit.Framework; using System.Collections.Generic; @@ -63,5 +65,80 @@ namespace Lucene.Net.Cli.Commands { Assert.Throws<CommandParsingException>(() => AssertConsoleOutput("one two", "")); } + + /// <summary> + /// Integration test to ensure --verbose argument is passed through and parsed correctly by IndexUpgrader + /// </summary> + [Test] + public virtual void TestPassingVerboseArgument() + { + MockConsoleApp output; + IndexUpgrader upgrader; + + output = RunCommand(@"C:\test-index"); + upgrader = IndexUpgrader.ParseArgs(output.Args); + Assert.AreSame(Util.InfoStream.Default, upgrader.iwc.InfoStream); + + output = RunCommand(@"C:\test-index -v"); + upgrader = IndexUpgrader.ParseArgs(output.Args); + Assert.AreNotSame(Util.InfoStream.Default, upgrader.iwc.InfoStream); + + output = RunCommand(@"C:\test-index --verbose"); + upgrader = IndexUpgrader.ParseArgs(output.Args); + Assert.AreNotSame(Util.InfoStream.Default, upgrader.iwc.InfoStream); + } + + /// <summary> + /// Integration test to ensure --delete-prior-commits argument is passed through and parsed correctly by IndexUpgrader + /// </summary> + [Test] + public virtual void TestPassingDeletePriorCommitsArgument() + { + MockConsoleApp output; + IndexUpgrader upgrader; + + output = RunCommand(@"C:\test-index"); + upgrader = IndexUpgrader.ParseArgs(output.Args); + Assert.IsFalse(upgrader.deletePriorCommits); + + output = RunCommand(@"C:\test-index -d"); + upgrader = IndexUpgrader.ParseArgs(output.Args); + Assert.IsTrue(upgrader.deletePriorCommits); + + output = RunCommand(@"C:\test-index --delete-prior-commits"); + upgrader = IndexUpgrader.ParseArgs(output.Args); + Assert.IsTrue(upgrader.deletePriorCommits); + } + + /// <summary> + /// Integration test to ensure --directory-type argument is passed through and parsed correctly by IndexUpgrader + /// </summary> + [Test] + public virtual void TestPassingDirectoryTypeArgument() + { + MockConsoleApp output; + IndexUpgrader upgrader; + var tempDir = CreateTempDir("index-upgrader"); + + output = RunCommand(@"C:\test-index"); + upgrader = IndexUpgrader.ParseArgs(output.Args); + Assert.AreEqual(FSDirectory.Open(tempDir).GetType(), upgrader.dir.GetType()); + + output = RunCommand(@"C:\test-index -dir SimpleFSDirectory"); + upgrader = IndexUpgrader.ParseArgs(output.Args); + Assert.AreEqual(typeof(SimpleFSDirectory), upgrader.dir.GetType()); + + output = RunCommand(@"C:\test-index --directory-type SimpleFSDirectory"); + upgrader = IndexUpgrader.ParseArgs(output.Args); + Assert.AreEqual(typeof(SimpleFSDirectory), upgrader.dir.GetType()); + + output = RunCommand(@"C:\test-index -dir MMapDirectory"); + upgrader = IndexUpgrader.ParseArgs(output.Args); + Assert.AreEqual(typeof(MMapDirectory), upgrader.dir.GetType()); + + output = RunCommand(@"C:\test-index --directory-type MMapDirectory"); + upgrader = IndexUpgrader.ParseArgs(output.Args); + Assert.AreEqual(typeof(MMapDirectory), upgrader.dir.GetType()); + } } } http://git-wip-us.apache.org/repos/asf/lucenenet/blob/92db055e/src/tools/lucene-cli/commands/index/index-upgrade/IndexUpgradeCommand.cs ---------------------------------------------------------------------- diff --git a/src/tools/lucene-cli/commands/index/index-upgrade/IndexUpgradeCommand.cs b/src/tools/lucene-cli/commands/index/index-upgrade/IndexUpgradeCommand.cs index f849bb5..eadcc72 100644 --- a/src/tools/lucene-cli/commands/index/index-upgrade/IndexUpgradeCommand.cs +++ b/src/tools/lucene-cli/commands/index/index-upgrade/IndexUpgradeCommand.cs @@ -31,6 +31,7 @@ namespace Lucene.Net.Cli this.Name = "upgrade"; this.Description = FromResource("Description"); + this.ExtendedHelpText = FromResource("ExtendedHelpText"); this.Arguments.Add(new IndexDirectoryArgument()); this.DeletePriorCommitsOption = this.Option("-d|--delete-prior-commits", @@ -39,8 +40,6 @@ namespace Lucene.Net.Cli this.Options.Add(new VerboseOption()); this.Options.Add(new DirectoryTypeOption()); - this.ExtendedHelpText = FromResource("ExtendedHelpText"); - this.OnExecute(() => new IndexUpgradeCommand().Run(this)); }
