RepoAuditor 0.2.73__tar.gz → 0.2.75__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {repoauditor-0.2.73 → repoauditor-0.2.75}/PKG-INFO +1 -1
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/CommunityStandards/Impl/ExistsRequirementImpl.py +2 -2
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionQuery.py +10 -10
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/EnsureStatusChecks.py +1 -1
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/ClassicValueRequirementImpl.py +5 -5
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/Impl/EnableRequirementImpl.py +12 -9
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/Impl/EnableRulesetRequirementImpl.py +4 -2
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/Impl/ValueRequirementImpl.py +4 -4
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequirePullRequests.py +1 -1
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireSignedCommits.py +1 -1
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireStatusChecks.py +1 -1
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardQuery.py +14 -20
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DefaultBranch.py +1 -1
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Description.py +1 -1
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/StandardValueRequirementImpl.py +3 -3
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Private.py +4 -5
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Requirement.py +6 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/__init__.py +1 -1
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/StandardQueryRequirements/DependabotSecurityUpdates_UnitTest.py +8 -4
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/StandardQueryRequirements/License_UnitTest.py +2 -2
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/StandardQueryRequirements/MergeCommitMessage_UnitTest.py +4 -2
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/StandardQueryRequirements/Private_UnitTest.py +4 -2
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/StandardQueryRequirements/SecretScanningPushProtection_UnitTest.py +8 -4
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/StandardQueryRequirements/SecretScanning_UnitTest.py +8 -4
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/StandardQueryRequirements/SquashMergeCommitMessage_UnitTest.py +2 -1
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/ValueRequrementImpl_UnitTest.py +2 -2
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/__snapshots__/GitHubEnterprise_EndToEndTest.ambr +42 -43
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/__snapshots__/GitHub_EndToEndTest.ambr +66 -67
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Requirement_UnitTest.py +3 -3
- {repoauditor-0.2.73 → repoauditor-0.2.75}/.copier-answers.yml +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/.github/CODEOWNERS +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/.github/ISSUE_TEMPLATE/custom.md +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/.github/actions/release_impl/action.yml +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/.github/pull_request_template.md +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/.github/release_sources.yaml +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/.github/workflows/CICD.yml +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/.github/workflows/CICD_impl.yml +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/.github/workflows/EndToEnd.yml +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/.github/workflows/codeql.yml +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/.gitignore +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/.pre-commit-config.yaml +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/.python-version +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/CODE_OF_CONDUCT.md +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/CONTRIBUTING.md +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/DEVELOPMENT.md +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/GOVERNANCE.md +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/LICENSE +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/MAINTAINERS.md +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/README.md +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/SECURITY.md +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/default_config.yaml +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/minisign_key.pub +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/pyproject.toml +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/AutoGitSemVer.yaml +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/CommandLineProcessor.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Display.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/EntryPoint.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/ExecuteModules.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Impl/ParallelSequentialProcessor.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Impl/__init__.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Module.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugin.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/CommunityStandards/CommunityStandardsQuery.py +4 -4
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/CommunityStandards/Impl/__init__.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/CommunityStandards/Module.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/CodeOfConduct.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/CodeOwners.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/Contributing.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/IssueTemplates.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/LicenseFile.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/PullRequestTemplates.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/ReadMe.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/SecurityPolicy.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/__init__.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/CommunityStandards/__init__.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/CommunityStandardsPlugin.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/AllowDeletions.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/AllowMainlineForcePushes.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/DismissStalePullRequestApprovals.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/DoNotAllowBypassSettings.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/ClassicEnableRequirementImpl.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/__init__.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireApprovalMostRecentPush.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireApprovals.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireCodeOwnerReview.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireConversationResolution.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireLinearHistory.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequirePullRequests.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireSignedCommits.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireStatusChecksToPass.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireUpToDateBranches.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/__init__.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/DefaultBranchQuery.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/DefaultBranchRequirements/Protected.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/DefaultBranchRequirements/__init__.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/Impl/Common.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/Impl/__init__.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/Module.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/RulesetQuery.py +2 -2
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/__init__.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/AutoMerge.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DeleteHeadBranches.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DependabotSecurityUpdates.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/StandardEnableRequirementImpl.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/__init__.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/License.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/MergeCommit.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/MergeCommitMessage.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/RebaseMergeCommit.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SecretScanning.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SecretScanningPushProtection.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SquashCommitMerge.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SquashMergeCommitMessage.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SuggestUpdatingPullRequestBranches.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportDiscussions.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportIssues.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportProjects.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportWikis.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/TemplateRepository.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/WebCommitSignoff.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/__init__.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHub/__init__.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHubBase/Module.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHubBase/__init__.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/GitHubPlugin.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Plugins/__init__.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/Query.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/src/RepoAuditor/py.typed +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/CommandLineProcessor_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/EntryPoint_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/ExecuteModules_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Module_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugin_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/CommunityStandards/CommunityStandardsQuery_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/CommunityStandards/ExistsRequirementImpl_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/CommunityStandards/GitHubCommunityStandards_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/CommunityStandards_EndToEndTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubEnterprise_EndToEndTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/ClassicBranchProtectionQuery_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/DismissStalePullRequestApprovals_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/EnsureStatusChecks_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireApprovalMostRecentPush_UnitTest.py +1 -1
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireApprovals_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireCodeOwnerReview_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireUpToDateBranches_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/ClassicValueRequirementImpl_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/DefaultBranchQueryRequirements/Protected_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/DefaultBranchQuery_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/EnableRulesetRequirementImpl_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/GitHubModule_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/GitHubSession_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/RulesetRequirements_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/RulsesetQuery_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/StandardQueryRequirements/Description_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/StandardQuery_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/fixtures.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHub_EndToEndTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/__snapshots__/CommunityStandards_EndToEndTest.ambr +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/conftest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/utilities.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Query_UnitTest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/__init__.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/__snapshots__/ExecuteModules_UnitTest.ambr +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/tests/conftest.py +0 -0
- {repoauditor-0.2.73 → repoauditor-0.2.75}/uv.lock +0 -0
|
@@ -80,8 +80,8 @@ class ExistsRequirementImpl(Requirement):
|
|
|
80
80
|
query_data: dict[str, Any],
|
|
81
81
|
requirement_args: dict[str, Any],
|
|
82
82
|
) -> Requirement.EvaluateImplResult:
|
|
83
|
-
# Check if
|
|
84
|
-
if not requirement_args
|
|
83
|
+
# Check if dynamic argument is `not unrequired`.
|
|
84
|
+
if not requirement_args.get(self.dynamic_arg_name, False):
|
|
85
85
|
for location in self.possible_locations:
|
|
86
86
|
# Get full file path in temporary repo directory and check if it exists
|
|
87
87
|
# This checks both upper case and lower case variants
|
|
@@ -115,20 +115,20 @@ class ClassicBranchProtectionQuery(Query):
|
|
|
115
115
|
"ClassicBranchProtectionQuery",
|
|
116
116
|
ExecutionStyle.Parallel,
|
|
117
117
|
[
|
|
118
|
-
|
|
119
|
-
|
|
118
|
+
AllowDeletions(),
|
|
119
|
+
AllowMainlineForcePushes(),
|
|
120
120
|
DismissStalePullRequestApprovals(),
|
|
121
|
-
|
|
122
|
-
RequireApprovalMostRecentPush(),
|
|
123
|
-
RequireStatusChecksToPass(),
|
|
124
|
-
RequireUpToDateBranches(),
|
|
121
|
+
DoNotAllowBypassSettings(),
|
|
125
122
|
EnsureStatusChecks(),
|
|
123
|
+
RequireApprovalMostRecentPush(),
|
|
124
|
+
RequireApprovals(),
|
|
125
|
+
RequireCodeOwnerReview(),
|
|
126
126
|
RequireConversationResolution(),
|
|
127
|
-
RequireSignedCommits(),
|
|
128
127
|
RequireLinearHistory(),
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
128
|
+
RequirePullRequests(),
|
|
129
|
+
RequireSignedCommits(),
|
|
130
|
+
RequireStatusChecksToPass(),
|
|
131
|
+
RequireUpToDateBranches(),
|
|
132
132
|
],
|
|
133
133
|
)
|
|
134
134
|
|
|
@@ -24,7 +24,7 @@ class EnsureStatusChecks(Requirement):
|
|
|
24
24
|
def __init__(self) -> None:
|
|
25
25
|
super().__init__(
|
|
26
26
|
"EnsureStatusChecks",
|
|
27
|
-
"Ensure that status checks have been enabled for the branch.",
|
|
27
|
+
"Ensure that status checks have been enabled for the '{branch}' branch.",
|
|
28
28
|
ExecutionStyle.Parallel,
|
|
29
29
|
textwrap.dedent(
|
|
30
30
|
"""\
|
|
@@ -40,11 +40,11 @@ class ClassicValueRequirementImpl(ValueRequirementImpl):
|
|
|
40
40
|
|
|
41
41
|
resolution = textwrap.dedent(
|
|
42
42
|
f"""\
|
|
43
|
-
1) Visit '{{session.github_url}}/settings/branches'
|
|
44
|
-
2) Locate the 'Branch protection rules' section
|
|
45
|
-
3) Click the 'Edit' button next to the branch '{{branch}}'
|
|
46
|
-
4) Locate the '{github_settings_section}' section
|
|
47
|
-
5) Ensure that {github_settings_value_display} is {{__expected_value}}
|
|
43
|
+
1) Visit '{{session.github_url}}/settings/branches'.
|
|
44
|
+
2) Locate the 'Branch protection rules' section.
|
|
45
|
+
3) Click the 'Edit' button next to the branch '{{branch}}'.
|
|
46
|
+
4) Locate the '{github_settings_section}' section.
|
|
47
|
+
5) Ensure that {github_settings_value_display} is '{{__expected_value}}'.
|
|
48
48
|
""",
|
|
49
49
|
)
|
|
50
50
|
|
|
@@ -44,7 +44,7 @@ class EnableRequirementImpl(Requirement):
|
|
|
44
44
|
|
|
45
45
|
super().__init__(
|
|
46
46
|
name,
|
|
47
|
-
f"Validates that {subject} is set to
|
|
47
|
+
f"Validates that {subject} is set to {{__expected_value}}.",
|
|
48
48
|
ExecutionStyle.Parallel,
|
|
49
49
|
resolution,
|
|
50
50
|
rationale,
|
|
@@ -79,6 +79,17 @@ class EnableRequirementImpl(Requirement):
|
|
|
79
79
|
query_data: dict[str, Any],
|
|
80
80
|
requirement_args: dict[str, Any],
|
|
81
81
|
) -> Requirement.EvaluateImplResult:
|
|
82
|
+
expected_value = self.enabled_by_default
|
|
83
|
+
|
|
84
|
+
# The value of the dynamic arg doesn't matter as much as whether it was provided
|
|
85
|
+
if requirement_args.get(self.dynamic_arg_name, False):
|
|
86
|
+
expected_value = not expected_value
|
|
87
|
+
provide_rationale = False
|
|
88
|
+
else:
|
|
89
|
+
provide_rationale = True
|
|
90
|
+
|
|
91
|
+
query_data["__expected_value"] = expected_value
|
|
92
|
+
|
|
82
93
|
result = self.get_configuration_value_func(query_data)
|
|
83
94
|
if result is None:
|
|
84
95
|
if query_data["session"].is_enterprise:
|
|
@@ -95,14 +106,6 @@ class EnableRequirementImpl(Requirement):
|
|
|
95
106
|
|
|
96
107
|
return Requirement.EvaluateImplResult(EvaluateResult.DoesNotApply, None)
|
|
97
108
|
|
|
98
|
-
expected_value = self.enabled_by_default
|
|
99
|
-
|
|
100
|
-
if requirement_args[self.dynamic_arg_name]:
|
|
101
|
-
expected_value = not expected_value
|
|
102
|
-
provide_rationale = False
|
|
103
|
-
else:
|
|
104
|
-
provide_rationale = True
|
|
105
|
-
|
|
106
109
|
if result != expected_value:
|
|
107
110
|
query_data["__checked_desc"] = self.unset_set_terminology[int(expected_value)]
|
|
108
111
|
|
|
@@ -61,13 +61,15 @@ class EnableRulesetRequirementImpl(EnableRequirementImpl):
|
|
|
61
61
|
) -> Requirement.EvaluateImplResult:
|
|
62
62
|
expected_rule_enabled = self.enabled_by_default
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
# The value of the dynamic arg doesn't matter as much as whether it was provided
|
|
65
|
+
if requirement_args.get(self.dynamic_arg_name, False):
|
|
65
66
|
expected_rule_enabled = not expected_rule_enabled
|
|
66
67
|
provide_rationale = False
|
|
67
68
|
else:
|
|
68
69
|
provide_rationale = True
|
|
69
70
|
|
|
70
|
-
query_data["__expected_value"] =
|
|
71
|
+
query_data["__expected_value"] = expected_rule_enabled
|
|
72
|
+
query_data["__enabled_str"] = "Enable" if expected_rule_enabled else "Disable"
|
|
71
73
|
|
|
72
74
|
# Get the rules for the specified branch
|
|
73
75
|
rules = query_data.get("rules", [])
|
|
@@ -51,7 +51,7 @@ class ValueRequirementImpl(Requirement):
|
|
|
51
51
|
|
|
52
52
|
super().__init__(
|
|
53
53
|
name,
|
|
54
|
-
f"Validates that {subject} is set to
|
|
54
|
+
f"Validates that {subject} is set to '{{__expected_value}}'.",
|
|
55
55
|
ExecutionStyle.Parallel,
|
|
56
56
|
resolution,
|
|
57
57
|
rationale,
|
|
@@ -84,6 +84,9 @@ class ValueRequirementImpl(Requirement):
|
|
|
84
84
|
query_data: dict[str, Any],
|
|
85
85
|
requirement_args: dict[str, Any],
|
|
86
86
|
) -> Requirement.EvaluateImplResult:
|
|
87
|
+
expected_value = requirement_args.get("value", self.default_value)
|
|
88
|
+
query_data["__expected_value"] = f"{expected_value}"
|
|
89
|
+
|
|
87
90
|
result = self.get_configuration_value_func(query_data)
|
|
88
91
|
if result is None:
|
|
89
92
|
if self.missing_value_is_warning:
|
|
@@ -91,7 +94,6 @@ class ValueRequirementImpl(Requirement):
|
|
|
91
94
|
|
|
92
95
|
return Requirement.EvaluateImplResult(EvaluateResult.DoesNotApply, None)
|
|
93
96
|
|
|
94
|
-
expected_value = requirement_args["value"]
|
|
95
97
|
is_default_expected_value = expected_value == self.default_value
|
|
96
98
|
|
|
97
99
|
if isinstance(result, DoesNotApplyResult):
|
|
@@ -106,8 +108,6 @@ class ValueRequirementImpl(Requirement):
|
|
|
106
108
|
result = str(result)
|
|
107
109
|
|
|
108
110
|
if result != expected_value:
|
|
109
|
-
query_data["__expected_value"] = f"'{expected_value}'"
|
|
110
|
-
|
|
111
111
|
return Requirement.EvaluateImplResult(
|
|
112
112
|
EvaluateResult.Error,
|
|
113
113
|
f"{self.github_value} must be set to '{expected_value}' (it is currently set to '{result}').",
|
|
@@ -20,6 +20,6 @@ class RequirePullRequests(EnableRulesetRequirementImpl):
|
|
|
20
20
|
github_ruleset_type="pull_request",
|
|
21
21
|
github_ruleset_value="Require a pull request before merging",
|
|
22
22
|
get_configuration_value_func=lambda rule: rule.get("type", "") == "pull_request",
|
|
23
|
-
resolution="{
|
|
23
|
+
resolution="{__enabled_str} pull request rule in repository rulesets",
|
|
24
24
|
rationale="Pull request reviews help maintain code quality and collaboration",
|
|
25
25
|
)
|
|
@@ -20,6 +20,6 @@ class RequireSignedCommits(EnableRulesetRequirementImpl):
|
|
|
20
20
|
github_ruleset_type="required_signatures",
|
|
21
21
|
github_ruleset_value="Require signed commits",
|
|
22
22
|
get_configuration_value_func=lambda rule: rule.get("type", "") == "required_signatures",
|
|
23
|
-
resolution="
|
|
23
|
+
resolution="{__enabled_str} commit signing requirement in repository rulesets",
|
|
24
24
|
rationale="Signed commits ensure commit authenticity",
|
|
25
25
|
)
|
|
@@ -20,6 +20,6 @@ class RequireStatusChecks(EnableRulesetRequirementImpl):
|
|
|
20
20
|
github_ruleset_type="required_status_checks",
|
|
21
21
|
github_ruleset_value="Require status checks to pass",
|
|
22
22
|
get_configuration_value_func=lambda rule: rule.get("type", "") == "required_status_checks",
|
|
23
|
-
resolution="
|
|
23
|
+
resolution="{__enabled_str} required status checks in repository rulesets",
|
|
24
24
|
rationale="Status checks ensure code quality and compatibility",
|
|
25
25
|
)
|
|
@@ -212,33 +212,27 @@ class StandardQuery(Query):
|
|
|
212
212
|
"StandardQuery",
|
|
213
213
|
ExecutionStyle.Parallel,
|
|
214
214
|
[
|
|
215
|
-
|
|
215
|
+
AutoMerge(),
|
|
216
|
+
DefaultBranch(),
|
|
217
|
+
DeleteHeadBranches(),
|
|
216
218
|
Description(),
|
|
219
|
+
DependabotSecurityUpdates(),
|
|
217
220
|
License(),
|
|
218
|
-
# settings page
|
|
219
|
-
TemplateRepository(),
|
|
220
|
-
WebCommitSignoff(),
|
|
221
|
-
DefaultBranch(),
|
|
222
|
-
# settings page (Features)
|
|
223
|
-
SupportWikis(),
|
|
224
|
-
SupportIssues(),
|
|
225
|
-
SupportDiscussions(),
|
|
226
|
-
SupportProjects(),
|
|
227
|
-
# settings page (Pull Requests)
|
|
228
221
|
MergeCommit(),
|
|
229
222
|
MergeCommitMessage(),
|
|
230
|
-
SquashCommitMerge(),
|
|
231
|
-
SquashMergeCommitMessage(),
|
|
232
|
-
RebaseMergeCommit(),
|
|
233
|
-
SuggestUpdatingPullRequestBranches(),
|
|
234
|
-
AutoMerge(),
|
|
235
|
-
DeleteHeadBranches(),
|
|
236
|
-
# settings page (Danger Zone)
|
|
237
223
|
Private(),
|
|
238
|
-
|
|
239
|
-
DependabotSecurityUpdates(),
|
|
224
|
+
RebaseMergeCommit(),
|
|
240
225
|
SecretScanning(),
|
|
241
226
|
SecretScanningPushProtection(),
|
|
227
|
+
SquashCommitMerge(),
|
|
228
|
+
SquashMergeCommitMessage(),
|
|
229
|
+
SuggestUpdatingPullRequestBranches(),
|
|
230
|
+
SupportDiscussions(),
|
|
231
|
+
SupportIssues(),
|
|
232
|
+
SupportProjects(),
|
|
233
|
+
SupportWikis(),
|
|
234
|
+
TemplateRepository(),
|
|
235
|
+
WebCommitSignoff(),
|
|
242
236
|
],
|
|
243
237
|
)
|
|
244
238
|
|
|
@@ -44,9 +44,9 @@ class StandardValueRequirementImpl(
|
|
|
44
44
|
|
|
45
45
|
resolution = textwrap.dedent(
|
|
46
46
|
f"""\
|
|
47
|
-
1) Visit '{{session.github_url}}/{github_settings_url_suffix}'
|
|
48
|
-
2) Locate the '{github_settings_section}' section
|
|
49
|
-
3) Ensure that {github_settings_value_display} is set to {{__expected_value}}
|
|
47
|
+
1) Visit '{{session.github_url}}/{github_settings_url_suffix}'.
|
|
48
|
+
2) Locate the '{github_settings_section}' section.
|
|
49
|
+
3) Ensure that {github_settings_value_display} is set to '{{__expected_value}}'.
|
|
50
50
|
""",
|
|
51
51
|
)
|
|
52
52
|
|
|
@@ -25,7 +25,7 @@ class Private(Requirement):
|
|
|
25
25
|
def __init__(self) -> None:
|
|
26
26
|
super().__init__(
|
|
27
27
|
"Private",
|
|
28
|
-
"Validates that the repository is set to
|
|
28
|
+
"Validates that the repository's visibility is set to '{__expected_visibility}'.",
|
|
29
29
|
ExecutionStyle.Parallel,
|
|
30
30
|
textwrap.dedent(
|
|
31
31
|
"""\
|
|
@@ -71,16 +71,15 @@ class Private(Requirement):
|
|
|
71
71
|
query_data: dict[str, Any],
|
|
72
72
|
requirement_args: dict[str, Any],
|
|
73
73
|
) -> Requirement.EvaluateImplResult:
|
|
74
|
+
expect_private = requirement_args.get("enabled", False)
|
|
75
|
+
query_data["__expected_visibility"] = "private" if expect_private else "public"
|
|
76
|
+
|
|
74
77
|
result = query_data["standard"].get("private", None)
|
|
75
78
|
|
|
76
79
|
if result is None:
|
|
77
80
|
return CreateIncompleteDataResult()
|
|
78
81
|
|
|
79
|
-
expect_private = requirement_args["enabled"]
|
|
80
|
-
|
|
81
82
|
if result != expect_private:
|
|
82
|
-
query_data["__expected_visibility"] = "private" if expect_private else "public"
|
|
83
|
-
|
|
84
83
|
return Requirement.EvaluateImplResult(
|
|
85
84
|
EvaluateResult.Error,
|
|
86
85
|
f"The repository's visibility must be {query_data['__expected_visibility']}.",
|
|
@@ -87,6 +87,9 @@ class Requirement(ABC):
|
|
|
87
87
|
If `requires_explicit_include` is True, the requirement must be explicitly included on the command line.
|
|
88
88
|
"""
|
|
89
89
|
self.name = name
|
|
90
|
+
# Use description template so we can update this description for each requirement
|
|
91
|
+
self.description_template = description
|
|
92
|
+
# Use the description as is as backup
|
|
90
93
|
self.description = description
|
|
91
94
|
self.style = style
|
|
92
95
|
|
|
@@ -112,6 +115,9 @@ class Requirement(ABC):
|
|
|
112
115
|
"""Evaluate the requirements given the query data and specific arguments."""
|
|
113
116
|
result_info = self._EvaluateImpl(query_data, requirement_args)
|
|
114
117
|
|
|
118
|
+
# Fill in templates in description string
|
|
119
|
+
self.description = self.description_template.format(**query_data)
|
|
120
|
+
|
|
115
121
|
if result_info.result == EvaluateResult.Error:
|
|
116
122
|
return Requirement.EvaluateInfo(
|
|
117
123
|
result_info.result,
|
|
@@ -37,28 +37,32 @@ class TestDependabotSecurityUpdates:
|
|
|
37
37
|
def test_security_and_analysis_missing(self, requirement, query_data):
|
|
38
38
|
"""Test if `security_and_analysis` is missing"""
|
|
39
39
|
query_data["standard"] = {}
|
|
40
|
-
|
|
40
|
+
requirement_args = {}
|
|
41
|
+
result = requirement.Evaluate(query_data, requirement_args)
|
|
41
42
|
assert result.result == EvaluateResult.Warning
|
|
42
43
|
assert "Incomplete data was encountered" in result.context
|
|
43
44
|
|
|
44
45
|
def test_dependabot_security_updates_missing(self, requirement, query_data):
|
|
45
46
|
"""Test if `dependabot_security_updates` is missing"""
|
|
46
47
|
query_data["standard"]["security_and_analysis"] = {}
|
|
47
|
-
|
|
48
|
+
requirement_args = {}
|
|
49
|
+
result = requirement.Evaluate(query_data, requirement_args)
|
|
48
50
|
assert result.result == EvaluateResult.Warning
|
|
49
51
|
assert "Incomplete data was encountered" in result.context
|
|
50
52
|
|
|
51
53
|
def test_status_missing(self, requirement, query_data):
|
|
52
54
|
"""Test if `status` is missing"""
|
|
53
55
|
query_data["standard"]["security_and_analysis"]["dependabot_security_updates"] = {}
|
|
54
|
-
|
|
56
|
+
requirement_args = {}
|
|
57
|
+
result = requirement.Evaluate(query_data, requirement_args)
|
|
55
58
|
assert result.result == EvaluateResult.Warning
|
|
56
59
|
assert "Incomplete data was encountered" in result.context
|
|
57
60
|
|
|
58
61
|
def test_status_none(self, requirement, query_data):
|
|
59
62
|
"""Test if `status` is None"""
|
|
60
63
|
query_data["standard"]["security_and_analysis"]["dependabot_security_updates"]["status"] = None
|
|
61
|
-
|
|
64
|
+
requirement_args = {}
|
|
65
|
+
result = requirement.Evaluate(query_data, requirement_args)
|
|
62
66
|
assert result.result == EvaluateResult.Warning
|
|
63
67
|
assert "Incomplete data was encountered" in result.context
|
|
64
68
|
|
|
@@ -49,7 +49,7 @@ class TestLicense:
|
|
|
49
49
|
query_data["standard"]["license"] = None
|
|
50
50
|
result = requirement.Evaluate(
|
|
51
51
|
query_data,
|
|
52
|
-
requirement_args={
|
|
52
|
+
requirement_args={},
|
|
53
53
|
)
|
|
54
54
|
assert result.result == EvaluateResult.Error
|
|
55
55
|
assert "'License' must be set to 'MIT License' (it is currently set to '')." in result.context
|
|
@@ -58,6 +58,6 @@ class TestLicense:
|
|
|
58
58
|
"""Test successful"""
|
|
59
59
|
result = requirement.Evaluate(
|
|
60
60
|
query_data,
|
|
61
|
-
requirement_args={
|
|
61
|
+
requirement_args={},
|
|
62
62
|
)
|
|
63
63
|
assert result.result == EvaluateResult.Success
|
|
@@ -32,14 +32,16 @@ class TestMergeCommitMessage:
|
|
|
32
32
|
def test_allow_merge_commit_missing(self, requirement, query_data):
|
|
33
33
|
"""Test if `allow_merge_commit` is missing"""
|
|
34
34
|
query_data["standard"] = {}
|
|
35
|
-
|
|
35
|
+
requirement_args = {}
|
|
36
|
+
result = requirement.Evaluate(query_data, requirement_args)
|
|
36
37
|
assert result.result == EvaluateResult.Warning
|
|
37
38
|
assert "Incomplete data was encountered" in result.context
|
|
38
39
|
|
|
39
40
|
def test_allow_merge_commit_none(self, requirement, query_data):
|
|
40
41
|
"""Test if `allow_merge_commit` is None"""
|
|
41
42
|
query_data["standard"]["allow_merge_commit"] = None
|
|
42
|
-
|
|
43
|
+
requirement_args = {}
|
|
44
|
+
result = requirement.Evaluate(query_data, requirement_args)
|
|
43
45
|
assert result.result == EvaluateResult.Warning
|
|
44
46
|
assert "Incomplete data was encountered" in result.context
|
|
45
47
|
|
|
@@ -31,14 +31,16 @@ class TestPrivate:
|
|
|
31
31
|
def test_private_missing(self, requirement, query_data):
|
|
32
32
|
"""Test if `private` is missing"""
|
|
33
33
|
query_data["standard"] = {}
|
|
34
|
-
|
|
34
|
+
requirement_args = {}
|
|
35
|
+
result = requirement.Evaluate(query_data, requirement_args)
|
|
35
36
|
assert result.result == EvaluateResult.Warning
|
|
36
37
|
assert "Incomplete data was encountered" in result.context
|
|
37
38
|
|
|
38
39
|
def test_private_none(self, requirement, query_data):
|
|
39
40
|
"""Test if `private` is None"""
|
|
40
41
|
query_data["standard"]["private"] = None
|
|
41
|
-
|
|
42
|
+
requirement_args = {}
|
|
43
|
+
result = requirement.Evaluate(query_data, requirement_args)
|
|
42
44
|
assert result.result == EvaluateResult.Warning
|
|
43
45
|
assert "Incomplete data was encountered" in result.context
|
|
44
46
|
|
|
@@ -37,28 +37,32 @@ class TestSecretScanningPushProtection:
|
|
|
37
37
|
def test_security_and_analysis_missing(self, requirement, query_data):
|
|
38
38
|
"""Test if `security_and_analysis` is missing"""
|
|
39
39
|
query_data["standard"] = {}
|
|
40
|
-
|
|
40
|
+
requirement_args = {}
|
|
41
|
+
result = requirement.Evaluate(query_data, requirement_args)
|
|
41
42
|
assert result.result == EvaluateResult.Warning
|
|
42
43
|
assert "Incomplete data was encountered" in result.context
|
|
43
44
|
|
|
44
45
|
def test_secret_scanning_push_protection_missing(self, requirement, query_data):
|
|
45
46
|
"""Test if `secret_scanning_push_protection` is missing"""
|
|
46
47
|
query_data["standard"]["security_and_analysis"] = {}
|
|
47
|
-
|
|
48
|
+
requirement_args = {}
|
|
49
|
+
result = requirement.Evaluate(query_data, requirement_args)
|
|
48
50
|
assert result.result == EvaluateResult.Warning
|
|
49
51
|
assert "Incomplete data was encountered" in result.context
|
|
50
52
|
|
|
51
53
|
def test_status_missing(self, requirement, query_data):
|
|
52
54
|
"""Test if `status` is missing"""
|
|
53
55
|
query_data["standard"]["security_and_analysis"]["secret_scanning_push_protection"] = {}
|
|
54
|
-
|
|
56
|
+
requirement_args = {}
|
|
57
|
+
result = requirement.Evaluate(query_data, requirement_args)
|
|
55
58
|
assert result.result == EvaluateResult.Warning
|
|
56
59
|
assert "Incomplete data was encountered" in result.context
|
|
57
60
|
|
|
58
61
|
def test_status_none(self, requirement, query_data):
|
|
59
62
|
"""Test if `status` is None"""
|
|
60
63
|
query_data["standard"]["security_and_analysis"]["secret_scanning_push_protection"]["status"] = None
|
|
61
|
-
|
|
64
|
+
requirement_args = {}
|
|
65
|
+
result = requirement.Evaluate(query_data, requirement_args)
|
|
62
66
|
assert result.result == EvaluateResult.Warning
|
|
63
67
|
assert "Incomplete data was encountered" in result.context
|
|
64
68
|
|
|
@@ -35,28 +35,32 @@ class TestSecretScanning:
|
|
|
35
35
|
def test_security_and_analysis_missing(self, requirement, query_data):
|
|
36
36
|
# Test if `security_and_analysis` is missing
|
|
37
37
|
query_data["standard"] = {}
|
|
38
|
-
|
|
38
|
+
requirement_args = {}
|
|
39
|
+
result = requirement.Evaluate(query_data, requirement_args)
|
|
39
40
|
assert result.result == EvaluateResult.Warning
|
|
40
41
|
assert "Incomplete data was encountered" in result.context
|
|
41
42
|
|
|
42
43
|
def test_secret_scanning_missing(self, requirement, query_data):
|
|
43
44
|
"""Test if `secret_scanning` is missing"""
|
|
44
45
|
query_data["standard"]["security_and_analysis"] = {}
|
|
45
|
-
|
|
46
|
+
requirement_args = {}
|
|
47
|
+
result = requirement.Evaluate(query_data, requirement_args)
|
|
46
48
|
assert result.result == EvaluateResult.Warning
|
|
47
49
|
assert "Incomplete data was encountered" in result.context
|
|
48
50
|
|
|
49
51
|
def test_status_missing(self, requirement, query_data):
|
|
50
52
|
"""Test if `status` is missing"""
|
|
51
53
|
query_data["standard"]["security_and_analysis"]["secret_scanning"] = {}
|
|
52
|
-
|
|
54
|
+
requirement_args = {}
|
|
55
|
+
result = requirement.Evaluate(query_data, requirement_args)
|
|
53
56
|
assert result.result == EvaluateResult.Warning
|
|
54
57
|
assert "Incomplete data was encountered" in result.context
|
|
55
58
|
|
|
56
59
|
def test_status_none(self, requirement, query_data):
|
|
57
60
|
"""Test if `status` is None"""
|
|
58
61
|
query_data["standard"]["security_and_analysis"]["secret_scanning"] = {"status": None}
|
|
59
|
-
|
|
62
|
+
requirement_args = {}
|
|
63
|
+
result = requirement.Evaluate(query_data, requirement_args)
|
|
60
64
|
assert result.result == EvaluateResult.Warning
|
|
61
65
|
assert "Incomplete data was encountered" in result.context
|
|
62
66
|
|
|
@@ -34,7 +34,8 @@ class TestSquashMergeCommitMessage:
|
|
|
34
34
|
def test_allow_merge_commit_missing(self, requirement, query_data):
|
|
35
35
|
"""Test if `allow_merge_commit` is missing"""
|
|
36
36
|
query_data["standard"] = {}
|
|
37
|
-
|
|
37
|
+
requirement_args = {}
|
|
38
|
+
result = requirement.Evaluate(query_data, requirement_args)
|
|
38
39
|
assert result.result == EvaluateResult.Warning
|
|
39
40
|
assert "Incomplete data was encountered" in result.context
|
|
40
41
|
|
{repoauditor-0.2.73 → repoauditor-0.2.75}/tests/Plugins/GitHubModule/ValueRequrementImpl_UnitTest.py
RENAMED
|
@@ -42,7 +42,7 @@ class TestValueRequirementImpl:
|
|
|
42
42
|
def test_ResultIsNone(self, requirement):
|
|
43
43
|
"""Test pathway where result value is None."""
|
|
44
44
|
query_data = {"result": None}
|
|
45
|
-
requirement_args = {}
|
|
45
|
+
requirement_args = {"value": 0}
|
|
46
46
|
result = requirement.Evaluate(query_data, requirement_args)
|
|
47
47
|
assert result.result == EvaluateResult.Warning
|
|
48
48
|
assert "Incomplete data" in result.context
|
|
@@ -84,7 +84,7 @@ class TestValueRequirementImpl:
|
|
|
84
84
|
)
|
|
85
85
|
|
|
86
86
|
query_data = {"result": None}
|
|
87
|
-
requirement_args = {}
|
|
87
|
+
requirement_args = {"value": 0}
|
|
88
88
|
result = requirement.Evaluate(query_data, requirement_args)
|
|
89
89
|
assert result.result == EvaluateResult.DoesNotApply
|
|
90
90
|
assert result.context is None
|