RepoAuditor 0.2.38__tar.gz → 0.2.39__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.38 → repoauditor-0.2.39}/DEVELOPMENT.md +19 -0
  2. {repoauditor-0.2.38 → repoauditor-0.2.39}/PKG-INFO +1 -1
  3. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/ExecuteModules.py +1 -1
  4. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Impl/ParallelSequentialProcessor.py +1 -1
  5. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/__init__.py +1 -1
  6. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/CommandLineProcessor_UnitTest.py +1 -3
  7. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Module_UnitTest.py +50 -2
  8. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubCustomization/GitHubCustomization_UnitTest.py +2 -1
  9. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubCustomization_EndToEndTest.py +2 -3
  10. repoauditor-0.2.39/tests/Plugins/GitHubModule/GitHubSession_UnitTest.py +89 -0
  11. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubRuleset_EndToEndTest.py +2 -3
  12. repoauditor-0.2.39/tests/Plugins/GitHubRulesets/EnableRulesetRequirementImpl_UnitTest.py +105 -0
  13. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHub_EndToEndTest.py +1 -4
  14. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/utilities.py +0 -1
  15. repoauditor-0.2.38/tests/Plugins/GitHubModule/GitHubSession_UnitTest.py +0 -48
  16. {repoauditor-0.2.38 → repoauditor-0.2.39}/.copier-answers.yml +0 -0
  17. {repoauditor-0.2.38 → repoauditor-0.2.39}/.github/CODEOWNERS +0 -0
  18. {repoauditor-0.2.38 → repoauditor-0.2.39}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  19. {repoauditor-0.2.38 → repoauditor-0.2.39}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  20. {repoauditor-0.2.38 → repoauditor-0.2.39}/.github/ISSUE_TEMPLATE/custom.md +0 -0
  21. {repoauditor-0.2.38 → repoauditor-0.2.39}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  22. {repoauditor-0.2.38 → repoauditor-0.2.39}/.github/actions/release_impl/action.yml +0 -0
  23. {repoauditor-0.2.38 → repoauditor-0.2.39}/.github/pull_request_template.md +0 -0
  24. {repoauditor-0.2.38 → repoauditor-0.2.39}/.github/release_sources.yaml +0 -0
  25. {repoauditor-0.2.38 → repoauditor-0.2.39}/.github/workflows/CICD.yml +0 -0
  26. {repoauditor-0.2.38 → repoauditor-0.2.39}/.github/workflows/CICD_impl.yml +0 -0
  27. {repoauditor-0.2.38 → repoauditor-0.2.39}/.github/workflows/EndToEnd.yml +0 -0
  28. {repoauditor-0.2.38 → repoauditor-0.2.39}/.github/workflows/codeql.yml +0 -0
  29. {repoauditor-0.2.38 → repoauditor-0.2.39}/.gitignore +0 -0
  30. {repoauditor-0.2.38 → repoauditor-0.2.39}/.pre-commit-config.yaml +0 -0
  31. {repoauditor-0.2.38 → repoauditor-0.2.39}/.python-version +0 -0
  32. {repoauditor-0.2.38 → repoauditor-0.2.39}/CODE_OF_CONDUCT.md +0 -0
  33. {repoauditor-0.2.38 → repoauditor-0.2.39}/CONTRIBUTING.md +0 -0
  34. {repoauditor-0.2.38 → repoauditor-0.2.39}/GOVERNANCE.md +0 -0
  35. {repoauditor-0.2.38 → repoauditor-0.2.39}/LICENSE +0 -0
  36. {repoauditor-0.2.38 → repoauditor-0.2.39}/MAINTAINERS.md +0 -0
  37. {repoauditor-0.2.38 → repoauditor-0.2.39}/README.md +0 -0
  38. {repoauditor-0.2.38 → repoauditor-0.2.39}/SECURITY.md +0 -0
  39. {repoauditor-0.2.38 → repoauditor-0.2.39}/minisign_key.pub +0 -0
  40. {repoauditor-0.2.38 → repoauditor-0.2.39}/pyproject.toml +0 -0
  41. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/AutoGitSemVer.yaml +0 -0
  42. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/CommandLineProcessor.py +0 -0
  43. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Display.py +0 -0
  44. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/EntryPoint.py +0 -0
  45. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Impl/__init__.py +0 -0
  46. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Module.py +0 -0
  47. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugin.py +0 -0
  48. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionQuery.py +0 -0
  49. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/AllowDeletions.py +0 -0
  50. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/AllowForcePushes.py +0 -0
  51. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/DismissStalePullRequestApprovals.py +0 -0
  52. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/DoNotAllowBypassSettings.py +0 -0
  53. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/EnsureStatusChecks.py +0 -0
  54. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/ClassicEnableRequirementImpl.py +0 -0
  55. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/ClassicValueRequirementImpl.py +0 -0
  56. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/__init__.py +0 -0
  57. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireApprovalMostRecentPush.py +0 -0
  58. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireApprovals.py +0 -0
  59. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireCodeOwnerReview.py +0 -0
  60. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireConversationResolution.py +0 -0
  61. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireLinearHistory.py +0 -0
  62. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequirePullRequests.py +0 -0
  63. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireSignedCommits.py +0 -0
  64. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireStatusChecksToPass.py +0 -0
  65. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireUpToDateBranches.py +0 -0
  66. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/__init__.py +0 -0
  67. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/DefaultBranchQuery.py +0 -0
  68. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/DefaultBranchQueryRequirements/Protected.py +0 -0
  69. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/DefaultBranchQueryRequirements/__init__.py +0 -0
  70. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/Impl/Common.py +0 -0
  71. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/Impl/EnableRequirementImpl.py +0 -0
  72. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/Impl/ValueRequirementImpl.py +0 -0
  73. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/Impl/__init__.py +0 -0
  74. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/Module.py +0 -0
  75. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQuery.py +0 -0
  76. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/AutoMerge.py +0 -0
  77. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/DefaultBranch.py +0 -0
  78. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/DeleteHeadBranches.py +0 -0
  79. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/DependabotSecurityUpdates.py +0 -0
  80. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/Description.py +0 -0
  81. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/Impl/StandardEnableRequirementImpl.py +0 -0
  82. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/Impl/StandardValueRequirementImpl.py +0 -0
  83. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/Impl/__init__.py +0 -0
  84. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/License.py +0 -0
  85. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/MergeCommit.py +0 -0
  86. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/MergeCommitMessage.py +0 -0
  87. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/Private.py +0 -0
  88. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/RebaseMergeCommit.py +0 -0
  89. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/SecretScanning.py +0 -0
  90. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/SecretScanningPushProtection.py +0 -0
  91. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/SquashCommitMerge.py +0 -0
  92. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/SquashMergeCommitMessage.py +0 -0
  93. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/SuggestUpdatingPullRequestBranches.py +0 -0
  94. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/SupportDiscussions.py +0 -0
  95. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/SupportIssues.py +0 -0
  96. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/SupportProjects.py +0 -0
  97. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/SupportWikis.py +0 -0
  98. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/TemplateRepository.py +0 -0
  99. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/WebCommitSignoff.py +0 -0
  100. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/StandardQueryRequirements/__init__.py +0 -0
  101. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHub/__init__.py +0 -0
  102. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubBase/Module.py +0 -0
  103. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubBase/__init__.py +0 -0
  104. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubCustomization/CustomizationQuery.py +0 -0
  105. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubCustomization/Impl/ExistsRequirementImpl.py +0 -0
  106. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubCustomization/Impl/__init__.py +0 -0
  107. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubCustomization/Module.py +0 -0
  108. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubCustomization/Requirements/CodeOwners.py +0 -0
  109. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubCustomization/Requirements/Contributing.py +0 -0
  110. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubCustomization/Requirements/IssueTemplates.py +0 -0
  111. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubCustomization/Requirements/PullRequestTemplates.py +0 -0
  112. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubCustomization/Requirements/SecurityPolicy.py +0 -0
  113. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubCustomization/Requirements/__init__.py +0 -0
  114. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubCustomization/__init__.py +0 -0
  115. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubCustomizationPlugin.py +0 -0
  116. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubPlugin.py +0 -0
  117. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubRulesets/Impl/EnableRulesetRequirementImpl.py +0 -0
  118. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubRulesets/Impl/__init__.py +0 -0
  119. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubRulesets/Module.py +0 -0
  120. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubRulesets/Requirements/RequirePullRequests.py +0 -0
  121. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubRulesets/Requirements/RequireSignedCommits.py +0 -0
  122. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubRulesets/Requirements/RequireStatusChecks.py +0 -0
  123. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubRulesets/Requirements/__init__.py +0 -0
  124. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubRulesets/RulesetQuery.py +0 -0
  125. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubRulesets/__init__.py +0 -0
  126. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/GitHubRulesetsPlugin.py +0 -0
  127. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Plugins/__init__.py +0 -0
  128. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Query.py +0 -0
  129. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/Requirement.py +0 -0
  130. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/RepoAuditor/py.typed +0 -0
  131. {repoauditor-0.2.38 → repoauditor-0.2.39}/src/github_auditor/__init__.py +0 -0
  132. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/EntryPoint_UnitTest.py +0 -0
  133. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/ExecuteModules_UnitTest.py +0 -0
  134. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugin_UnitTest.py +0 -0
  135. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubCustomization/CutomizationQuery_UnitTest.py +0 -0
  136. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubCustomization/ExistsRequirementImpl_UnitTest.py +0 -0
  137. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/ClassicBranchProtectionQuery_UnitTest.py +0 -0
  138. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/DismissStalePullRequestApprovals_UnitTest.py +0 -0
  139. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/EnsureStatusChecks_UnitTest.py +0 -0
  140. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireApprovalMostRecentPush_UnitTest.py +0 -0
  141. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireApprovals_UnitTest.py +0 -0
  142. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireCodeOwnerReview_UnitTest.py +0 -0
  143. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireUpToDateBranches_UnitTest.py +0 -0
  144. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/ClassicValueRequirementImpl_UnitTest.py +0 -0
  145. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/DefaultBranchQueryRequirements/Protected_UnitTest.py +0 -0
  146. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/DefaultBranchQuery_UnitTest.py +0 -0
  147. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/GitHubModule_UnitTest.py +0 -0
  148. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/StandardQueryRequirements/DependabotSecurityUpdates_UnitTest.py +0 -0
  149. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/StandardQueryRequirements/Description_UnitTest.py +0 -0
  150. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/StandardQueryRequirements/License_UnitTest.py +0 -0
  151. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/StandardQueryRequirements/MergeCommitMessage_UnitTest.py +0 -0
  152. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/StandardQueryRequirements/Private_UnitTest.py +0 -0
  153. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/StandardQueryRequirements/SecretScanningPushProtection_UnitTest.py +0 -0
  154. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/StandardQueryRequirements/SecretScanning_UnitTest.py +0 -0
  155. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/StandardQueryRequirements/SquashMergeCommitMessage_UnitTest.py +0 -0
  156. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/StandardQuery_UnitTest.py +0 -0
  157. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/ValueRequrementImpl_UnitTest.py +0 -0
  158. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubModule/fixtures.py +0 -0
  159. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubRulesets/GitHubRuleset_UnitTest.py +2 -2
  160. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/GitHubRulesets/RulsesetQuery_UnitTest.py +0 -0
  161. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/__snapshots__/GitHubCustomization_EndToEndTest.ambr +0 -0
  162. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/__snapshots__/GitHubRuleset_EndToEndTest.ambr +0 -0
  163. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/__snapshots__/GitHub_EndToEndTest.ambr +0 -0
  164. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Plugins/conftest.py +0 -0
  165. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Query_UnitTest.py +0 -0
  166. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/Requirement_UnitTest.py +0 -0
  167. {repoauditor-0.2.38 → repoauditor-0.2.39}/tests/__snapshots__/ExecuteModules_UnitTest.ambr +0 -0
  168. {repoauditor-0.2.38 → repoauditor-0.2.39}/uv.lock +0 -0
