Skip to content

Flakey Tests: TestBranchMatchesCriteria #34

@GrantBirki

Description

@GrantBirki
Member

The following tests inside of TestBranchMatchesCriteria are flakey. Most of the time they pass, but sometimes they will just randomly fail. The test suites related to both PR criteria, and branch criteria should be evaluated to ensure they are reliable.

Flakey test logs:

$ script/test
	github.com/github/gh-combine/cmd/gh-combine		coverage: 0.0% of statements
=== RUN   TestCreatePullRequest
--- PASS: TestCreatePullRequest (0.00s)
=== RUN   TestValidateLabels
=== PAUSE TestValidateLabels
=== RUN   TestLabelsMatch
=== PAUSE TestLabelsMatch
=== RUN   TestBranchMatchesCriteria
=== RUN   TestBranchMatchesCriteria/Branch_matches_all_criteria
=== PAUSE TestBranchMatchesCriteria/Branch_matches_all_criteria
=== RUN   TestBranchMatchesCriteria/Branch_is_the_combine_branch
=== PAUSE TestBranchMatchesCriteria/Branch_is_the_combine_branch
=== RUN   TestBranchMatchesCriteria/Branch_ends_with_the_combine_branch
=== PAUSE TestBranchMatchesCriteria/Branch_ends_with_the_combine_branch
=== RUN   TestBranchMatchesCriteria/No_filters_specified
=== PAUSE TestBranchMatchesCriteria/No_filters_specified
=== RUN   TestBranchMatchesCriteria/No_filters_specified_and_partial_match_on_combine_branch_name
=== PAUSE TestBranchMatchesCriteria/No_filters_specified_and_partial_match_on_combine_branch_name
=== RUN   TestBranchMatchesCriteria/Prefix_does_not_match
=== PAUSE TestBranchMatchesCriteria/Prefix_does_not_match
=== RUN   TestBranchMatchesCriteria/Suffix_does_not_match
=== PAUSE TestBranchMatchesCriteria/Suffix_does_not_match
=== RUN   TestBranchMatchesCriteria/Regex_does_not_match
=== PAUSE TestBranchMatchesCriteria/Regex_does_not_match
=== RUN   TestBranchMatchesCriteria/Invalid_regex_pattern
=== PAUSE TestBranchMatchesCriteria/Invalid_regex_pattern
=== RUN   TestBranchMatchesCriteria/Branch_matches_prefix_only
=== PAUSE TestBranchMatchesCriteria/Branch_matches_prefix_only
=== RUN   TestBranchMatchesCriteria/Branch_matches_suffix_only
=== PAUSE TestBranchMatchesCriteria/Branch_matches_suffix_only
=== RUN   TestBranchMatchesCriteria/Branch_matches_regex_only
=== PAUSE TestBranchMatchesCriteria/Branch_matches_regex_only
=== CONT  TestBranchMatchesCriteria/Branch_matches_regex_only
=== CONT  TestBranchMatchesCriteria/Branch_matches_all_criteria
=== CONT  TestBranchMatchesCriteria/Branch_matches_suffix_only
=== CONT  TestBranchMatchesCriteria/Branch_matches_prefix_only
=== CONT  TestBranchMatchesCriteria/No_filters_specified_and_partial_match_on_combine_branch_name
=== CONT  TestBranchMatchesCriteria/Regex_does_not_match
=== CONT  TestBranchMatchesCriteria/Prefix_does_not_match
=== NAME  TestBranchMatchesCriteria/No_filters_specified_and_partial_match_on_combine_branch_name
    match_criteria_test.go:297: branchMatchesCriteria("bug/combined-prs-fix") = false; want true
