예제 #1
0
 private void ExpectPass(string text, OnCompileErrors onCompileErrors = OnCompileErrors.Fail)
 {
     AssertLinterRuleDiagnostics(PreferInterpolationRule.Code, text, onCompileErrors, diags =>
     {
         diags.Should().HaveCount(0, $"expecting linter rule to pass");
     });
 }
예제 #2
0
        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));
            });
        }
예제 #3
0
 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();
         }
     });
 }
예제 #4
0
 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);
 }
예제 #6
0
 private void CompileAndTest(string text, int expectedErrorCount, OnCompileErrors onCompileErrors = OnCompileErrors.Fail)
 {
     AssertLinterRuleDiagnostics(AdminUsernameShouldNotBeLiteralRule.Code, text, expectedErrorCount, onCompileErrors);
 }
예제 #7
0
 public void ArgsNotStrings_DoNotSuggestFix(string text, OnCompileErrors onCompileErrors = OnCompileErrors.Fail)
 {
     ExpectPass(text, onCompileErrors);
 }
예제 #8
0
 private void ExpectDiagnosticWithFix(string text, string expectedFix, OnCompileErrors onCompileErrors = OnCompileErrors.Fail)
 {
     ExpectDiagnosticWithFix(text, new string[] { expectedFix }, onCompileErrors);
 }
예제 #9
0
        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);
        }
예제 #10
0
 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);
 }
예제 #11
0
 protected void AssertLinterRuleDiagnostics(string ruleCode, string bicepText, int expectedDiagnosticCountForCode, OnCompileErrors onCompileErrors = OnCompileErrors.Fail)
 {
     AssertLinterRuleDiagnostics(ruleCode, bicepText, onCompileErrors, diags =>
     {
         diags.Should().HaveCount(expectedDiagnosticCountForCode);
     });
 }
예제 #12
0
 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);
     });
 }
예제 #13
0
 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);
 }