diff --git a/spec/support/build_metadata.rb b/spec/support/build_metadata.rb index 8469d96a7601..6cd6922c0261 100644 --- a/spec/support/build_metadata.rb +++ b/spec/support/build_metadata.rb @@ -45,7 +45,7 @@ def git_commit_sha def release_date_for(version, dir:) changelog = File.expand_path("CHANGELOG-bundler.md", dir) - File.readlines(changelog)[2].scan(/^## #{Regexp.escape(version)} \((.*)\)/).first&.first if File.exist?(changelog) + File.readlines(changelog)[2].scan(/^## #{Regexp.escape(version)} \/ (.*)$/).first&.first if File.exist?(changelog) end extend self diff --git a/test/test_build_metadata_generator.rb b/test/test_build_metadata_generator.rb new file mode 100644 index 000000000000..0b06a569e27a --- /dev/null +++ b/test/test_build_metadata_generator.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require "tmpdir" +require "bundler" +require_relative "../spec/support/build_metadata" +require_relative "rubygems/helper" + +class BuildMetadataGeneratorTest < Test::Unit::TestCase + def test_release_date_for_extracts_the_date_from_the_current_changelog_header_format + Dir.mktmpdir do |dir| + write_changelog(dir, "## 9.9.9 / 2026-08-05") + + assert_equal "2026-08-05", Spec::BuildMetadata.send(:release_date_for, "9.9.9", dir: dir) + end + end + + def test_release_date_for_returns_nil_when_the_changelog_has_no_entry_for_the_version + Dir.mktmpdir do |dir| + write_changelog(dir, "## 1.0.0 / 2026-01-01") + + assert_nil Spec::BuildMetadata.send(:release_date_for, "9.9.9", dir: dir) + end + end + + private + + def write_changelog(dir, header) + File.write(File.join(dir, "CHANGELOG-bundler.md"), <<~CHANGELOG) + # Changelog + + #{header} + + ### Enhancements: + CHANGELOG + end +end