RepoAuditor 0.2.73__tar.gz → 0.2.76__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.
Files changed (168) hide show
  1. {repoauditor-0.2.73 → repoauditor-0.2.76}/PKG-INFO +1 -1
  2. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/CommunityStandards/Impl/ExistsRequirementImpl.py +2 -2
  3. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/EnsureStatusChecks.py +1 -1
  4. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/ClassicValueRequirementImpl.py +5 -5
  5. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/Impl/EnableRequirementImpl.py +12 -9
  6. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/Impl/EnableRulesetRequirementImpl.py +4 -2
  7. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/Impl/ValueRequirementImpl.py +4 -4
  8. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequirePullRequests.py +1 -1
  9. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireSignedCommits.py +1 -1
  10. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireStatusChecks.py +1 -1
  11. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DefaultBranch.py +1 -1
  12. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Description.py +1 -1
  13. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/StandardValueRequirementImpl.py +3 -3
  14. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Private.py +4 -5
  15. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Requirement.py +6 -0
  16. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/__init__.py +1 -1
  17. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/CommunityStandards/CommunityStandardsQuery_UnitTest.py +5 -1
  18. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/CommunityStandards_EndToEndTest.py +4 -4
  19. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubEnterprise_EndToEndTest.py +4 -4
  20. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/DismissStalePullRequestApprovals_UnitTest.py +6 -4
  21. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/EnsureStatusChecks_UnitTest.py +6 -4
  22. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireApprovalMostRecentPush_UnitTest.py +7 -5
  23. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireApprovals_UnitTest.py +6 -4
  24. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireCodeOwnerReview_UnitTest.py +6 -4
  25. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireUpToDateBranches_UnitTest.py +16 -4
  26. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/DefaultBranchQueryRequirements/Protected_UnitTest.py +6 -4
  27. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/GitHubSession_UnitTest.py +2 -2
  28. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/StandardQueryRequirements/DependabotSecurityUpdates_UnitTest.py +14 -8
  29. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/StandardQueryRequirements/Description_UnitTest.py +5 -5
  30. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/StandardQueryRequirements/License_UnitTest.py +8 -6
  31. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/StandardQueryRequirements/MergeCommitMessage_UnitTest.py +10 -6
  32. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/StandardQueryRequirements/Private_UnitTest.py +10 -6
  33. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/StandardQueryRequirements/SecretScanningPushProtection_UnitTest.py +14 -8
  34. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/StandardQueryRequirements/SecretScanning_UnitTest.py +14 -8
  35. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/StandardQueryRequirements/SquashMergeCommitMessage_UnitTest.py +8 -6
  36. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/ValueRequrementImpl_UnitTest.py +6 -6
  37. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/fixtures.py +10 -5
  38. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHub_EndToEndTest.py +4 -4
  39. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/__snapshots__/GitHubEnterprise_EndToEndTest.ambr +42 -43
  40. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/__snapshots__/GitHub_EndToEndTest.ambr +66 -67
  41. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Requirement_UnitTest.py +3 -3
  42. {repoauditor-0.2.73 → repoauditor-0.2.76}/.copier-answers.yml +0 -0
  43. {repoauditor-0.2.73 → repoauditor-0.2.76}/.github/CODEOWNERS +0 -0
  44. {repoauditor-0.2.73 → repoauditor-0.2.76}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  45. {repoauditor-0.2.73 → repoauditor-0.2.76}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  46. {repoauditor-0.2.73 → repoauditor-0.2.76}/.github/ISSUE_TEMPLATE/custom.md +0 -0
  47. {repoauditor-0.2.73 → repoauditor-0.2.76}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  48. {repoauditor-0.2.73 → repoauditor-0.2.76}/.github/actions/release_impl/action.yml +0 -0
  49. {repoauditor-0.2.73 → repoauditor-0.2.76}/.github/pull_request_template.md +0 -0
  50. {repoauditor-0.2.73 → repoauditor-0.2.76}/.github/release_sources.yaml +0 -0
  51. {repoauditor-0.2.73 → repoauditor-0.2.76}/.github/workflows/CICD.yml +0 -0
  52. {repoauditor-0.2.73 → repoauditor-0.2.76}/.github/workflows/CICD_impl.yml +0 -0
  53. {repoauditor-0.2.73 → repoauditor-0.2.76}/.github/workflows/EndToEnd.yml +0 -0
  54. {repoauditor-0.2.73 → repoauditor-0.2.76}/.github/workflows/codeql.yml +0 -0
  55. {repoauditor-0.2.73 → repoauditor-0.2.76}/.gitignore +0 -0
  56. {repoauditor-0.2.73 → repoauditor-0.2.76}/.pre-commit-config.yaml +0 -0
  57. {repoauditor-0.2.73 → repoauditor-0.2.76}/.python-version +0 -0
  58. {repoauditor-0.2.73 → repoauditor-0.2.76}/CODE_OF_CONDUCT.md +0 -0
  59. {repoauditor-0.2.73 → repoauditor-0.2.76}/CONTRIBUTING.md +0 -0
  60. {repoauditor-0.2.73 → repoauditor-0.2.76}/DEVELOPMENT.md +0 -0
  61. {repoauditor-0.2.73 → repoauditor-0.2.76}/GOVERNANCE.md +0 -0
  62. {repoauditor-0.2.73 → repoauditor-0.2.76}/LICENSE +0 -0
  63. {repoauditor-0.2.73 → repoauditor-0.2.76}/MAINTAINERS.md +0 -0
  64. {repoauditor-0.2.73 → repoauditor-0.2.76}/README.md +0 -0
  65. {repoauditor-0.2.73 → repoauditor-0.2.76}/SECURITY.md +0 -0
  66. {repoauditor-0.2.73 → repoauditor-0.2.76}/default_config.yaml +0 -0
  67. {repoauditor-0.2.73 → repoauditor-0.2.76}/minisign_key.pub +0 -0
  68. {repoauditor-0.2.73 → repoauditor-0.2.76}/pyproject.toml +0 -0
  69. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/AutoGitSemVer.yaml +0 -0
  70. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/CommandLineProcessor.py +0 -0
  71. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Display.py +0 -0
  72. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/EntryPoint.py +0 -0
  73. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/ExecuteModules.py +0 -0
  74. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Impl/ParallelSequentialProcessor.py +0 -0
  75. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Impl/__init__.py +0 -0
  76. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Module.py +0 -0
  77. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugin.py +0 -0
  78. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/CommunityStandards/CommunityStandardsQuery.py +0 -0
  79. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/CommunityStandards/Impl/__init__.py +0 -0
  80. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/CommunityStandards/Module.py +0 -0
  81. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/CodeOfConduct.py +0 -0
  82. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/CodeOwners.py +0 -0
  83. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/Contributing.py +0 -0
  84. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/IssueTemplates.py +0 -0
  85. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/LicenseFile.py +0 -0
  86. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/PullRequestTemplates.py +0 -0
  87. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/ReadMe.py +0 -0
  88. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/SecurityPolicy.py +0 -0
  89. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/__init__.py +0 -0
  90. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/CommunityStandards/__init__.py +0 -0
  91. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/CommunityStandardsPlugin.py +0 -0
  92. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionQuery.py +0 -0
  93. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/AllowDeletions.py +0 -0
  94. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/AllowMainlineForcePushes.py +0 -0
  95. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/DismissStalePullRequestApprovals.py +0 -0
  96. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/DoNotAllowBypassSettings.py +0 -0
  97. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/ClassicEnableRequirementImpl.py +0 -0
  98. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/__init__.py +0 -0
  99. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireApprovalMostRecentPush.py +0 -0
  100. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireApprovals.py +0 -0
  101. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireCodeOwnerReview.py +0 -0
  102. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireConversationResolution.py +0 -0
  103. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireLinearHistory.py +0 -0
  104. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequirePullRequests.py +0 -0
  105. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireSignedCommits.py +0 -0
  106. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireStatusChecksToPass.py +0 -0
  107. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireUpToDateBranches.py +0 -0
  108. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/__init__.py +0 -0
  109. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/DefaultBranchQuery.py +0 -0
  110. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/DefaultBranchRequirements/Protected.py +0 -0
  111. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/DefaultBranchRequirements/__init__.py +0 -0
  112. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/Impl/Common.py +0 -0
  113. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/Impl/__init__.py +0 -0
  114. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/Module.py +0 -0
  115. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/RulesetQuery.py +0 -0
  116. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/__init__.py +0 -0
  117. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardQuery.py +0 -0
  118. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/AutoMerge.py +0 -0
  119. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DeleteHeadBranches.py +0 -0
  120. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DependabotSecurityUpdates.py +0 -0
  121. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/StandardEnableRequirementImpl.py +0 -0
  122. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/__init__.py +0 -0
  123. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/License.py +0 -0
  124. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/MergeCommit.py +0 -0
  125. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/MergeCommitMessage.py +0 -0
  126. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/RebaseMergeCommit.py +0 -0
  127. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SecretScanning.py +0 -0
  128. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SecretScanningPushProtection.py +0 -0
  129. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SquashCommitMerge.py +0 -0
  130. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SquashMergeCommitMessage.py +0 -0
  131. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SuggestUpdatingPullRequestBranches.py +0 -0
  132. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportDiscussions.py +0 -0
  133. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportIssues.py +0 -0
  134. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportProjects.py +0 -0
  135. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportWikis.py +0 -0
  136. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/TemplateRepository.py +0 -0
  137. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/WebCommitSignoff.py +0 -0
  138. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/__init__.py +0 -0
  139. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHub/__init__.py +0 -0
  140. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHubBase/Module.py +0 -0
  141. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHubBase/__init__.py +0 -0
  142. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/GitHubPlugin.py +0 -0
  143. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Plugins/__init__.py +0 -0
  144. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/Query.py +0 -0
  145. {repoauditor-0.2.73 → repoauditor-0.2.76}/src/RepoAuditor/py.typed +0 -0
  146. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/CommandLineProcessor_UnitTest.py +0 -0
  147. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/EntryPoint_UnitTest.py +0 -0
  148. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/ExecuteModules_UnitTest.py +0 -0
  149. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Module_UnitTest.py +0 -0
  150. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugin_UnitTest.py +0 -0
  151. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/CommunityStandards/ExistsRequirementImpl_UnitTest.py +0 -0
  152. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/CommunityStandards/GitHubCommunityStandards_UnitTest.py +0 -0
  153. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/ClassicBranchProtectionQuery_UnitTest.py +0 -0
  154. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/ClassicValueRequirementImpl_UnitTest.py +0 -0
  155. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/DefaultBranchQuery_UnitTest.py +0 -0
  156. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/EnableRulesetRequirementImpl_UnitTest.py +0 -0
  157. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/GitHubModule_UnitTest.py +0 -0
  158. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/RulesetRequirements_UnitTest.py +0 -0
  159. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/RulsesetQuery_UnitTest.py +0 -0
  160. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/GitHubModule/StandardQuery_UnitTest.py +0 -0
  161. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/__snapshots__/CommunityStandards_EndToEndTest.ambr +0 -0
  162. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/conftest.py +0 -0
  163. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Plugins/utilities.py +0 -0
  164. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/Query_UnitTest.py +0 -0
  165. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/__init__.py +0 -0
  166. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/__snapshots__/ExecuteModules_UnitTest.ambr +0 -0
  167. {repoauditor-0.2.73 → repoauditor-0.2.76}/tests/conftest.py +0 -0
  168. {repoauditor-0.2.73 → repoauditor-0.2.76}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: RepoAuditor
