Run the complete validation.
(self)
| 966 | return report |
| 967 | |
| 968 | def run(self) -> bool: |
| 969 | """Run the complete validation.""" |
| 970 | print("\nStarting Solr changelog validation...\n") |
| 971 | |
| 972 | try: |
| 973 | # Step 1: Check git status |
| 974 | if not self._run_validation_step(self.validate_git_status): |
| 975 | return False |
| 976 | |
| 977 | # Step 2: Check if branches are up to date with remote (before discovery) |
| 978 | if not self._run_validation_step(self.validate_branches_up_to_date): |
| 979 | return False |
| 980 | |
| 981 | # Step 3: Discover branches (uses remote or local branch list) |
| 982 | if not self._run_validation_step(self.discover_branches): |
| 983 | return False |
| 984 | |
| 985 | # Step 3.5: Validate all discovered branches are in sync with remote |
| 986 | if not self._run_validation_step(self.validate_branches_in_sync): |
| 987 | return False |
| 988 | |
| 989 | # Step 4: Load branch data |
| 990 | if not self._run_validation_step(self.load_branch_data): |
| 991 | return False |
| 992 | |
| 993 | # Step 5: Validate versioned folders |
| 994 | self.validate_versioned_folders_identical() |
| 995 | |
| 996 | # Step 6: Validate no released files in unreleased |
| 997 | self.validate_no_released_in_unreleased() |
| 998 | |
| 999 | # Step 7: Detect duplicate issues (warnings, not errors) - only if enabled |
| 1000 | if self.check_duplicates: |
| 1001 | self.detect_duplicate_issues() |
| 1002 | |
| 1003 | # Step 8: Analyze feature distribution |
| 1004 | analysis = self.analyze_feature_distribution() |
| 1005 | |
| 1006 | # Step 9: Create temporary branch and generate changelog |
| 1007 | temp_branch = self.create_temp_branch_with_changelog(analysis) |
| 1008 | changelog_preview = None |
| 1009 | |
| 1010 | if temp_branch: |
| 1011 | changelog_preview = self.generate_changelog_preview(temp_branch) |
| 1012 | |
| 1013 | # Step 10: Generate and print report |
| 1014 | self.print_report(analysis, changelog_preview) |
| 1015 | |
| 1016 | # Return success if no errors |
| 1017 | success = len(self.errors) == 0 |
| 1018 | |
| 1019 | return success |
| 1020 | |
| 1021 | finally: |
| 1022 | # Always cleanup temp branch |
| 1023 | self.cleanup_temp_branch() |
| 1024 | |
| 1025 | def _generate_json_report(self, analysis: Optional[Dict] = None) -> str: |
no test coverage detected