From 36bf0a7a0b2fdfcb230a2acd8b1a0a2e1cc894c8 Mon Sep 17 00:00:00 2001 From: victor Date: Mon, 3 Aug 2026 14:59:24 +0200 Subject: [PATCH] fix: Use Octokit's add_label to create missing labels Octokit's method for creating a repository label is add_label, not create_label. create_label never existed in Octokit 9 or 10, so calling it raised NoMethodError whenever the action tried to create a missing label. add_label(repo, label, color) maps to POST /repos/{owner}/{repo}/labels and is available in both Octokit 9.x and 10.x, so this fix is backwards compatible across the versions the action bundles. --- NEWS.md | 3 +++ lib/github_client.rb | 2 +- test/github_client_test.rb | 6 +++--- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/NEWS.md b/NEWS.md index c975240..fd988a0 100644 --- a/NEWS.md +++ b/NEWS.md @@ -12,4 +12,7 @@ ### Fixed +- Use Octokit's `add_label` instead of the nonexistent `create_label` when + creating missing labels, which raised `NoMethodError` with Octokit v10. + ### Security diff --git a/lib/github_client.rb b/lib/github_client.rb index 79ef91f..82d889e 100644 --- a/lib/github_client.rb +++ b/lib/github_client.rb @@ -55,7 +55,7 @@ def ensure_labels(labels) existing = list_label_names labels.each do |label| next if existing.include?(label) - @client.create_label(@repo, label, "0075ca") + @client.add_label(@repo, label, "0075ca") end end diff --git a/test/github_client_test.rb b/test/github_client_test.rb index aa156aa..eebcae7 100644 --- a/test/github_client_test.rb +++ b/test/github_client_test.rb @@ -88,19 +88,19 @@ def test_ensure_labels_is_a_no_op_when_labels_is_empty def test_ensure_labels_creates_missing_labels @octokit.expect(:labels, [label_stub("dependencies")], [REPO]) - @octokit.expect(:create_label, nil, [REPO, "javascript", "0075ca"]) + @octokit.expect(:add_label, nil, [REPO, "javascript", "0075ca"]) @client.ensure_labels(%w[dependencies javascript]) end def test_ensure_labels_skips_labels_that_already_exist @octokit.expect(:labels, [label_stub("dependencies"), label_stub("javascript")], [REPO]) - # No create_label calls expected. + # No add_label calls expected. @client.ensure_labels(%w[dependencies javascript]) end def test_ensure_labels_tolerates_labels_list_failure @octokit.expect(:labels, nil) { |_repo| raise Octokit::Error } - @octokit.expect(:create_label, nil, [REPO, "dependencies", "0075ca"]) + @octokit.expect(:add_label, nil, [REPO, "dependencies", "0075ca"]) @client.ensure_labels(%w[dependencies]) end