=== CONT  TestBranchMatchesCriteria/Invalid_regex_pattern
=== CONT  TestBranchMatchesCriteria/No_filters_specified
=== CONT  TestBranchMatchesCriteria/Branch_ends_with_the_combine_branch
=== CONT  TestBranchMatchesCriteria/Suffix_does_not_match
=== CONT  TestBranchMatchesCriteria/Branch_is_the_combine_branch
time=2025-05-01T23:[4](https://github.com/github/gh-combine/actions/runs/14785595226/job/41513337655#step:4:5)3:33.364Z level=WARN msg="Invalid regex pattern" pattern=^(feature/.*$ error="error parsing regexp: missing closing ): `^(feature/.*$`"
--- FAIL: TestBranchMatchesCriteria (0.00s)
    --- PASS: TestBranchMatchesCriteria/Branch_matches_suffix_only (0.00s)
    --- PASS: TestBranchMatchesCriteria/Branch_matches_prefix_only (0.00s)
    --- PASS: TestBranchMatchesCriteria/Branch_matches_regex_only (0.00s)
    --- PASS: TestBranchMatchesCriteria/Branch_matches_all_criteria (0.00s)
    --- PASS: TestBranchMatchesCriteria/Regex_does_not_match (0.00s)
    --- FAIL: TestBranchMatchesCriteria/No_filters_specified_and_partial_match_on_combine_branch_name (0.00s)
    --- PASS: TestBranchMatchesCriteria/Prefix_does_not_match (0.00s)
    --- PASS: TestBranchMatchesCriteria/No_filters_specified (0.00s)
    --- PASS: TestBranchMatchesCriteria/Branch_ends_with_the_combine_branch (0.00s)
    --- PASS: TestBranchMatchesCriteria/Suffix_does_not_match (0.00s)
    --- PASS: TestBranchMatchesCriteria/Branch_is_the_combine_branch (0.00s)
    --- PASS: TestBranchMatchesCriteria/Invalid_regex_pattern (0.00s)
=== RUN   TestPrMatchesCriteriaWithMocks
=== PAUSE TestPrMatchesCriteriaWithMocks
=== RUN   TestPrMatchesCriteria
=== RUN   TestPrMatchesCriteria/All_criteria_match
=== RUN   TestPrMatchesCriteria/Branch_is_combine_branch
=== RUN   TestPrMatchesCriteria/Branch_doesn't_match_prefix
=== RUN   TestPrMatchesCriteria/Label_matches_ignore_list
=== RUN   TestPrMatchesCriteria/Label_doesn't_match_select_list
=== RUN   TestPrMatchesCriteria/Case_insensitive_labels_match
=== RUN   TestPrMatchesCriteria/Case_sensitive_labels_don't_match
--- PASS: TestPrMatchesCriteria (0.00s)
    --- PASS: TestPrMatchesCriteria/All_criteria_match (0.00s)
    --- PASS: TestPrMatchesCriteria/Branch_is_combine_branch (0.00s)
    --- PASS: TestPrMatchesCriteria/Branch_doesn't_match_prefix (0.00s)
    --- PASS: TestPrMatchesCriteria/Label_matches_ignore_list (0.00s)
    --- PASS: TestPrMatchesCriteria/Label_doesn't_match_select_list (0.00s)
    --- PASS: TestPrMatchesCriteria/Case_insensitive_labels_match (0.00s)
    --- PASS: TestPrMatchesCriteria/Case_sensitive_labels_don't_match (0.00s)
=== RUN   TestIsCIPassing
=== RUN   TestIsCIPassing/CI_is_passing
=== RUN   TestIsCIPassing/CI_is_failing
=== RUN   TestIsCIPassing/No_status_checks
=== RUN   TestIsCIPassing/No_commits
--- PASS: TestIsCIPassing (0.00s)
    --- PASS: TestIsCIPassing/CI_is_passing (0.00s)
    --- PASS: TestIsCIPassing/CI_is_failing (0.00s)
    --- PASS: TestIsCIPassing/No_status_checks (0.00s)
    --- PASS: TestIsCIPassing/No_commits (0.00s)
=== RUN   TestIsPRApproved
=== RUN   TestIsPRApproved/PR_is_approved
=== RUN   TestIsPRApproved/PR_is_not_approved
=== RUN   TestIsPRApproved/No_review_required
--- PASS: TestIsPRApproved (0.00s)
    --- PASS: TestIsPRApproved/PR_is_approved (0.00s)
    --- PASS: TestIsPRApproved/PR_is_not_approved (0.00s)
    --- PASS: TestIsPRApproved/No_review_required (0.00s)
=== RUN   TestGetPRStatusInfo
=== RUN   TestGetPRStatusInfo/Context_cancellation
    match_criteria_test.go:1014: Skipping test that requires a real GraphQL client
--- PASS: TestGetPRStatusInfo (0.00s)
    --- SKIP: TestGetPRStatusInfo/Context_cancellation (0.00s)
=== RUN   TestPrMeetsRequirements
=== RUN   TestPrMeetsRequirements/No_requirements_specified
    match_criteria_test.go:1037: Skipping test that requires a real GraphQL client
--- PASS: TestPrMeetsRequirements (0.00s)
    --- SKIP: TestPrMeetsRequirements/No_requirements_specified (0.00s)
=== RUN   TestDisplayTableStats
╭────────────┬────────────────┬──────────────────────┬──────────────╮
│ Repository │   PRs Combined │ Skipped              │ Status       │
├────────────┼────────────────┼──────────────────────┼──────────────┤
│ repo1      │              3 │ 1 (MC), 0 (DNM)      │ OK           │
│ repo2      │              2 │ 0 (MC), 2 (DNM)      │ OK           │
╰────────────┴────────────────┴──────────────────────┴──────────────╯

╭───────────────┬───────────────┬───────────────────────┬───────────────╮
│ Repos         │ Combined PRs  │ Skipped               │ Total PRs     │
├───────────────┼───────────────┼───────────────────────┼───────────────┤
│ 2             │ [5](https://github.com/github/gh-combine/actions/runs/14785595226/job/41513337655#step:4:6)             │ 1 (MC), 2 (DNM)       │ 2             │
╰───────────────┴───────────────┴───────────────────────┴───────────────╯

Links to Combined PRs:
- http://example.com/pr1
- http://example.com/pr2

--- PASS: TestDisplayTableStats (0.00s)
=== RUN   TestDisplayJSONStats
{
  "combinedPRLinks": [
    "http://example.com/pr1",
    "http://example.com/pr2"
  ],
  "executionTime": "2m0.0000000[6](https://github.com/github/gh-combine/actions/runs/14785595226/job/41513337655#step:4:7)s",
  "perRepoStats": {
    "repo1": {
      "RepoName": "repo1",
      "CombinedCount": 3,
      "SkippedMergeConf": 1,
      "SkippedCriteria": 0,
      "CombinedPRLink": "http://example.com/pr1",
      "NotEnoughPRs": false,
      "TotalPRs": 5
    },
    "repo2": {
      "RepoName": "repo2",
      "CombinedCount": 2,
      "SkippedMergeConf": 0,
      "SkippedCriteria": 2,
      "CombinedPRLink": "http://example.com/pr2",
      "NotEnoughPRs": false,
      "TotalPRs": 4
    }
  },
  "prsCombined": 5,
  "prsSkippedCriteria": 2,
  "prsSkippedMergeConflict": 1,
  "reposProcessed": 2
}
--- PASS: TestDisplayJSONStats (0.00s)
=== RUN   TestDisplayPlainStats
Repositories Processed: 2
PRs Combined: 5
PRs Skipped (Merge Conflicts): 1
PRs Skipped (Did Not Match): 2
Execution Time: 2m0s

Links to Combined PRs:
- http://example.com/pr1
- http://example.com/pr2

Per-Repository Details:
  repo1
    Combined: 3
    Skipped (Merge Conflicts): 1
    Skipped (Did Not Match): 0
    Combined PR: http://example.com/pr1
  repo2
    Combined: 2
    Skipped (Merge Conflicts): 0
    Skipped (Did Not Match): 2
    Combined PR: http://example.com/pr2
--- PASS: TestDisplayPlainStats (0.00s)
=== RUN   TestParseRepositoriesArgs
=== PAUSE TestParseRepositoriesArgs
=== RUN   TestParseRepositoriesFile
=== PAUSE TestParseRepositoriesFile
=== CONT  TestValidateLabels
=== RUN   TestValidateLabels/#00
=== PAUSE TestValidateLabels/#00
=== RUN   TestValidateLabels/#01
=== PAUSE TestValidateLabels/#01
=== RUN   TestValidateLabels/#02
=== PAUSE TestValidateLabels/#02
=== RUN   TestValidateLabels/#03
=== PAUSE TestValidateLabels/#03
=== CONT  TestValidateLabels/#00
=== CONT  TestParseRepositoriesFile
=== RUN   TestParseRepositoriesFile/#00
=== PAUSE TestParseRepositoriesFile/#00
=== RUN   TestParseRepositoriesFile/#01
=== PAUSE TestParseRepositoriesFile/#01
=== RUN   TestParseRepositoriesFile/#02
=== PAUSE TestParseRepositoriesFile/#02
=== CONT  TestParseRepositoriesFile/#00
=== CONT  TestValidateLabels/#03
=== CONT  TestParseRepositoriesArgs
=== RUN   TestParseRepositoriesArgs/#00
=== PAUSE TestParseRepositoriesArgs/#00
=== RUN   TestParseRepositoriesArgs/#01
=== PAUSE TestParseRepositoriesArgs/#01
=== RUN   TestParseRepositoriesArgs/#02
=== PAUSE TestParseRepositoriesArgs/#02
=== RUN   TestParseRepositoriesArgs/#03
=== PAUSE TestParseRepositoriesArgs/#03
=== CONT  TestParseRepositoriesArgs/#00
=== CONT  TestPrMatchesCriteriaWithMocks
=== RUN   TestPrMatchesCriteriaWithMocks/Branch_and_labels_match
=== PAUSE TestPrMatchesCriteriaWithMocks/Branch_and_labels_match
=== RUN   TestPrMatchesCriteriaWithMocks/Branch_does_not_match
=== PAUSE TestPrMatchesCriteriaWithMocks/Branch_does_not_match
=== RUN   TestPrMatchesCriteriaWithMocks/Labels_do_not_match
=== PAUSE TestPrMatchesCriteriaWithMocks/Labels_do_not_match
=== RUN   TestPrMatchesCriteriaWithMocks/Neither_branch_nor_labels_match
=== PAUSE TestPrMatchesCriteriaWithMocks/Neither_branch_nor_labels_match
=== RUN   TestPrMatchesCriteriaWithMocks/No_branch_or_label_filters_specified
=== PAUSE TestPrMatchesCriteriaWithMocks/No_branch_or_label_filters_specified
=== CONT  TestPrMatchesCriteriaWithMocks/Branch_and_labels_match
=== CONT  TestLabelsMatch
=== RUN   TestLabelsMatch/#00
=== PAUSE TestLabelsMatch/#00
=== CONT  TestParseRepositoriesFile/#01
=== RUN   TestLabelsMatch/--ignore-labels_match
=== PAUSE TestLabelsMatch/--ignore-labels_match
=== RUN   TestLabelsMatch/--ignore-labels_match_(with_one_out_of_two)
=== PAUSE TestLabelsMatch/--ignore-labels_match_(with_one_out_of_two)
=== RUN   TestLabelsMatch/no_labels_match_(select_or_ignore)
=== PAUSE TestLabelsMatch/no_labels_match_(select_or_ignore)
=== CONT  TestParseRepositoriesFile/#02
=== CONT  TestValidateLabels/#02
=== CONT  TestParseRepositoriesArgs/#03
=== CONT  TestParseRepositoriesArgs/#02
=== CONT  TestParseRepositoriesArgs/#01
--- PASS: TestParseRepositoriesArgs (0.00s)
    --- PASS: TestParseRepositoriesArgs/#00 (0.00s)
    --- PASS: TestParseRepositoriesArgs/#03 (0.00s)
    --- PASS: TestParseRepositoriesArgs/#02 (0.00s)
    --- PASS: TestParseRepositoriesArgs/#01 (0.00s)
=== CONT  TestPrMatchesCriteriaWithMocks/No_branch_or_label_filters_specified
=== CONT  TestPrMatchesCriteriaWithMocks/Neither_branch_nor_labels_match
=== CONT  TestPrMatchesCriteriaWithMocks/Labels_do_not_match
=== CONT  TestPrMatchesCriteriaWithMocks/Branch_does_not_match
--- PASS: TestPrMatchesCriteriaWithMocks (0.00s)
    --- PASS: TestPrMatchesCriteriaWithMocks/Branch_and_labels_match (0.00s)
    --- PASS: TestPrMatchesCriteriaWithMocks/No_branch_or_label_filters_specified (0.00s)
    --- PASS: TestPrMatchesCriteriaWithMocks/Neither_branch_nor_labels_match (0.00s)
    --- PASS: TestPrMatchesCriteriaWithMocks/Labels_do_not_match (0.00s)
    --- PASS: TestPrMatchesCriteriaWithMocks/Branch_does_not_match (0.00s)
=== CONT  TestValidateLabels/#01
--- PASS: TestValidateLabels (0.00s)
    --- PASS: TestValidateLabels/#00 (0.00s)
    --- PASS: TestValidateLabels/#03 (0.00s)
    --- PASS: TestValidateLabels/#02 (0.00s)
    --- PASS: TestValidateLabels/#01 (0.00s)
=== RUN   TestLabelsMatch/--select-labels_match
=== PAUSE TestLabelsMatch/--select-labels_match
=== RUN   TestLabelsMatch/--select-labels_match_(with_one_out_of_two)_and_ignore_labels_don't_match
=== PAUSE TestLabelsMatch/--select-labels_match_(with_one_out_of_two)_and_ignore_labels_don't_match
=== RUN   TestLabelsMatch/the_pull_request_has_no_labels
=== PAUSE TestLabelsMatch/the_pull_request_has_no_labels
=== RUN   TestLabelsMatch/the_pull_request_has_no_labels_and_ignore_labels_don't_match_so_it_matches_-_but_select_labels_is_empty_so_it_means_all_labels_or_even_no_labels_match
=== PAUSE TestLabelsMatch/the_pull_request_has_no_labels_and_ignore_labels_don't_match_so_it_matches_-_but_select_labels_is_empty_so_it_means_all_labels_or_even_no_labels_match
=== RUN   TestLabelsMatch/the_pull_request_has_no_labels_but_we_want_to_match_the_a_label
=== PAUSE TestLabelsMatch/the_pull_request_has_no_labels_but_we_want_to_match_the_a_label
=== RUN   TestLabelsMatch/no_label_match_criteria,_so_it_matches
=== PAUSE TestLabelsMatch/no_label_match_criteria,_so_it_matches
=== RUN   TestLabelsMatch/with_one_matching_label_and_no_matching_ignore_labels_so_it_matches
=== PAUSE TestLabelsMatch/with_one_matching_label_and_no_matching_ignore_labels_so_it_matches
=== RUN   TestLabelsMatch/the_pr_labels_match_the_select_and_ignore_labels_so_it_doesn't_match
=== PAUSE TestLabelsMatch/the_pr_labels_match_the_select_and_ignore_labels_so_it_doesn't_match
=== RUN   TestLabelsMatch/the_pr_has_one_label_but_no_defined_ignore_or_select_labels_so_it_matches
=== PAUSE TestLabelsMatch/the_pr_has_one_label_but_no_defined_ignore_or_select_labels_so_it_matches
=== RUN   TestLabelsMatch/the_pr_has_one_label_and_it_is_the_select_label_so_it_matches
=== PAUSE TestLabelsMatch/the_pr_has_one_label_and_it_is_the_select_label_so_it_matches
=== RUN   TestLabelsMatch/the_pr_has_labels_and_matching_select_labels_but_it_matches_an_ignore_label_so_it_doesn't_match
=== PAUSE TestLabelsMatch/the_pr_has_labels_and_matching_select_labels_but_it_matches_an_ignore_label_so_it_doesn't_match
=== RUN   TestLabelsMatch/the_pr_has_uppercase_labels_and_we_are_using_case_insensitive_labels_so_it_matches
=== PAUSE TestLabelsMatch/the_pr_has_uppercase_labels_and_we_are_using_case_insensitive_labels_so_it_matches
=== RUN   TestLabelsMatch/the_pr_has_uppercase_labels_and_we_are_using_case_sensitive_labels_so_it_doesn't_match
=== PAUSE TestLabelsMatch/the_pr_has_uppercase_labels_and_we_are_using_case_sensitive_labels_so_it_doesn't_match
=== CONT  TestLabelsMatch/#00
=== CONT  TestLabelsMatch/the_pr_has_uppercase_labels_and_we_are_using_case_sensitive_labels_so_it_doesn't_match
=== CONT  TestLabelsMatch/the_pr_has_uppercase_labels_and_we_are_using_case_insensitive_labels_so_it_matches
--- PASS: TestParseRepositoriesFile (0.00s)
    --- PASS: TestParseRepositoriesFile/#00 (0.00s)
    --- PASS: TestParseRepositoriesFile/#01 (0.00s)
    --- PASS: TestParseRepositoriesFile/#02 (0.00s)
=== CONT  TestLabelsMatch/the_pr_has_labels_and_matching_select_labels_but_it_matches_an_ignore_label_so_it_doesn't_match
=== CONT  TestLabelsMatch/with_one_matching_label_and_no_matching_ignore_labels_so_it_matches
=== CONT  TestLabelsMatch/no_label_match_criteria,_so_it_matches
=== CONT  TestLabelsMatch/the_pull_request_has_no_labels_but_we_want_to_match_the_a_label
=== CONT  TestLabelsMatch/the_pull_request_has_no_labels_and_ignore_labels_don't_match_so_it_matches_-_but_select_labels_is_empty_so_it_means_all_labels_or_even_no_labels_match
=== CONT  TestLabelsMatch/the_pull_request_has_no_labels
=== CONT  TestLabelsMatch/--select-labels_match_(with_one_out_of_two)_and_ignore_labels_don't_match
=== CONT  TestLabelsMatch/--select-labels_match
=== CONT  TestLabelsMatch/no_labels_match_(select_or_ignore)
=== CONT  TestLabelsMatch/--ignore-labels_match_(with_one_out_of_two)
=== CONT  TestLabelsMatch/--ignore-labels_match
=== CONT  TestLabelsMatch/the_pr_has_one_label_and_it_is_the_select_label_so_it_matches
=== CONT  TestLabelsMatch/the_pr_has_one_label_but_no_defined_ignore_or_select_labels_so_it_matches
=== CONT  TestLabelsMatch/the_pr_labels_match_the_select_and_ignore_labels_so_it_doesn't_match
--- PASS: TestLabelsMatch (0.00s)
    --- PASS: TestLabelsMatch/#00 (0.00s)
    --- PASS: TestLabelsMatch/the_pr_has_uppercase_labels_and_we_are_using_case_sensitive_labels_so_it_doesn't_match (0.00s)
    --- PASS: TestLabelsMatch/the_pr_has_uppercase_labels_and_we_are_using_case_insensitive_labels_so_it_matches (0.00s)
    --- PASS: TestLabelsMatch/the_pr_has_labels_and_matching_select_labels_but_it_matches_an_ignore_label_so_it_doesn't_match (0.00s)
    --- PASS: TestLabelsMatch/with_one_matching_label_and_no_matching_ignore_labels_so_it_matches (0.00s)
    --- PASS: TestLabelsMatch/no_label_match_criteria,_so_it_matches (0.00s)
    --- PASS: TestLabelsMatch/the_pull_request_has_no_labels_but_we_want_to_match_the_a_label (0.00s)
    --- PASS: TestLabelsMatch/the_pull_request_has_no_labels_and_ignore_labels_don't_match_so_it_matches_-_but_select_labels_is_empty_so_it_means_all_labels_or_even_no_labels_match (0.00s)
    --- PASS: TestLabelsMatch/the_pull_request_has_no_labels (0.00s)
    --- PASS: TestLabelsMatch/--select-labels_match_(with_one_out_of_two)_and_ignore_labels_don't_match (0.00s)
    --- PASS: TestLabelsMatch/--select-labels_match (0.00s)
    --- PASS: TestLabelsMatch/no_labels_match_(select_or_ignore) (0.00s)
    --- PASS: TestLabelsMatch/--ignore-labels_match_(with_one_out_of_two) (0.00s)
    --- PASS: TestLabelsMatch/--ignore-labels_match (0.00s)
    --- PASS: TestLabelsMatch/the_pr_has_one_label_and_it_is_the_select_label_so_it_matches (0.00s)
    --- PASS: TestLabelsMatch/the_pr_has_one_label_but_no_defined_ignore_or_select_labels_so_it_matches (0.00s)
    --- PASS: TestLabelsMatch/the_pr_labels_match_the_select_and_ignore_labels_so_it_doesn't_match (0.00s)
FAIL
coverage: 36.2% of statements
FAIL	github.com/github/gh-combine/internal/cmd	0.00[7](https://github.com/github/gh-combine/actions/runs/14785595226/job/41513337655#step:4:8)s
=== RUN   TestNormalizeArray
=== RUN   TestNormalizeArray/Empty_array
=== RUN   TestNormalizeArray/Already_lowercase
=== RUN   TestNormalizeArray/Mixed_case
=== RUN   TestNormalizeArray/Special_characters
=== RUN   TestNormalizeArray/Single_item
--- PASS: TestNormalizeArray (0.00s)
    --- PASS: TestNormalizeArray/Empty_array (0.00s)
    --- PASS: TestNormalizeArray/Already_lowercase (0.00s)
    --- PASS: TestNormalizeArray/Mixed_case (0.00s)
    --- PASS: TestNormalizeArray/Special_characters (0.00s)
    --- PASS: TestNormalizeArray/Single_item (0.00s)
PASS
coverage: 100.0% of statements
ok  	github.com/github/gh-combine/internal/common	0.004s	coverage: 100.0% of statements
=== RUN   TestParseRepo
=== PAUSE TestParseRepo
=== CONT  TestParseRepo
=== RUN   TestParseRepo/#00
=== PAUSE TestParseRepo/#00
=== RUN   TestParseRepo/#01
=== PAUSE TestParseRepo/#01
=== RUN   TestParseRepo/#02
=== PAUSE TestParseRepo/#02
=== RUN   TestParseRepo/#03
=== PAUSE TestParseRepo/#03
=== RUN   TestParseRepo/#04
=== PAUSE TestParseRepo/#04
=== CONT  TestParseRepo/#00
=== CONT  TestParseRepo/#04
=== CONT  TestParseRepo/#03
=== CONT  TestParseRepo/#02
=== CONT  TestParseRepo/#01
--- PASS: TestParseRepo (0.00s)
    --- PASS: TestParseRepo/#00 (0.00s)
    --- PASS: TestParseRepo/#04 (0.00s)
    --- PASS: TestParseRepo/#03 (0.00s)
    --- PASS: TestParseRepo/#02 (0.00s)
    --- PASS: TestParseRepo/#01 (0.00s)
PASS
coverage: 66.7% of statements
ok  	github.com/github/gh-combine/internal/github	0.003s	coverage: 66.7% of statements
=== RUN   TestString
=== RUN   TestString/with_preset_values
=== RUN   TestString/with_mock_build_info
=== RUN   TestString/with_empty_build_info_settings
--- PASS: TestString (0.00s)
    --- PASS: TestString/with_preset_values (0.00s)
    --- PASS: TestString/with_mock_build_info (0.00s)
    --- PASS: TestString/with_empty_build_info_settings (0.00s)
PASS
coverage: [8](https://github.com/github/gh-combine/actions/runs/14785595226/job/41513337655#step:4:9)8.9% of statements
ok  	github.com/github/gh-combine/internal/version	0.003s	coverage: 88.[9](https://github.com/github/gh-combine/actions/runs/14785595226/job/41513337655#step:4:10)% of statements
FAIL
Error: Process completed with exit code 1.

Activity

added theissue type on May 9, 2025
GrantBirki

GrantBirki commented on May 9, 2025

@GrantBirki
MemberAuthor

related: #22

self-assigned this
on May 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

    Development

    Participants

    @GrantBirki

    Issue actions

      Flakey Tests: `TestBranchMatchesCriteria` · Issue #34 · github/gh-combine