dotnet-installer/test/dotnet.Tests/CommandTests/CompleteCommandTests.cs

195 lines
5.9 KiB
C#

// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System;
using System.IO;
using System.Linq;
using FluentAssertions;
using Microsoft.DotNet.Cli;
using Microsoft.DotNet.Tools.Test.Utilities;
using Xunit;
namespace Microsoft.DotNet.Tests.Commands
{
public class CompleteCommandTests : TestBase
{
[Fact]
public void GivenOnlyDotnetItSuggestsTopLevelCommandsAndOptions()
{
var expected = new string[] {
"--diagnostics",
"--help",
"--info",
"--list-runtimes",
"--list-sdks",
"--version",
"-d",
"-h",
"add",
"build",
"build-server",
"clean",
"help",
"list",
"migrate",
"msbuild",
"new",
"nuget",
"pack",
"publish",
"remove",
"restore",
"run",
"sln",
"store",
"test",
"tool",
"vstest"
};
var reporter = new BufferedReporter();
CompleteCommand.RunWithReporter(new[] { "dotnet " }, reporter).Should().Be(0);
reporter.Lines.Should().Equal(expected.OrderBy(c => c));
}
[Fact]
public void GivenASlashItSuggestsTopLevelOptions()
{
var expected = new string[] {
"--diagnostics",
"--help",
"--info",
"--list-runtimes",
"--list-sdks",
"--version",
"-d",
"-h",
"build-server" // This should be removed when completion is based on "starts with" rather than "contains".
// See https://github.com/dotnet/cli/issues/8958.
};
var reporter = new BufferedReporter();
CompleteCommand.RunWithReporter(new[] { "dotnet -" }, reporter).Should().Be(0);
reporter.Lines.Should().Equal(expected.OrderBy(c => c));
}
[Fact(Skip = "https://github.com/dotnet/cli/issues/9737")]
public void GivenNewCommandItDisplaysCompletions()
{
var expected = new string[] {
"--dry-run",
"--force",
"--help",
"--install",
"--language",
"--list",
"--name",
"--nuget-source",
"--output",
"--type",
"--uninstall",
"-h",
"-i",
"-l",
"-lang",
"-n",
"-o",
"-u"
};
var reporter = new BufferedReporter();
CompleteCommand.RunWithReporter(new[] { "dotnet new " }, reporter).Should().Be(0);
reporter.Lines.Should().Equal(expected.OrderBy(c => c));
}
[Fact]
public void GivenNuGetCommandItDisplaysCompletions()
{
var expected = new string[] {
"--help",
"--verbosity",
"--version",
"-h",
"-v",
"delete",
"locals",
"push",
};
var reporter = new BufferedReporter();
CompleteCommand.RunWithReporter(new[] { "dotnet nuget " }, reporter).Should().Be(0);
reporter.Lines.Should().Equal(expected.OrderBy(c => c));
}
[Fact]
public void GivenNuGetDeleteCommandItDisplaysCompletions()
{
var expected = new string[] {
"--api-key",
"--force-english-output",
"--help",
"--no-service-endpoint",
"--non-interactive",
"--source",
"-h",
"-k",
"-s"
};
var reporter = new BufferedReporter();
CompleteCommand.RunWithReporter(new[] { "dotnet nuget delete " }, reporter).Should().Be(0);
reporter.Lines.Should().Equal(expected.OrderBy(c => c));
}
[Fact]
public void GivenNuGetLocalsCommandItDisplaysCompletions()
{
var expected = new string[] {
"--clear",
"--force-english-output",
"--help",
"--list",
"-c",
"-h",
"-l",
"all",
"global-packages",
"http-cache",
"temp"
};
var reporter = new BufferedReporter();
CompleteCommand.RunWithReporter(new[] { "dotnet nuget locals " }, reporter).Should().Be(0);
reporter.Lines.Should().Equal(expected.OrderBy(c => c));
}
[Fact]
public void GivenNuGetPushCommandItDisplaysCompletions()
{
var expected = new string[] {
"--api-key",
"--disable-buffering",
"--force-english-output",
"--help",
"--no-service-endpoint",
"--no-symbols",
"--source",
"--symbol-api-key",
"--symbol-source",
"--timeout",
"-d",
"-h",
"-k",
"-n",
"-s",
"-sk",
"-ss",
"-t"
};
var reporter = new BufferedReporter();
CompleteCommand.RunWithReporter(new[] { "dotnet nuget push " }, reporter).Should().Be(0);
reporter.Lines.Should().Equal(expected.OrderBy(c => c));
}
}
}