private ValidationResult Validate()

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;
    }