private void ExpectPass(string text, OnCompileErrors onCompileErrors = OnCompileErrors.Fail) { AssertLinterRuleDiagnostics(PreferInterpolationRule.Code, text, onCompileErrors, diags => { diags.Should().HaveCount(0, $"expecting linter rule to pass"); }); }
private void ExpectDiagnosticWithFix(string text, string[] expectedFixes, OnCompileErrors onCompileErrors = OnCompileErrors.Fail) { AssertLinterRuleDiagnostics(PreferInterpolationRule.Code, text, onCompileErrors, diags => { diags.Should().HaveCount(expectedFixes.Length, $"expecting one fix per testcase"); diags.First().As <IBicepAnalyerFixableDiagnostic>().Fixes.Should().HaveCount(1); diags.First().As <IBicepAnalyerFixableDiagnostic>().Fixes.First().Replacements.Should().HaveCount(1); var a = diags.First().As <IBicepAnalyerFixableDiagnostic>().Fixes.SelectMany(f => f.Replacements.SelectMany(r => r.Text)); }); }
private void CompileAndTest(string text, OnCompileErrors onCompileErrors, params string[] unusedParams) { AssertLinterRuleDiagnostics(NoUnusedParametersRule.Code, text, onCompileErrors, diags => { if (unusedParams.Any()) { var rule = new NoUnusedParametersRule(); string[] expectedMessages = unusedParams.Select(p => rule.GetMessage(p)).ToArray(); diags.Select(e => e.Message).Should().ContainInOrder(expectedMessages); } else { diags.Should().BeEmpty(); } }); }
public void InvalidNonEmptyDefault_TestFails(int diagnosticCount, string text, OnCompileErrors onCompileErrors = OnCompileErrors.Fail) { AssertLinterRuleDiagnostics(SecureParameterDefaultRule.Code, text, diagnosticCount, onCompileErrors); }
private void CompileAndTest(string text, OnCompileErrors onCompileErrors, string[] expectedMessages) { AssertLinterRuleDiagnostics(ProtectCommandToExecuteSecretsRule.Code, text, expectedMessages, onCompileErrors); }
private void CompileAndTest(string text, int expectedErrorCount, OnCompileErrors onCompileErrors = OnCompileErrors.Fail) { AssertLinterRuleDiagnostics(AdminUsernameShouldNotBeLiteralRule.Code, text, expectedErrorCount, onCompileErrors); }
public void ArgsNotStrings_DoNotSuggestFix(string text, OnCompileErrors onCompileErrors = OnCompileErrors.Fail) { ExpectPass(text, onCompileErrors); }
private void ExpectDiagnosticWithFix(string text, string expectedFix, OnCompileErrors onCompileErrors = OnCompileErrors.Fail) { ExpectDiagnosticWithFix(text, new string[] { expectedFix }, onCompileErrors); }
private void RunWithDiagnosticAnnotations(string bicepText, Func <IDiagnostic, bool> filterFunc, OnCompileErrors onCompileErrors, Action <IEnumerable <IDiagnostic> > assertAction) { var result = CompilationHelper.Compile(bicepText); result.Should().NotHaveDiagnosticsWithCodes(new[] { LinterAnalyzer.FailedRuleCode }, "There should never be linter FailedRuleCode errors"); if (onCompileErrors == OnCompileErrors.Fail) { var compileErrors = result.Diagnostics.Where(d => d.Level == DiagnosticLevel.Error); DiagnosticAssertions.DoWithDiagnosticAnnotations( result.Compilation.SourceFileGrouping.EntryPoint, compileErrors, diags => diags.Should().HaveCount(0)); } IDiagnostic[] diagnosticsMatchingCode = result.Diagnostics.Where(filterFunc).ToArray(); DiagnosticAssertions.DoWithDiagnosticAnnotations( result.Compilation.SourceFileGrouping.EntryPoint, result.Diagnostics.Where(filterFunc), assertAction); }
protected void AssertLinterRuleDiagnostics(string ruleCode, string bicepText, OnCompileErrors onCompileErrors, Action <IEnumerable <IDiagnostic> > assertAction) { RunWithDiagnosticAnnotations( bicepText, diag => diag.Code == ruleCode || (onCompileErrors == OnCompileErrors.Fail && diag.Level == DiagnosticLevel.Error), onCompileErrors, assertAction); }
protected void AssertLinterRuleDiagnostics(string ruleCode, string bicepText, int expectedDiagnosticCountForCode, OnCompileErrors onCompileErrors = OnCompileErrors.Fail) { AssertLinterRuleDiagnostics(ruleCode, bicepText, onCompileErrors, diags => { diags.Should().HaveCount(expectedDiagnosticCountForCode); }); }
protected void AssertLinterRuleDiagnostics(string ruleCode, string bicepText, string[] expectedMessagesForCode, OnCompileErrors onCompileErrors = OnCompileErrors.Fail) { AssertLinterRuleDiagnostics(ruleCode, bicepText, onCompileErrors, diags => { diags.Select(d => d.Message).Should().BeEquivalentTo(expectedMessagesForCode); }); }
private void CompileAndTest(string text, OnCompileErrors onCompileErrors, string[] expectedMessages) { AssertLinterRuleDiagnostics(NoUnnecessaryDependsOnRule.Code, text, expectedMessages, onCompileErrors); }
private void CompileAndTest(string text, OnCompileErrors onCompileErrors, string[] expectedMessages) { AssertLinterRuleDiagnostics(OutputsShouldNotContainSecretsRule.Code, text, expectedMessages, onCompileErrors); }