195 lines
5.9 KiB
C#
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));
|
|
}
|
|
}
|
|
}
|