in plugin-dotnet-agent/src/main/csharp/TeamCity.Dotnet.TestSuppressor/TeamCity.Dotnet.TestSuppressor/Infrastructure/CommandLine/Validation/ValidatePathAttribute.cs [49:96]
private ValidationResult Validate(string? path)
{
if (string.IsNullOrEmpty(path))
{
return ValidationResult.Invalid(ErrorMessage);
}
// check if string is valid path
try
{
_ = _fileSystem.Path.GetFullPath(path!);
}
catch (Exception ex)
{
return ValidationResult.Invalid($"{ErrorMessage}: {path} – this string is not a valid path: {ex.Message}");
}
if (!_mustExist)
{
return ValidationResult.Valid;
}
if (_mustBeFile)
{
if (!_fileSystem.File.Exists(path!))
{
return ValidationResult.Invalid($"{ErrorMessage}: {path} – file does not exist");
}
if (_allowedExtensions.Any())
{
var fileExtension = _fileSystem.Path.GetExtension(path!);
if (!_allowedExtensions.Contains(fileExtension, StringComparer.OrdinalIgnoreCase))
{
return ValidationResult.Invalid($"{ErrorMessage}: invalid file extension for path {path}");
}
}
}
else
{
if (!_fileSystem.File.Exists(path!) && !_fileSystem.Directory.Exists(path!))
{
return ValidationResult.Invalid($"{ErrorMessage}: {path} – file/directory does not exist");
}
}
return ValidationResult.Valid;
}