Prepare opencode-rails alpha8
This commit is contained in:
@@ -5,6 +5,7 @@ require "ripper"
|
||||
|
||||
class ReadmeTest < Minitest::Test
|
||||
README_PATH = File.expand_path("../README.md", __dir__)
|
||||
GEMFILE_PATH = File.expand_path("../Gemfile", __dir__)
|
||||
|
||||
def setup
|
||||
@readme = File.read(README_PATH)
|
||||
@@ -36,4 +37,17 @@ class ReadmeTest < Minitest::Test
|
||||
assert Ripper.sexp(source), "README Ruby fence #{index + 1} has invalid syntax"
|
||||
end
|
||||
end
|
||||
|
||||
def test_install_contract_tracks_candidate_versions_and_client_source
|
||||
gemfile = File.read(GEMFILE_PATH)
|
||||
client_ref = gemfile[/gem "opencode-ruby".*?ref:\s*"([0-9a-f]{40})"/m, 1]
|
||||
|
||||
refute_nil client_ref, "Gemfile must pin opencode-ruby to an exact commit"
|
||||
assert_includes @readme, %(gem "opencode-ruby", "= #{Opencode::VERSION}")
|
||||
assert_includes @readme, %(gem "opencode-rails", "= #{Opencode::RAILS_VERSION}")
|
||||
assert_includes @readme, %(ref: "#{client_ref}")
|
||||
assert_includes @readme,
|
||||
"`opencode-rails` #{Opencode::RAILS_VERSION} is a release candidate"
|
||||
assert_includes @readme, "pushing a `v*` tag does not guarantee publication"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -33,6 +33,21 @@ class ReleaseWorkflowTest < Minitest::Test
|
||||
|
||||
assert_equal "4.0", setup_ruby.dig("with", "ruby-version")
|
||||
assert_equal 1, steps.count { |step| step["uses"] == RELEASE_GEM_ACTION }
|
||||
assert steps.filter_map { |step| step["uses"] }.all? { |uses| uses.match?(/@[0-9a-f]{40}\z/) }
|
||||
refute steps.any? { |step| step.fetch("run", "").match?(/\bgem\s+push\b/) }
|
||||
end
|
||||
|
||||
def test_release_tag_must_match_the_gem_version_before_publish
|
||||
steps = push_job.fetch("steps")
|
||||
preflight_index = steps.index { |step| step["name"] == "Verify tag matches gem version" }
|
||||
publish_index = steps.index { |step| step["uses"] == RELEASE_GEM_ACTION }
|
||||
|
||||
refute_nil preflight_index
|
||||
refute_nil publish_index
|
||||
assert_operator preflight_index, :<, publish_index
|
||||
|
||||
preflight = steps.fetch(preflight_index)
|
||||
assert_equal "${{ github.ref_name }}", preflight.dig("env", "RELEASE_TAG")
|
||||
assert_includes preflight.fetch("run"), "unless Opencode::RAILS_VERSION == expected"
|
||||
end
|
||||
end
|
||||
|
||||
16
test/version_test.rb
Normal file
16
test/version_test.rb
Normal file
@@ -0,0 +1,16 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "test_helper"
|
||||
|
||||
class Opencode::VersionTest < Minitest::Test
|
||||
GEMSPEC_PATH = File.expand_path("../opencode-rails.gemspec", __dir__)
|
||||
|
||||
def test_alpha_versions_and_runtime_dependency_stay_in_lockstep
|
||||
specification = Gem::Specification.load(GEMSPEC_PATH)
|
||||
dependency = specification.runtime_dependencies.find { |item| item.name == "opencode-ruby" }
|
||||
|
||||
refute_nil dependency
|
||||
assert_equal Opencode::RAILS_VERSION, Opencode::VERSION
|
||||
assert_equal "= #{Opencode::RAILS_VERSION}", dependency.requirement.to_s
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user