Example #1
0
        public void TestUpdateThrowExceptionThenInteractive()
        {
            tester.SetInputs(new[] { "y" });
            manager = new DownloadManager(tester.Mock());

            var packageInitialMock = new Mock <IPackage>();

            packageInitialMock.Setup((o) => o.GetInstallationSource()).Returns(InstallationSource.Dist);
            packageInitialMock.Setup((o) => o.GetDistType()).Returns("foo");

            var packageTargetMock = new Mock <IPackage>();

            packageTargetMock.Setup((o) => o.GetInstallationSource()).Returns(InstallationSource.Dist);
            packageTargetMock.Setup((o) => o.GetDistType()).Returns("foo");

            var downloaderMock = new Mock <IDownloader>();

            downloaderMock.Setup((o) => o.InstallationSource).Returns(InstallationSource.Dist);
            downloaderMock.Setup((o) => o.Update(packageInitialMock.Object, packageTargetMock.Object, "cwd"))
            .Throws(new RuntimeException("want interactive"));

            manager.SetDownloader("foo", downloaderMock.Object);

            manager.Update(packageInitialMock.Object, packageTargetMock.Object, "cwd");

            downloaderMock.Verify((o) => o.Remove(packageInitialMock.Object, "cwd"));
            downloaderMock.Verify((o) => o.Install(packageTargetMock.Object, "cwd"));
        }
Example #2
0
        public void TestAskConfirmation()
        {
            var tester = new TesterIOConsole();

            tester.SetInputs(new[] { "yes" });

            var ioConsole = tester.Mock();
            var answer    = ioConsole.AskConfirmation("Do you like me?", false);

            Assert.AreEqual(true, answer);
        }
Example #3
0
        public void TestAsk()
        {
            var tester = new TesterIOConsole();

            tester.SetInputs(new[] { "menghanyu" });
            var ioConsole = tester.Mock();
            var answer    = ioConsole.Ask("What's your name?", "miaomiao");

            Assert.AreEqual("menghanyu", (string)answer);
            Assert.AreEqual("What's your name?", tester.GetDisplay());
        }
Example #4
0
        public void TestSetHelper()
        {
            var tester = new TesterIOConsole();

            tester.SetInputs(new[] { "menghanyu" });

            var ioConsole = tester.Mock();

            ioConsole.SetHelperQuestion(new HelperQuestionDefault());
            var answer = ioConsole.Ask("What's your name?", "miaomiao");

            Assert.AreEqual("menghanyu", (string)answer);
            Assert.AreEqual(
                @" What's your name? [miaomiao]:
 > ", tester.GetDisplay());
        }
Example #5
0
        public void TestAskAndValidate()
        {
            var tester = new TesterIOConsole();

            tester.SetInputs(new[] { "menghanyu", "miaomiao" });

            var ioConsole = tester.Mock();
            var answer    = ioConsole.AskAndValidate("What's your name?", (value) =>
            {
                if (value == "menghanyu")
                {
                    throw new System.Exception("Not allowed to be called menghanyu");
                }

                return(value);
            });

            Assert.AreEqual("miaomiao", (string)answer);
        }
Example #6
0
        public void TestTesterIOConsoleMock()
        {
            var tester = new TesterIOConsole();

            tester.SetInputs(new[] { "menghanyu" });

            var io = tester.Mock(AbstractTester.OptionStdErrorSeparately(true));

            Assert.AreEqual("menghanyu", (string)io.Ask("what's your name?", "miaomiao"));
            io.Write("hello world");
            Assert.AreEqual(
                @"hello world
", tester.GetDisplay());

            io.WriteError("hello world error");
            Assert.AreEqual(
                @"what's your name?hello world error
", tester.GetDisplayError());
        }
Example #7
0
        public void TestAskChoiceMult()
        {
            var tester = new TesterIOConsole();

            tester.SetInputs(new[] { "0,tutu", "menghanyu" });

            var choices = new[]
            {
                "miaomiao",
                "menghanyu",
                "tutu",
            };

            var ioConsole = tester.Mock();
            var answer    = ioConsole.AskChoiceMult("What's your name?", choices, "tutu");

            CollectionAssert.AreEqual(new[] { 0, 2 }, answer);

            answer = ioConsole.AskChoiceMult("What's your name?", choices, "miaomiao");
            CollectionAssert.AreEqual(new[] { 1 }, answer);
        }
Example #8
0
        public void TestHasLocalChangeInteractWithUser()
        {
            var packageMock = new Mock <IPackage>();

            packageMock.Setup((o) => o.GetSourceReference())
            .Returns("ref");
            packageMock.Setup((o) => o.GetSourceUris())
            .Returns(new[] { "https://github.com/bucket/bucket" });
            packageMock.Setup((o) => o.GetVersion())
            .Returns("1.0.0.0");

            var processMock        = new Mock <IProcessExecutor>();
            var expectedGitCommand = WinCompat("git show-ref --head -d");

            processMock.Setup(expectedGitCommand, expectedCwd: WinCompat(root));

            expectedGitCommand = WinCompat("git status --porcelain --untracked-files=no");
            var stdout =
                @" M 1-foo/bar.cs
 M 2-foo/baz.cs
 M 3-foobar.json
 M 4-foo/aux/bar.cs
 M 5-foobar.json
 M 6-foo/aux/bar.cs
 M 7-foo/aux/bar.cs
 M 8-foo/aux/bar.cs
 M 9-foo/aux/bar.cs
 M 10-foo/aux/bar.cs
 M 11-foo/aux/bar.cs
 M 12-foo/aux/bar.cs
";

            processMock.Setup(expectedGitCommand, actualOut: stdout, expectedCwd: WinCompat(root));

            expectedGitCommand = WinCompat("git stash --include-untracked");
            processMock.Setup(expectedGitCommand, expectedCwd: WinCompat(root));

            expectedGitCommand = WinCompat("git diff HEAD");
            stdout             =
                @"index 8ba5bbe..9cda3f0 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,6 @@
 foobarbaz
 foobarbaz

+foo
 foobarbaz
 foobarbaz
";
            processMock.Setup(expectedGitCommand, actualOut: stdout, expectedCwd: WinCompat(root));

            expectedGitCommand = WinCompat("git stash pop");
            processMock.Setup(expectedGitCommand, expectedCwd: WinCompat(root));

            expectedGitCommand = WinCompat("git log ref..ref --pretty=format:'%h - %an: %s'");
            stdout             =
                @"c5bd155 - foo: bar
ccf0f2f - bar: baz
ac027b9 - foo: baz";
            processMock.Setup(expectedGitCommand, actualOut: stdout, expectedCwd: WinCompat(root));

            if (!Directory.Exists(root + "/.git"))
            {
                Directory.CreateDirectory(root + "/.git");
            }

            tester.SetInputs(new[] { "v", "d", "?", "s" });
            io = tester.Mock(AbstractTester.OptionVerbosity(OutputOptions.VerbosityVerbose));

            var downloader = CreateDownloaderMock(process: processMock.Object);

            downloader.Update(packageMock.Object, packageMock.Object, root);

            var display = tester.GetDisplay();

            StringAssert.Contains(display, "The package has modified files");
            StringAssert.Contains(display, "2 more files modified, choose \"v\" to view the full list.");
            StringAssert.Contains(display, "Discard changes [y,n,v,d,s,?,h]?");
            StringAssert.Contains(display, "stash changes and try to reapply them after the update.");
            StringAssert.Contains(display, "Re-applying stashed changes");
            StringAssert.Contains(display, "Pulling in changes:");

            processMock.VerifyAll();
        }