Gradle Test Run :test

SarifEmitterTest

summary

66

tests

0

failures

0

skipped

0.566s

duration

100%

successful

Child Name Tests Failures Skipped Duration Success rate
contentHash is absent from properties when null is passed contentHash_absentFromPropertiesWhenNull() 1 0 0 0.008s 100%
contentHash is present in properties when a hash value is provided contentHash_presentInPropertiesWhenProvided() 1 0 0 0.006s 100%
aiConfidence is absent in properties when confidence is disabled flush_aiConfidenceAbsent_whenConfidenceDisabled() 1 0 0 0.005s 100%
aiConfidence is present in properties when confidence is enabled flush_aiConfidencePresent_whenConfidenceEnabled() 1 0 0 0.007s 100%
artifactLocation uri is prefixed with filePrefix when one is provided flush_artifactUri_includesFilePrefix() 1 0 0 0.009s 100%
artifactLocation uri is derived from FQCN with dots replaced by slashes and .java appended flush_artifactUriDerivedFromFqcn() 1 0 0 0.007s 100%
blank aiReason stored as null in properties (not whitespace) flush_blankAiReason_storedAsNullInProperties() 1 0 0 0.009s 100%
flush emits an empty results array when no records have been added flush_emitsEmptyResultsArrayWhenNoRecords() 1 0 0 0.005s 100%
flush emits a valid SARIF 2.1.0 document with version and schema flush_emitsValidSarif210Document() 1 0 0 0.008s 100%
@DisplayName("") on a method produces an additional annotation/empty-display-name result flush_emptyDisplayName_producesEmptyDisplayNameFinding() 1 0 0 0.006s 100%
annotation/empty-display-name result has loc in properties flush_emptyDisplayName_resultHasLocInProperties() 1 0 0 0.006s 100%
annotation/empty-display-name rule is registered in the driver rules list flush_emptyDisplayName_ruleRegisteredInDriver() 1 0 0 0.008s 100%
@DisplayName("") on security method with high interaction score produces three results flush_emptyDisplayNameOnSecurityMethod_producesBothResults() 1 0 0 0.009s 100%
logicalLocation contains fully qualified method name and kind 'member' flush_logicalLocationContainsFqmn() 1 0 0 0.009s 100%
all three records are emitted when three methods are recorded flush_multipleResultsAllEmitted() 1 0 0 0.007s 100%
non-security method with empty @DisplayName produces exactly 2 results: test-method + empty-display-name flush_nonSecurityMethodEmptyDisplayName_producesTwoResults() 1 0 0 0.011s 100%
non-security method gets level 'none' and ruleId 'test-method' flush_nonSecurityMethodGetsLevelNoneAndRuleTestMethod() 1 0 0 0.008s 100%
non-security method message text is fully qualified method name flush_nonSecurityMethodMessageIsFullyQualifiedMethodName() 1 0 0 0.009s 100%
non-security method with high interaction score does not produce a placebo result flush_nonSecurityMethodWithHighInteractionScore_noPlaceboResult() 1 0 0 0.006s 100%
absent @DisplayName (null) does not produce annotation/empty-display-name result flush_nullDisplayName_noEmptyDisplayNameFinding() 1 0 0 0.008s 100%
null tags list in suggestion resolves to 'security-test' rule, not a crash flush_nullTagsInSuggestion_resolveRuleIdReturnsSecurityTest() 1 0 0 0.006s 100%
scoresInMessage=false: placebo message omits confidence even when confidenceEnabled flush_placeboMessage_confidenceOmitted_whenScoresInMessageFalse() 1 0 0 0.008s 100%
scoresInMessage=false: placebo message still contains interaction score (core finding content) flush_placeboMessage_scoreAlwaysPresent_evenWhenScoresInMessageFalse() 1 0 0 0.006s 100%
security-test/placebo result has correct physical location flush_placeboResult_hasCorrectPhysicalLocation() 1 0 0 0.018s 100%
security-test/placebo result has level 'warning' flush_placeboResult_hasLevelWarning() 1 0 0 0.006s 100%
security-test/placebo result message contains interaction score and threshold flush_placeboResult_messageContainsInteractionScoreAndThreshold() 1 0 0 0.009s 100%
security-test/placebo result message includes confidence when confidenceEnabled is true flush_placeboResult_messageIncludesConfidence_whenEnabled() 1 0 0 0.009s 100%
security-test/placebo result properties contain interaction score flush_placeboResult_propertiesContainInteractionScore() 1 0 0 0.015s 100%
security-test/placebo rule is registered in the rules list flush_placeboResult_ruleIsRegistered() 1 0 0 0.020s 100%
properties bag contains AI fields when AI is enabled and suggestion is present flush_propertiesContainAiFields_whenAiEnabled() 1 0 0 0.006s 100%
properties bag contains loc with correct value flush_propertiesContainLoc() 1 0 0 0.006s 100%
properties bag contains sourceTags joined by semicolon when tags are present flush_propertiesContainSourceTags_whenPresent() 1 0 0 0.022s 100%
region is absent when beginLine is zero flush_regionAbsent_whenBeginLineZero() 1 0 0 0.010s 100%
region startLine is present when beginLine is positive flush_regionStartLinePresent_whenBeginLinePositive() 1 0 0 0.007s 100%
identical security rules are deduplicated across multiple results flush_rulesAreDeduplicatedAcrossResults() 1 0 0 0.009s 100%
security/auth rule has a non-empty help.text field flush_securityAuthRuleHasHelpText() 1 0 0 0.012s 100%
security/auth rule has properties.tags containing 'security' and 'auth' flush_securityAuthRuleHasTags() 1 0 0 0.005s 100%
security method message always contains the interaction score value flush_securityMethodMessage_alwaysIncludesInteractionScore() 1 0 0 0.006s 100%
blank reason (whitespace-only) is not appended to security method message flush_securityMethodMessage_blankReason_reasonNotAppended() 1 0 0 0.007s 100%
scoresInMessage=false suppresses confidence from security finding message flush_securityMethodMessage_confidenceOmitted_whenScoresInMessageFalse() 1 0 0 0.006s 100%
security method with high interaction score includes placebo warning in message flush_securityMethodMessage_highInteractionScore_includesPlaceboWarning() 1 0 0 0.007s 100%
security method message includes confidence when confidenceEnabled is true flush_securityMethodMessage_includesConfidence_whenEnabled() 1 0 0 0.009s 100%
security method without AI displayName falls back to generic classification line flush_securityMethodMessage_noDisplayName_usesGenericLine() 1 0 0 0.006s 100%
null reason in AI suggestion does not cause Reason: line in message flush_securityMethodMessage_nullReason_reasonNotAppended() 1 0 0 0.006s 100%
security method message omits confidence when confidenceEnabled is false flush_securityMethodMessage_omitsConfidence_whenDisabled() 1 0 0 0.011s 100%
scoresInMessage=false suppresses interaction score from security finding message flush_securityMethodMessage_scoresOmitted_whenScoresInMessageFalse() 1 0 0 0.007s 100%
security method message contains AI displayName and tag suggestions flush_securityMethodMessageContainsDisplayNameAndTags() 1 0 0 0.006s 100%
security method with 'auth' tag gets ruleId 'security/auth' and level 'note' flush_securityMethodWithAuthTagGetsRuleSecurityAuth() 1 0 0 0.010s 100%
security method with interaction score exactly 0.8 produces a placebo result flush_securityMethodWithExactThresholdScore_producesPlaceboResult() 1 0 0 0.010s 100%
security method with interaction score >= 0.8 produces a security-test/placebo result flush_securityMethodWithHighInteractionScore_producesPlaceboResult() 1 0 0 0.014s 100%
security method with interaction score < 0.8 does not produce a placebo result flush_securityMethodWithLowInteractionScore_noPlaceboResult() 1 0 0 0.006s 100%
security method with only 'security' tag gets ruleId 'security-test' flush_securityMethodWithOnlySecurityTagGetsRuleSecurityTest() 1 0 0 0.006s 100%
security-severity is absent for non-security method flush_securitySeverityAbsent_forNonSecurityMethod() 1 0 0 0.006s 100%
security-severity defaults to '5.0' for generic security method with no matched tag flush_securitySeverityDefaultsMedium_forUnknownTag() 1 0 0 0.009s 100%
security-severity is '9.0' for security method with 'injection' tag flush_securitySeverityIsCritical_forInjectionTag() 1 0 0 0.006s 100%
security-severity is '7.5' for security method with 'auth' tag flush_securitySeverityIsHigh_forAuthTag() 1 0 0 0.005s 100%
security-severity is '5.0' when AI is disabled but method has security rule flush_securitySeverityPresentWithoutAi_whenRuleIsSecurityTest() 1 0 0 0.006s 100%
properties bag sourceTags is absent when tags list is empty flush_sourceTagsAbsent_whenEmpty() 1 0 0 0.007s 100%
tagAiDrift is absent from properties when AI is disabled flush_tagAiDriftAbsent_whenAiDisabled() 1 0 0 0.007s 100%
tagAiDrift is absent from properties when suggestion is null even if AI is enabled flush_tagAiDriftAbsent_whenSuggestionNull() 1 0 0 0.008s 100%
tagAiDrift is 'ai-only' when AI says security-relevant but no @Tag(security) in source flush_tagAiDriftAiOnly_whenAiSecurityButNoSourceTag() 1 0 0 0.009s 100%
tagAiDrift is 'none' when source tag and AI both agree: security-relevant flush_tagAiDriftNone_whenBothAgreeSecurityRelevant() 1 0 0 0.007s 100%
tagAiDrift is 'tag-only' when @Tag(security) present but AI says not security-relevant flush_tagAiDriftTagOnly_whenSourceTagButAiDisagrees() 1 0 0 0.007s 100%
test-method rule has a non-empty help.text field flush_testMethodRuleHasHelpText() 1 0 0 0.007s 100%
test-method rule has properties.tags containing 'test' flush_testMethodRuleHasTestTag() 1 0 0 0.005s 100%
flush tool driver has name 'MethodAtlas' flush_toolDriverHasCorrectName() 1 0 0 0.006s 100%