@@ -1,3 +1,22 @@
1
+ # Fork setup
2
+
3
+ | Step | Command Line | Additional Information |
4
+ | --- | --- | --- |
5
+ | 1. Fork the repository | -- | https://github.com/gt-sse-center/RepoAuditor/fork |
6
+ | 2. Create a PAT for your forked repository | -- | See [PAT setup instructions](README.md#personal-access-token-pat) |
7
+ | 3. Sync the `test-GitHubCustomization` branch | see instructions below | In the web interface, select "New Branch", then choose `gt-sse-center/RepoAuditor` and `test-GitHubCustomization` as source, and enter `test-GitHubCustomization` as branch name. |
8
+ | 4. Update your forked repository settings to match RepoAuditor's defaults | -- |
9
+
10
+
11
+ To sync the `test-GitHubCustomization` branch using the command line:
12
+ ```bash
13
+ git clone <REPOAUDITOR_FORK_URL>
14
+ git remote add upstream https://github.com/gt-sse-center/RepoAuditor
15
+ git fetch upstream
16
+ git checkout -b test-GitHubCustomization upstream/test-GitHubCustomization
17
+ git push origin test-GitHubCustomization
18
+ ```
19
+
1
20
  # Local Development
2
21
 
3
22
  ## Enlistment
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: RepoAuditor
3
- Version: 0.2.38
3
+ Version: 0.2.39
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
@@ -267,7 +267,7 @@ def Execute(
267
267
 
268
268
  for results in all_results:
269
269
  if results is None:
270
- continue
270
+ continue # pragma: no cover
271
271
 
272
272
  final_results.append(list(itertools.chain(*results)))
273
273
 
@@ -112,7 +112,7 @@ def _Impl(
112
112
 
113
113
  for transform_result in transform_results:
114
114
  if transform_result is not None and isinstance(transform_result, Exception):
115
- raise transform_result
115
+ raise transform_result # pragma: no cover
116
116
 
117
117
  for sequential_index, (results_index, item) in enumerate(sequential):
118
118
  with dm.Nested(
@@ -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.38"
5
+ __version__ = "0.2.39"
@@ -8,12 +8,10 @@
8
8
 
9
9
  import re
10
10
  import textwrap
11
-
12
- from typing import cast, Optional
11
+ from typing import Optional, cast
13
12
  from unittest.mock import patch
14
13
 
15
14
  import pytest
16
-
17
15
  from dbrownell_Common.TestHelpers.StreamTestHelpers import GenerateDoneManagerAndContent
18
16
  from dbrownell_Common.Types import override
19
17
 
@@ -7,11 +7,12 @@
7
7
  """Unit test for Module.py"""
8
8
 
9
9
  import copy
10
-
10
+ from typing import Optional, cast
11
11
  from unittest.mock import Mock
12
12
 
13
13
  import pytest
14
-
14
+ from dbrownell_Common.Streams.DoneManager import DoneManager
15
+ from dbrownell_Common.TestHelpers.StreamTestHelpers import GenerateDoneManagerAndContent
15
16
  from dbrownell_Common.Types import override
16
17
 
17
18
  from RepoAuditor.Module import *
@@ -389,6 +390,53 @@ def test_ModuleNoData():
389
390
  assert initial_data is None
390
391
 
391
392
 
393
+ # ----------------------------------------------------------------------
394
+ def test_Module_SingleParallel():
395
+ """Test parallel execution of the module when only 1 query is present."""
396
+ # Since we have only one query with parallel execution style,
397
+ # it should default to sequential processing.
398
+ module = MyModule(
399
+ "MyModule",
400
+ "The only module",
401
+ ExecutionStyle.Sequential,
402
+ [queryA],
403
+ produce_data=True,
404
+ )
405
+
406
+ status_func = Mock()
407
+
408
+ initial_data = module.GenerateInitialData({})
409
+ results = module.Evaluate(
410
+ initial_data,
411
+ {},
412
+ status_func,
413
+ max_num_threads=1,
414
+ )
415
+ assert results[0][0].result == EvaluateResult.Success
416
+ assert results[0][0].context is None
417
+ assert results[0][0].resolution is None
418
+ assert results[0][0].rationale is None
419
+ assert results[0][0].requirement is requirementA1
420
+ assert results[0][0].query is queryA
421
+ assert results[0][0].module is module
422
+
423
+
424
+ # ----------------------------------------------------------------------
425
+ def test_ProvidedDoneManager():
426
+ """Test for when a DoneManager is provided to the ParallelSequentialProcessor."""
427
+ module = MyModule(
428
+ "MyModule",
429
+ "The only module",
430
+ ExecutionStyle.Sequential,
431
+ [queryA],
432
+ produce_data=True,
433
+ )
434
+ dm_and_sink = GenerateDoneManagerAndContent()
435
+ dm = cast(DoneManager, next(dm_and_sink))
436
+ result = ParallelSequentialProcessor(module.queries, lambda query: (0, []), dm)
437
+ assert isinstance(result, list)
438
+
439
+
392
440
  # ----------------------------------------------------------------------
393
441
  class TestProcessRequriements:
394
442
  # ----------------------------------------------------------------------
@@ -7,9 +7,10 @@
7
7
  """Unit tests for the GitHub Customization Plugin"""
8
8
 
9
9
  import sys
10
- import pluggy
11
10
  from pathlib import Path
12
11
 
12
+ import pluggy
13
+
13
14
  from RepoAuditor import APP_NAME
14
15
  from RepoAuditor.Plugins.GitHubCustomizationPlugin import GetModule
15
16
 
@@ -6,18 +6,17 @@
6
6
  # -------------------------------------------------------------------------------
7
7
  """End-to-end tests for the GitHubCustomization plugin."""
8
8
 
9
- import pytest
10
9
  from pathlib import Path
11
10
 
11
+ import pytest
12
12
  from dbrownell_Common.TestHelpers.StreamTestHelpers import (
13
13
  InitializeStreamCapabilities,
14
14
  )
15
15
  from typer.testing import CliRunner
16
+ from utilities import CheckPATFileExists, GetGithubUrl, ScrubDurationGithuburlAndSpaces
16
17
 
17
18
  from RepoAuditor.EntryPoint import app
18
19
 
19
- from utilities import ScrubDurationGithuburlAndSpaces, GetGithubUrl, CheckPATFileExists
20
-
21
20
  # ----------------------------------------------------------------------
22
21
  pytest.fixture(InitializeStreamCapabilities(), scope="session", autouse=True)
23
22
 
@@ -0,0 +1,89 @@
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 GitHubSession"""
8
+
9
+ from pathlib import Path
10
+
11
+ import pytest
12
+ import requests
13
+
14
+ from RepoAuditor.Plugins.GitHubBase.Module import _GitHubSession
15
+
16
+
17
+ @pytest.fixture
18
+ def github_pat(fs):
19
+ """Fixture for GitHub PAT file, which creates a fake PAT file and returns the path."""
20
+ pat_path = Path(__file__).parent / "dummy_github_pat.txt"
21
+ fs.create_file(pat_path, contents="github_path_abcdefghijklmnop")
22
+ return pat_path
23
+
24
+
25
+ def mock_request(
26
+ self,
27
+ method,
28
+ url,
29
+ *args,
30
+ **kwargs,
31
+ ):
32
+ """Mocked request function."""
33
+ r = requests.Response()
34
+ r.status_code = 200
35
+ r.method = method
36
+ r.url = url
37
+ return r
38
+
39
+
40
+ class TestGitHubSession:
41
+ """Unit tests for the _GitHubSession class."""
42
+
43
+ @classmethod
44
+ def setup_class(cls):
45
+ """Setup values for each test."""
46
+ cls.github_url = "https://github.com/gt-sse-center/RepoAuditor"
47
+
48
+ def test_Construct(self, github_pat):
49
+ """Test constructor."""
50
+ session = _GitHubSession(github_url=self.github_url, github_pat=github_pat)
51
+
52
+ assert session.github_url == self.github_url
53
+
54
+ def test_ConstructTrailingSlash(self, github_pat):
55
+ """Test with trailing slash for URL."""
56
+ session = _GitHubSession(github_url=self.github_url + "/", github_pat=github_pat)
57
+
58
+ assert session.github_url == self.github_url
59
+
60
+ def test_InvalidRepository(self, github_pat):
61
+ """Test with invalid repository URL."""
62
+ with pytest.raises(ValueError):
63
+ _GitHubSession(
64
+ github_url="https://github.com/gt-sse-center/RepoAuditor/123", github_pat=github_pat
65
+ )
66
+
67
+ def test_EnterpriseUrl(self, github_pat):
68
+ """Test with enterprise URL."""
69
+ github_enterprise_url = "https://github.gatech.edu/gt-sse-center/RepoAuditor"
70
+ session = _GitHubSession(github_url=github_enterprise_url, github_pat=github_pat)
71
+ assert session.github_url == github_enterprise_url
72
+
73
+ def test_Request(self, github_pat, monkeypatch):
74
+ """Test the _GitHubSession.request method."""
75
+ session = _GitHubSession(github_url=self.github_url, github_pat=github_pat)
76
+
77
+ monkeypatch.setattr(requests.Session, "request", mock_request)
78
+ r = session.request("GET", "test")
79
+
80
+ assert r.url == "https://api.github.com/repos/gt-sse-center/RepoAuditor/test"
81
+
82
+ def test_RequestLeadingSlash(self, github_pat, monkeypatch):
83
+ """Test the _GitHubSession.request method."""
84
+ session = _GitHubSession(github_url=self.github_url, github_pat=github_pat)
85
+
86
+ monkeypatch.setattr(requests.Session, "request", mock_request)
87
+ r = session.request("GET", "/test")
88
+
89
+ assert r.url == "https://api.github.com/repos/gt-sse-center/RepoAuditor/test"
@@ -7,17 +7,16 @@
7
7
  """End-to-end tests for the GitHubRulesets plugin."""
8
8
 
9
9
  from pathlib import Path
10
- import pytest
11
10
 
11
+ import pytest
12
12
  from dbrownell_Common.TestHelpers.StreamTestHelpers import (
13
13
  InitializeStreamCapabilities,
14
14
  )
15
15
  from typer.testing import CliRunner
16
+ from utilities import CheckPATFileExists, GetGithubUrl, ScrubDurationGithuburlAndSpaces
16
17
 
17
18
  from RepoAuditor.EntryPoint import app
18
19
 
19
- from utilities import ScrubDurationGithuburlAndSpaces, GetGithubUrl, CheckPATFileExists
20
-
21
20
  # ----------------------------------------------------------------------
22
21
  pytest.fixture(InitializeStreamCapabilities(), scope="session", autouse=True)
23
22
 
@@ -0,0 +1,105 @@
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 the EnableRulesetRequirementImpl requirement implementation."""
8
+
9
+ from RepoAuditor.Plugins.GitHubRulesets.Impl.EnableRulesetRequirementImpl import EnableRulesetRequirementImpl
10
+ from RepoAuditor.Requirement import EvaluateResult
11
+
12
+
13
+ class TestEnableRulesetRequirementImpl:
14
+ """Unit tests for the EnableRulesetRequirementImpl class."""
15
+
16
+ def test_Constructor(self):
17
+ """Test the EnableRulesetRequirementImpl constructor."""
18
+ requirement = EnableRulesetRequirementImpl(
19
+ name="Test Name",
20
+ default_value=False,
21
+ dynamic_arg_name="true",
22
+ github_ruleset_type="Test Ruleset",
23
+ github_ruleset_value="test_ruleset",
24
+ get_configuration_value_func=lambda _: True,
25
+ resolution="Test Resolution",
26
+ rationale="Test rationale",
27
+ )
28
+
29
+ assert requirement.name == "Test Name"
30
+ assert requirement.default_value is False
31
+ assert requirement.dynamic_arg_name == "true"
32
+ assert requirement.github_ruleset_type == "Test Ruleset"
33
+
34
+ def test_Evaluate_DoesNotApply(self):
35
+ """Test the _EvaluateImpl method when dynamic_arg_name is False."""
36
+ requirement = EnableRulesetRequirementImpl(
37
+ name="Test Name",
38
+ default_value=False,
39
+ dynamic_arg_name="true",
40
+ github_ruleset_type="Test Ruleset",
41
+ github_ruleset_value="test_ruleset",
42
+ get_configuration_value_func=lambda _: True,
43
+ resolution="Test Resolution",
44
+ rationale="Test rationale",
45
+ )
46
+ query_data = {}
47
+ requirement_args = {"true": False}
48
+ result = requirement.Evaluate(query_data, requirement_args)
49
+ print(result)
50
+ assert result.result == EvaluateResult.DoesNotApply
51
+
52
+ def test_Evaluate_InvalidRule(self):
53
+ """Test the _EvaluateImpl method when dynamic_arg_name is False."""
54
+ requirement = EnableRulesetRequirementImpl(
55
+ name="Test Name",
56
+ default_value=False,
57
+ dynamic_arg_name="true",
58
+ github_ruleset_type="Test Ruleset",
59
+ github_ruleset_value="test_ruleset",
60
+ get_configuration_value_func=lambda rule: rule.get("type", "") == "valid rule",
61
+ resolution="Test Resolution",
62
+ rationale="Test rationale",
63
+ )
64
+ query_data = {
65
+ "rules": [
66
+ {
67
+ "type": "invalid_rule",
68
+ "ruleset": {
69
+ "name": "Invalid",
70
+ "id": "00",
71
+ },
72
+ },
73
+ ]
74
+ }
75
+ requirement_args = {"true": True}
76
+ result = requirement.Evaluate(query_data, requirement_args)
77
+ assert result.result == EvaluateResult.Error
78
+
79
+ def test_Evaluate_ValidRule(self):
80
+ """Test the _EvaluateImpl method when dynamic_arg_name is False."""
81
+ requirement = EnableRulesetRequirementImpl(
82
+ name="Test Name",
83
+ default_value=False,
84
+ dynamic_arg_name="true",
85
+ github_ruleset_type="Test Ruleset",
86
+ github_ruleset_value="test_ruleset",
87
+ get_configuration_value_func=lambda rule: rule.get("type", "") == "valid_rule",
88
+ resolution="Test Resolution",
89
+ rationale="Test rationale",
90
+ )
91
+ query_data = {
92
+ "rules": [
93
+ {
94
+ "type": "valid_rule",
95
+ "ruleset": {
96
+ "name": "Valid",
97
+ "id": "00",
98
+ },
99
+ }
100
+ ]
101
+ }
102
+ requirement_args = {"true": True}
103
+ result = requirement.Evaluate(query_data, requirement_args)
104
+
105
+ assert result.result == EvaluateResult.Success
@@ -10,17 +10,14 @@ import os
10
10
  from pathlib import Path
11
11
 
12
12
  import pytest
13
-
14
13
  from dbrownell_Common.TestHelpers.StreamTestHelpers import (
15
14
  InitializeStreamCapabilities,
16
15
  )
17
16
  from typer.testing import CliRunner
17
+ from utilities import CheckPATFileExists, GetGithubUrl, ScrubDurationGithuburlAndSpaces
18
18
 
19
19
  from RepoAuditor.EntryPoint import app
20
20
 
21
-
22
- from utilities import ScrubDurationGithuburlAndSpaces, GetGithubUrl, CheckPATFileExists
23
-
24
21
  # ----------------------------------------------------------------------
25
22
  pytest.fixture(InitializeStreamCapabilities(), scope="session", autouse=True)
26
23
 
@@ -9,7 +9,6 @@
9
9
  import re
10
10
  import sys
11
11
  import textwrap
12
-
13
12
  from pathlib import Path
14
13
  from typing import Match
15
14
 
@@ -1,48 +0,0 @@
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 GitHubSession"""
8
-
9
- from pathlib import Path
10
-
11
- import pytest
12
- from pyfakefs.fake_filesystem_unittest import TestCase as FakeFSTestCase
13
-
14
- from RepoAuditor.Plugins.GitHubBase.Module import _GitHubSession
15
-
16
-
17
- class TestGitHubSession(FakeFSTestCase):
18
- """Unit tests for the _GitHubSession class."""
19
-
20
- def setUp(self):
21
- self.setUpPyfakefs()
22
-
23
- def test_Construct(self):
24
- """Test constructor."""
25
- github_url = "https://github.com/gt-sse-center/RepoAuditor"
26
-
27
- github_pat = Path(__file__).parent / "dummy_github_pat.txt"
28
- self.fs.create_file(github_pat, contents="github_path_abcdefghijklmnop")
29
-
30
- session = _GitHubSession(github_url=github_url, github_pat=github_pat)
31
-
32
- assert session.github_url == github_url
33
-
34
- # Test with trailing slash for URL
35
- session = _GitHubSession(github_url=github_url + "/", github_pat=github_pat)
36
-
37
- assert session.github_url == github_url
38
-
39
- # Test with invalid repository
40
- with pytest.raises(ValueError):
41
- session = _GitHubSession(
42
- github_url="https://github.com/gt-sse-center/RepoAuditor/123", github_pat=github_pat
43
- )
44
-
45
- # Test with enterprise URL
46
- github_enterprise_url = "https://github.gatech.edu/gt-sse-center/RepoAuditor"
47
- session = _GitHubSession(github_url=github_enterprise_url, github_pat=github_pat)
48
- assert session.github_url == github_enterprise_url
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -8,12 +8,12 @@
8
8
 
9
9
  from typing import Any
10
10
 
11
- from RepoAuditor.Requirement import EvaluateResult
12
11
  from RepoAuditor.Plugins.GitHubRulesets.Requirements.RequirePullRequests import RequirePullRequests
13
- from RepoAuditor.Plugins.GitHubRulesets.Requirements.RequireStatusChecks import RequireStatusChecks
14
12
  from RepoAuditor.Plugins.GitHubRulesets.Requirements.RequireSignedCommits import (
15
13
  RequireSignedCommits,
16
14
  )
15
+ from RepoAuditor.Plugins.GitHubRulesets.Requirements.RequireStatusChecks import RequireStatusChecks
16
+ from RepoAuditor.Requirement import EvaluateResult
17
17
 
18
18
 
19
19
  def create_rule(name: str, rule_type: str, ruleset_name: str, parameters: dict[str, Any]):
File without changes