3
- Version: 0.2.73
3
+ Version: 0.2.76
4
4
  Summary: Add your description here
5
5
  Project-URL: Homepage, https://github.com/gt-sse-center/RepoAuditor
6
6
  Project-URL: Documentation, https://github.com/gt-sse-center/RepoAuditor
@@ -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 `dynamic_arg_name` is `not unrequired`.
84
- if not requirement_args[self.dynamic_arg_name]:
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
@@ -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 the expected value.",
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
- if requirement_args[self.dynamic_arg_name]:
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"] = "Enable" if expected_rule_enabled else "Disable"
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 the expected value.",
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="{__expected_value} pull request rule in repository rulesets",
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="Enable commit signing requirement in repository rulesets",
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="Configure required status checks in repository rulesets",
23
+ resolution="{__enabled_str} required status checks in repository rulesets",
24
24
  rationale="Status checks ensure code quality and compatibility",
25
25
  )
@@ -24,7 +24,7 @@ class DefaultBranch(StandardValueRequirementImpl):
24
24
  "main",
25
25
  "settings",
26
26
  "Default Branch",
27
- None,
27
+ "Default Branch",
28
28
  lambda data: data["standard"].get("default_branch", None),
29
29
  textwrap.dedent(
30
30
  """\
@@ -24,7 +24,7 @@ class Description(Requirement):
24
24
  def __init__(self) -> None:
25
25
  super().__init__(
26
26
  "Description",
27
- "Validates a repository's description.",
27
+ "Validates if the repository has a description.",
28
28
  ExecutionStyle.Parallel,
29
29
  textwrap.dedent(
30
30
  """\
@@ -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 the expected visibility.",
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,
@@ -2,4 +2,4 @@ APP_NAME = "RepoAuditor"
2
2
 
3
3
  # Note that the default value below will be used until the value
4
4
  # here is explicitly updated by the Continuous Integration system.
5
- __version__ = "0.2.73"
5
+ __version__ = "0.2.76"
@@ -27,10 +27,15 @@ class MockTemporaryDirectory:
27
27
 
28
28
  @pytest.fixture(autouse=True)
29
29
  def patch_temp_directory(monkeypatch):
30
+ """Prevent creation of TemporaryDirectory within GetData calls,
31
+ so we don't need to perform cleanup.
32
+ """
30
33
  monkeypatch.delattr("tempfile.TemporaryDirectory")
31
34
 
32
35
 
33
36
  class TestCommunityStandardsQuery:
37
+ """Tests for CommunityStandardsQuery class."""
38
+
34
39
  def test_GetData(self, module_data, monkeypatch):
35
40
  """Test the GetData method."""
36
41
  monkeypatch.setattr(
@@ -41,7 +46,6 @@ class TestCommunityStandardsQuery:
41
46
 
42
47
  def mock_clone_from(github_url, repo_dirname, branch="main"):
43
48
  """A mocked clone_from method for the git.Repo class."""
44
- pass
45
49
 
46
50
  monkeypatch.setattr(
47
51
  Repo,
@@ -321,8 +321,8 @@ class TestCommunityStandards:
321
321
  # ----------------------------------------------------------------------
322
322
  # ----------------------------------------------------------------------
323
323
  # ----------------------------------------------------------------------
324
- @pytest.fixture
325
- def args() -> list[str]:
324
+ @pytest.fixture(name="args")
325
+ def args_fixture() -> list[str]:
326
326
  return [
327
327
  "--include",
328
328
  "CommunityStandards",
@@ -332,8 +332,8 @@ def args() -> list[str]:
332
332
 
333
333
 
334
334
  # ----------------------------------------------------------------------
335
- @pytest.fixture
336
- def pat_args(args) -> list[str]:
335
+ @pytest.fixture(name="pat_args")
336
+ def pat_args_fixture(args) -> list[str]:
337
337
  github_pat_filename = (Path(__file__).parent / "github_pat.txt").resolve()
338
338
  CheckPATFileExists(github_pat_filename)
339
339
 
@@ -23,8 +23,8 @@ pytest.fixture(InitializeStreamCapabilities(), scope="session", autouse=True)
23
23
 
24
24
 
25
25
  # ----------------------------------------------------------------------
26
- @pytest.fixture
27
- def args() -> list[str]:
26
+ @pytest.fixture(name="args")
27
+ def args_fixture() -> list[str]:
28
28
  return [
29
29
  "--include",
30
30
  "GitHub",
@@ -37,8 +37,8 @@ def args() -> list[str]:
37
37
 
38
38
 
39
39
  # ----------------------------------------------------------------------
40
- @pytest.fixture
41
- def pat_args(args) -> list[str]:
40
+ @pytest.fixture(name="pat_args")
41
+ def pat_args_fixture(args) -> list[str]:
42
42
  github_pat_filename = (Path(__file__).parent / "github_gatech_pat.txt").resolve()
43
43
  parsed = urllib.parse.urlparse(GetGithubUrl("enterprise"))
44
44
  parsed = parsed._replace(path="")
@@ -14,8 +14,8 @@ from RepoAuditor.Plugins.GitHub.ClassicBranchProtectionRequirements.DismissStale
14
14
  from RepoAuditor.Requirement import EvaluateResult
15
15
 
16
16
 
17
- @pytest.fixture
18
- def query_data(session):
17
+ @pytest.fixture(name="query_data")
18
+ def query_data_fixture(session):
19
19
  return {
20
20
  "session": session,
21
21
  "branch": "main",
@@ -27,12 +27,14 @@ def query_data(session):
27
27
  }
28
28
 
29
29
 
30
- @pytest.fixture
31
- def requirement():
30
+ @pytest.fixture(name="requirement")
31
+ def requirement_fixture():
32
32
  return DismissStalePullRequestApprovals()
33
33
 
34
34
 
35
35
  class TestDismissStalePullRequestApprovals:
36
+ """Tests for the DismissStalePullRequestApprovals requirement class."""
37
+
36
38
  def test_required_pull_request_reviews_missing(self, requirement, query_data):
37
39
  """Test when `required_pull_request_reviews` is missing."""
38
40
  query_data["branch_protection_data"] = {}
@@ -14,8 +14,8 @@ from RepoAuditor.Plugins.GitHub.ClassicBranchProtectionRequirements.EnsureStatus
14
14
  from RepoAuditor.Requirement import EvaluateResult
15
15
 
16
16
 
17
- @pytest.fixture
18
- def query_data(session):
17
+ @pytest.fixture(name="query_data")
18
+ def query_data_fixture(session):
19
19
  return {
20
20
  "session": session,
21
21
  "branch": "main",
@@ -27,12 +27,14 @@ def query_data(session):
27
27
  }
28
28
 
29
29
 
30
- @pytest.fixture
31
- def requirement():
30
+ @pytest.fixture(name="requirement")
31
+ def requirement_fixture():
32
32
  return EnsureStatusChecks()
33
33
 
34
34
 
35
35
  class TestEnsureStatusChecks:
36
+ """Tests for the EnsureStatusChecks requirement class."""
37
+
36
38
  def test_disabled(self, requirement, query_data):
37
39
  """Test disabled requirement"""
38
40
  requirement_args = {"disabled": True}
@@ -14,8 +14,8 @@ from RepoAuditor.Plugins.GitHub.ClassicBranchProtectionRequirements.RequireAppro
14
14
  from RepoAuditor.Requirement import EvaluateResult
15
15
 
16
16
 
17
- @pytest.fixture
18
- def query_data(session):
17
+ @pytest.fixture(name="query_data")
18
+ def query_data_fixture(session):
19
19
  return {
20
20
  "session": session,
21
21
  "branch": "main",
@@ -27,12 +27,14 @@ def query_data(session):
27
27
  }
28
28
 
29
29
 
30
- @pytest.fixture
31
- def requirement():
30
+ @pytest.fixture(name="requirement")
31
+ def requirement_fixture():
32
32
  return RequireApprovalMostRecentPush()
33
33
 
34
34
 
35
35
  class TestRequireApprovalMostRecentPush:
36
+ """Tests for the RequireApprovalMostRecentPush requirement class."""
37
+
36
38
  def test_required_pull_request_reviews_missing(self, requirement, query_data):
37
39
  """Test when `required_pull_request_reviews` is missing"""
38
40
  query_data["branch_protection_data"] = {}
@@ -59,10 +61,10 @@ class TestRequireApprovalMostRecentPush:
59
61
 
60
62
  def test_require_last_push_approval_none(self, requirement, query_data):
61
63
  """Test when `require_last_push_approval` is None"""
62
- requirement_args = {}
63
64
  query_data["branch_protection_data"]["required_pull_request_reviews"][
64
65
  "require_last_push_approval"
65
66
  ] = None
67
+ requirement_args = {}
66
68
  result = requirement.Evaluate(query_data, requirement_args)
67
69
  assert result.result == EvaluateResult.DoesNotApply
68
70
  assert result.context is None
@@ -12,8 +12,8 @@ from RepoAuditor.Plugins.GitHub.ClassicBranchProtectionRequirements.RequireAppro
12
12
  from RepoAuditor.Requirement import EvaluateResult
13
13
 
14
14
 
15
- @pytest.fixture
16
- def query_data(session):
15
+ @pytest.fixture(name="query_data")
16
+ def query_data_fixture(session):
17
17
  return {
18
18
  "session": session,
19
19
  "branch": "main",
@@ -25,12 +25,14 @@ def query_data(session):
25
25
  }
26
26
 
27
27
 
28
- @pytest.fixture
29
- def requirement():
28
+ @pytest.fixture(name="requirement")
29
+ def requirement_fixture():
30
30
  return RequireApprovals()
31
31
 
32
32
 
33
33
  class TestRequireApprovals:
34
+ """Tests for the RequireApprovals requirement class."""
35
+
34
36
  def test_required_pull_request_reviews_missing(self, requirement, query_data):
35
37
  """Test when `required_pull_request_reviews` is missing"""
36
38
  query_data["branch_protection_data"] = {}
@@ -14,8 +14,8 @@ from RepoAuditor.Plugins.GitHub.ClassicBranchProtectionRequirements.RequireCodeO
14
14
  from RepoAuditor.Requirement import EvaluateResult
15
15
 
16
16
 
17
- @pytest.fixture
18
- def query_data(session):
17
+ @pytest.fixture(name="query_data")
18
+ def query_data_fixture(session):
19
19
  return {
20
20
  "session": session,
21
21
  "branch": "main",
@@ -27,12 +27,14 @@ def query_data(session):
27
27
  }
28
28
 
29
29
 
30
- @pytest.fixture
31
- def requirement():
30
+ @pytest.fixture(name="requirement")
31
+ def requirement_fixture():
32
32
  return RequireCodeOwnerReview()
33
33
 
34
34
 
35
35
  class TestRequireCodeOwnerReview:
36
+ """Tests for the RequireCodeOwnerReview requirement class."""
37
+
36
38
  def test_required_pull_request_reviews_missing(self, requirement, query_data):
37
39
  """Test when `required_pull_request_reviews` is missing"""
38
40
  query_data["branch_protection_data"] = {}
@@ -1,3 +1,11 @@
1
+ # -------------------------------------------------------------------------------
2
+ # |
3
+ # | Copyright (c) 2024 Scientific Software Engineering Center at Georgia Tech
4
+ # | Distributed under the MIT License.
5
+ # |
6
+ # -------------------------------------------------------------------------------
7
+ """Unit tests for RequireUpToDateBranches."""
8
+
1
9
  import pytest
2
10
 
3
11
  from RepoAuditor.Plugins.GitHub.ClassicBranchProtectionRequirements.RequireUpToDateBranches import (
@@ -6,8 +14,9 @@ from RepoAuditor.Plugins.GitHub.ClassicBranchProtectionRequirements.RequireUpToD
6
14
  from RepoAuditor.Requirement import EvaluateResult
7
15
 
8
16
 
9
- @pytest.fixture
10
- def query_data(session):
17
+ @pytest.fixture(name="query_data")
18
+ def query_data_fixture(session):
19
+ """Sample query data fixture."""
11
20
  return {
12
21
  "session": session,
13
22
  "branch": "main",
@@ -19,12 +28,15 @@ def query_data(session):
19
28
  }
20
29
 
21
30
 
22
- @pytest.fixture
23
- def requirement():
31
+ @pytest.fixture(name="requirement")
32
+ def requirement_fixture():
33
+ """RequireUpToDateBranches requirement fixture."""
24
34
  return RequireUpToDateBranches()
25
35
 
26
36
 
27
37
  class TestRequireUpToDateBranches:
38
+ """Tests for RequireUpToDateBranches requirement."""
39
+
28
40
  def test_required_status_checks_missing(self, requirement, query_data):
29
41
  """Test when `required_status_checks` is missing"""
30
42
  query_data["branch_protection_data"] = {}
@@ -12,8 +12,8 @@ from RepoAuditor.Plugins.GitHub.DefaultBranchRequirements.Protected import Prote
12
12
  from RepoAuditor.Requirement import EvaluateResult
13
13
 
14
14
 
15
- @pytest.fixture
16
- def query_data(session):
15
+ @pytest.fixture(name="query_data")
16
+ def query_data_fixture(session):
17
17
  return {
18
18
  "session": session,
19
19
  "default_branch_data": {
@@ -22,12 +22,14 @@ def query_data(session):
22
22
  }
23
23
 
24
24
 
25
- @pytest.fixture
26
- def requirement():
25
+ @pytest.fixture(name="requirement")
26
+ def requirement_fixture():
27
27
  return Protected()
28
28
 
29
29
 
30
30
  class TestProtected:
31
+ """Tests for the Protected requirement class."""
32
+
31
33
  def test_Incomplete(self, requirement, query_data):
32
34
  """Test for incomplete result"""
33
35
  query_data["default_branch_data"] = {}
@@ -14,8 +14,8 @@ import requests
14
14
  from RepoAuditor.Plugins.GitHubBase.Module import _GitHubSession
15
15
 
16
16
 
17
- @pytest.fixture
18
- def github_pat(fs):
17
+ @pytest.fixture(name="github_pat")
18
+ def github_pat_fixture(fs):
19
19
  """Fixture for GitHub PAT file, which creates a fake PAT file and returns the path."""
20
20
  pat_path = Path(__file__).parent / "dummy_github_pat.txt"
21
21
  fs.create_file(pat_path, contents="github_path_abcdefghijklmnop")
@@ -14,8 +14,8 @@ from RepoAuditor.Plugins.GitHub.StandardRequirements.DependabotSecurityUpdates i
14
14
  from RepoAuditor.Requirement import EvaluateResult
15
15
 
16
16
 
17
- @pytest.fixture
18
- def query_data(session):
17
+ @pytest.fixture(name="query_data")
18
+ def query_data_fixture(session):
19
19
  return {
20
20
  "session": session,
21
21
  "standard": {
@@ -28,37 +28,43 @@ def query_data(session):
28
28
  }
29
29
 
30
30
 
31
- @pytest.fixture
32
- def requirement():
31
+ @pytest.fixture(name="requirement")
32
+ def requirement_fixture():
33
33
  return DependabotSecurityUpdates()
34
34
 
35
35
 
36
36
  class TestDependabotSecurityUpdates:
37
+ """Tests for the DependabotSecurityUpdates requirement class."""
38
+
37
39
  def test_security_and_analysis_missing(self, requirement, query_data):
38
40
  """Test if `security_and_analysis` is missing"""
39
41
  query_data["standard"] = {}
40
- result = requirement.Evaluate(query_data, requirement_args={})
42
+ requirement_args = {}
43
+ result = requirement.Evaluate(query_data, requirement_args)
41
44
  assert result.result == EvaluateResult.Warning
42
45
  assert "Incomplete data was encountered" in result.context
43
46
 
44
47
  def test_dependabot_security_updates_missing(self, requirement, query_data):
45
48
  """Test if `dependabot_security_updates` is missing"""
46
49
  query_data["standard"]["security_and_analysis"] = {}
47
- result = requirement.Evaluate(query_data, requirement_args={})
50
+ requirement_args = {}
51
+ result = requirement.Evaluate(query_data, requirement_args)
48
52
  assert result.result == EvaluateResult.Warning
49
53
  assert "Incomplete data was encountered" in result.context
50
54
 
51
55
  def test_status_missing(self, requirement, query_data):
52
56
  """Test if `status` is missing"""
53
57
  query_data["standard"]["security_and_analysis"]["dependabot_security_updates"] = {}
54
- result = requirement.Evaluate(query_data, requirement_args={})
58
+ requirement_args = {}
59
+ result = requirement.Evaluate(query_data, requirement_args)
55
60
  assert result.result == EvaluateResult.Warning
56
61
  assert "Incomplete data was encountered" in result.context
57
62
 
58
63
  def test_status_none(self, requirement, query_data):
59
64
  """Test if `status` is None"""
60
65
  query_data["standard"]["security_and_analysis"]["dependabot_security_updates"]["status"] = None
61
- result = requirement.Evaluate(query_data, requirement_args={})
66
+ requirement_args = {}
67
+ result = requirement.Evaluate(query_data, requirement_args)
62
68
  assert result.result == EvaluateResult.Warning
63
69
  assert "Incomplete data was encountered" in result.context
64
70