Merge pull request #8807 from peterhuene/fix-list-tool-command-tests

Fix list tool command tests to be localizable.
This commit is contained in:
Peter Huene 2018-03-16 15:06:59 -07:00 committed by GitHub
commit 6edbaea80d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 70 additions and 56 deletions

View file

@ -13,7 +13,7 @@ namespace Microsoft.DotNet.Cli
// Represents a table (with rows of type T) that can be printed to a terminal.
internal class PrintableTable<T>
{
private const string ColumnDelimiter = " ";
public const string ColumnDelimiter = " ";
private List<Column> _columns = new List<Column>();
private class Column

View file

@ -15,7 +15,7 @@ namespace Microsoft.DotNet.Tools.List.Tool
{
internal class ListToolCommand : CommandBase
{
private const string CommandDelimiter = ", ";
public const string CommandDelimiter = ", ";
private readonly AppliedOption _options;
private readonly IToolPackageStore _toolPackageStore;
private readonly IReporter _reporter;
@ -66,20 +66,20 @@ namespace Microsoft.DotNet.Tools.List.Tool
.ToArray();
}
private bool PackageHasCommands(IToolPackage p)
private bool PackageHasCommands(IToolPackage package)
{
try
{
// Attempt to read the commands collection
// If it fails, print a warning and treat as no commands
return p.Commands.Count >= 0;
return package.Commands.Count >= 0;
}
catch (Exception ex) when (ex is ToolConfigurationException)
{
_errorReporter.WriteLine(
string.Format(
LocalizableStrings.InvalidPackageWarning,
p.Id,
package.Id,
ex.Message).Yellow());
return false;
}

View file

@ -62,14 +62,7 @@ namespace Microsoft.DotNet.Tests.Commands
command.Execute().Should().Be(0);
_reporter.Lines.Should().Equal(
string.Format(
"{0} {1} {2}",
LocalizableStrings.PackageIdColumn,
LocalizableStrings.VersionColumn,
LocalizableStrings.CommandsColumn
),
"-------------------------------------");
_reporter.Lines.Should().Equal(EnumerateExpectedTableLines(store.Object));
}
[Fact]
@ -92,15 +85,7 @@ namespace Microsoft.DotNet.Tests.Commands
command.Execute().Should().Be(0);
_reporter.Lines.Should().Equal(
string.Format(
"{0} {1} {2}",
LocalizableStrings.PackageIdColumn,
LocalizableStrings.VersionColumn,
LocalizableStrings.CommandsColumn
),
"-------------------------------------------",
"test.tool 1.3.5-preview foo ");
_reporter.Lines.Should().Equal(EnumerateExpectedTableLines(store.Object));
}
[Fact]
@ -137,17 +122,7 @@ namespace Microsoft.DotNet.Tests.Commands
command.Execute().Should().Be(0);
_reporter.Lines.Should().Equal(
string.Format(
"{0} {1} {2} ",
LocalizableStrings.PackageIdColumn,
LocalizableStrings.VersionColumn,
LocalizableStrings.CommandsColumn
),
"----------------------------------------------",
"another.tool 2.7.3 bar ",
"some.tool 1.0.0 fancy-foo",
"test.tool 1.3.5-preview foo ");
_reporter.Lines.Should().Equal(EnumerateExpectedTableLines(store.Object));
}
[Fact]
@ -172,15 +147,7 @@ namespace Microsoft.DotNet.Tests.Commands
command.Execute().Should().Be(0);
_reporter.Lines.Should().Equal(
string.Format(
"{0} {1} {2} ",
LocalizableStrings.PackageIdColumn,
LocalizableStrings.VersionColumn,
LocalizableStrings.CommandsColumn
),
"------------------------------------------------",
"test.tool 1.3.5-preview foo, bar, baz");
_reporter.Lines.Should().Equal(EnumerateExpectedTableLines(store.Object));
}
[Fact]
@ -212,20 +179,11 @@ namespace Microsoft.DotNet.Tests.Commands
command.Execute().Should().Be(0);
_reporter.Lines.Should().Equal(
string.Format(
LocalizableStrings.InvalidPackageWarning,
"another.tool",
"broken"
).Yellow(),
string.Format(
"{0} {1} {2} ",
LocalizableStrings.PackageIdColumn,
LocalizableStrings.VersionColumn,
LocalizableStrings.CommandsColumn
),
"--------------------------------------------",
"some.tool 1.0.0 fancy-foo",
"test.tool 1.3.5-preview foo ");
EnumerateExpectedTableLines(store.Object).Prepend(
string.Format(
LocalizableStrings.InvalidPackageWarning,
"another.tool",
"broken").Yellow()));
}
private IToolPackage CreateMockToolPackage(string id, string version, IReadOnlyList<CommandSettings> commands)
@ -257,5 +215,61 @@ namespace Microsoft.DotNet.Tests.Commands
store,
_reporter);
}
private IEnumerable<string> EnumerateExpectedTableLines(IToolPackageStore store)
{
string GetCommandsString(IToolPackage package)
{
return string.Join(ListToolCommand.CommandDelimiter, package.Commands.Select(c => c.Name));
}
var packages = store.EnumeratePackages().Where(PackageHasCommands).OrderBy(package => package.Id);
var columnDelimiter = PrintableTable<IToolPackageStore>.ColumnDelimiter;
int packageIdColumnWidth = LocalizableStrings.PackageIdColumn.Length;
int versionColumnWidth = LocalizableStrings.VersionColumn.Length;
int commandsColumnWidth = LocalizableStrings.CommandsColumn.Length;
foreach (var package in packages)
{
packageIdColumnWidth = Math.Max(packageIdColumnWidth, package.Id.ToString().Length);
versionColumnWidth = Math.Max(versionColumnWidth, package.Version.ToNormalizedString().Length);
commandsColumnWidth = Math.Max(commandsColumnWidth, GetCommandsString(package).Length);
}
yield return string.Format(
"{0}{1}{2}{3}{4}",
LocalizableStrings.PackageIdColumn.PadRight(packageIdColumnWidth),
columnDelimiter,
LocalizableStrings.VersionColumn.PadRight(versionColumnWidth),
columnDelimiter,
LocalizableStrings.CommandsColumn.PadRight(commandsColumnWidth));
yield return new string(
'-',
packageIdColumnWidth + versionColumnWidth + commandsColumnWidth + (columnDelimiter.Length * 2));
foreach (var package in packages)
{
yield return string.Format(
"{0}{1}{2}{3}{4}",
package.Id.ToString().PadRight(packageIdColumnWidth),
columnDelimiter,
package.Version.ToNormalizedString().PadRight(versionColumnWidth),
columnDelimiter,
GetCommandsString(package).PadRight(commandsColumnWidth));
}
}
private static bool PackageHasCommands(IToolPackage package)
{
try
{
return package.Commands.Count >= 0;
}
catch (Exception ex) when (ex is ToolConfigurationException)
{
return false;
}
}
}
}