Improve error message when project file does not exist.

Resolve #171
This commit is contained in:
Nate McMaster 2016-09-20 10:16:52 -07:00
Родитель 436ad5fd65
Коммит 7bafb00f05
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: BD729980AA6A21BD
4 изменённых файлов: 36 добавлений и 0 удалений

Просмотреть файл

@ -151,6 +151,11 @@ namespace Microsoft.Extensions.SecretManager.Tools
var fileInfo = new PhysicalFileInfo(new FileInfo(projectPath)); var fileInfo = new PhysicalFileInfo(new FileInfo(projectPath));
if (!fileInfo.Exists)
{
throw new GracefulException(Resources.FormatError_ProjectPath_NotFound(projectPath));
}
Logger.LogDebug(Resources.Message_Project_File_Path, fileInfo.PhysicalPath); Logger.LogDebug(Resources.Message_Project_File_Path, fileInfo.PhysicalPath);
return ReadUserSecretsId(fileInfo); return ReadUserSecretsId(fileInfo);
} }

Просмотреть файл

@ -58,6 +58,22 @@ namespace Microsoft.Extensions.SecretManager.Tools
return GetString("Error_No_Secrets_Found"); return GetString("Error_No_Secrets_Found");
} }
/// <summary>
/// The project file '{path}' does not exist.
/// </summary>
internal static string Error_ProjectPath_NotFound
{
get { return GetString("Error_ProjectPath_NotFound"); }
}
/// <summary>
/// The project file '{path}' does not exist.
/// </summary>
internal static string FormatError_ProjectPath_NotFound(object path)
{
return string.Format(CultureInfo.CurrentCulture, GetString("Error_ProjectPath_NotFound", "path"), path);
}
/// <summary> /// <summary>
/// Project file path {project}. /// Project file path {project}.
/// </summary> /// </summary>

Просмотреть файл

@ -126,6 +126,9 @@
<data name="Error_No_Secrets_Found" xml:space="preserve"> <data name="Error_No_Secrets_Found" xml:space="preserve">
<value>No secrets configured for this application.</value> <value>No secrets configured for this application.</value>
</data> </data>
<data name="Error_ProjectPath_NotFound" xml:space="preserve">
<value>The project file '{path}' does not exist.</value>
</data>
<data name="Message_Project_File_Path" xml:space="preserve"> <data name="Message_Project_File_Path" xml:space="preserve">
<value>Project file path {project}.</value> <value>Project file path {project}.</value>
</data> </data>

Просмотреть файл

@ -10,6 +10,7 @@ using Microsoft.Extensions.Configuration.UserSecrets.Tests;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Xunit; using Xunit;
using Xunit.Abstractions; using Xunit.Abstractions;
using Microsoft.Extensions.SecretManager.Tools.Internal;
namespace Microsoft.Extensions.SecretManager.Tools.Tests namespace Microsoft.Extensions.SecretManager.Tools.Tests
{ {
@ -22,6 +23,17 @@ namespace Microsoft.Extensions.SecretManager.Tools.Tests
_logger = new TestLogger(output); _logger = new TestLogger(output);
} }
[Fact]
public void Error_Project_DoesNotExist()
{
var projectPath = Path.Combine(Path.GetTempPath(), "dne", Guid.NewGuid().ToString(), "project.json");
var secretManager = new Program(Console.Out, Directory.GetCurrentDirectory()) { Logger = _logger };
var ex = Assert.Throws<GracefulException>(() => secretManager.RunInternal("list", "--project", projectPath));
Assert.Equal(ex.Message, Resources.FormatError_ProjectPath_NotFound(projectPath));
}
[Theory] [Theory]
[InlineData(true)] [InlineData(true)]
[InlineData(false)] [InlineData(false)]