gitlab-org--gitlab-foss/spec/factories/go_module_versions.rb

39 lines
1.1 KiB
Ruby

# frozen_string_literal: true
FactoryBot.define do
factory :go_module_version, class: 'Packages::Go::ModuleVersion' do
skip_create
initialize_with do
s = Packages::SemVer.parse(semver, prefixed: true)
raise ArgumentError, "invalid sematic version: #{semver.inspect}" if !s && semver
new(mod, type, commit, name: name, semver: s, ref: ref)
end
mod { association(:go_module) }
type { :commit }
commit { mod.project.repository.head_commit }
name { nil }
semver { nil }
ref { nil }
trait :tagged do
ref { mod.project.repository.find_tag(name) }
commit { ref.dereferenced_target }
name do
# This provides a sane default value, but in reality the caller should
# specify `name:`
# Find 'latest' semver tag (does not actually use semver precedence rules)
mod.project.repository.tags
.filter { |t| Packages::SemVer.match?(t.name, prefixed: true) }
.map { |t| Packages::SemVer.parse(t.name, prefixed: true) }
.max_by(&:to_s)
.to_s
end
type { :ref }
semver { name }
end
end
end