in src/Analyzer.Cli.FunctionalTests/CommandLineParserTests.cs [330:375]
public void FilterRules_ValidConfig_RulesFiltered(bool isBicep, string configName, bool specifyInCommand)
{
var extension = isBicep ? "bicep" : "json";
var templatePath = GetFilePath($"AppServicesLogs-Failures.{extension}");
var args = new string[] { "analyze-template", templatePath };
// Analyze template without filtering rules to verify there is a failure.
var result = _commandLineParser.InvokeCommandLineAPIAsync(args);
Assert.AreEqual((int)ExitCode.Violation, result.Result);
// Run again with rule filtered out, verify it passes (config was loaded).
try
{
File.WriteAllText(configName,
JObject.FromObject(
new ConfigurationDefinition
{
InclusionsConfigurationDefinition = new()
{
// Use a non-existent rule id so all rules are filtered out.
Ids = new() { "NonRuleId" }
}
})
.ToString());
if (specifyInCommand)
{
args = args.Concat(new[] { "--config-file-path", configName }).ToArray();
}
using StringWriter outputWriter = new();
Console.SetOut(outputWriter);
result = _commandLineParser.InvokeCommandLineAPIAsync(args);
var cliConsoleOutput = outputWriter.ToString();
// All JSON rules are filtered out; PSRule rules are currently not filtered by the config file and should appear in the output
Assert.IsTrue(!cliConsoleOutput.Contains("TA-"));
Assert.AreEqual((int)ExitCode.Success, result.Result);
}
finally
{
File.Delete(configName);
}
}