diff --git a/spec/factories/go_module_commits.rb b/spec/factories/go_module_commits.rb index e42ef6696d16b094490de833638d4880a22401df..514a55593445e6cfef9eebbdd7d71fa8a0d555e0 100644 --- a/spec/factories/go_module_commits.rb +++ b/spec/factories/go_module_commits.rb @@ -7,7 +7,12 @@ transient do files { { 'foo.txt' => 'content' } } message { 'Message' } + # rubocop: disable FactoryBot/InlineAssociation + # We need a persisted project so we can create commits and tags + # in `commit` otherwise linting this factory with `build` strategy + # will fail. project { create(:project, :repository) } + # rubocop: enable FactoryBot/InlineAssociation service do Files::MultiService.new( @@ -44,14 +49,13 @@ trait :files do transient do - files { raise ArgumentError.new("files is required") } message { 'Add files' } end end trait :package do transient do - path { raise ArgumentError.new("path is required") } + path { 'pkg' } message { 'Add package' } files { { "#{path}/b.go" => "package b\nfunc Bye() { println(\"Goodbye world!\") }\n" } } end @@ -64,7 +68,7 @@ host_prefix { "#{::Gitlab.config.gitlab.host}/#{project.path_with_namespace}" } url { name ? "#{host_prefix}/#{name}" : host_prefix } - path { name.to_s + '/' } + path { "#{name}/" } files do { diff --git a/spec/factories/go_module_versions.rb b/spec/factories/go_module_versions.rb index b0a96197350a92eb8c039688a77e5550af628fbe..145e6c959216f0e895ef77009339564cc1c74b0a 100644 --- a/spec/factories/go_module_versions.rb +++ b/spec/factories/go_module_versions.rb @@ -8,12 +8,12 @@ p = attributes[:params] s = Packages::SemVer.parse(p.semver, prefixed: true) - raise ArgumentError.new("invalid sematic version: '#{p.semver}''") if !s && p.semver + raise ArgumentError, "invalid sematic version: '#{p.semver}'" if !s && p.semver new(p.mod, p.type, p.commit, name: p.name, semver: s, ref: p.ref) end - mod { create :go_module } + mod { association(:go_module) } type { :commit } commit { mod.project.repository.head_commit } name { nil } @@ -33,45 +33,11 @@ mod.project.repository.tags .filter { |t| Packages::SemVer.match?(t.name, prefixed: true) } .map { |t| Packages::SemVer.parse(t.name, prefixed: true) } - .max { |a, b| "#{a}" <=> "#{b}" } + .max_by(&:to_s) .to_s end params { OpenStruct.new(mod: mod, type: :ref, commit: commit, semver: name, ref: ref) } end - - trait :pseudo do - transient do - prefix do - # This provides a sane default value, but in reality the caller should - # specify `prefix:` - - # This does not take into account that `commit` may be before the - # latest tag. - - # Find 'latest' semver tag (does not actually use semver precedence rules) - v = mod.project.repository.tags - .filter { |t| Packages::SemVer.match?(t.name, prefixed: true) } - .map { |t| Packages::SemVer.parse(t.name, prefixed: true) } - .max { |a, b| "#{a}" <=> "#{b}" } - - # Default if no semver tags exist - next 'v0.0.0' unless v - - # Valid pseudo-versions are: - # vX.0.0-yyyymmddhhmmss-sha1337beef0, when no earlier tagged commit exists for X - # vX.Y.Z-pre.0.yyyymmddhhmmss-sha1337beef0, when most recent prior tag is vX.Y.Z-pre - # vX.Y.(Z+1)-0.yyyymmddhhmmss-sha1337beef0, when most recent prior tag is vX.Y.Z - - v = v.with(patch: v.patch + 1) unless v.prerelease - "#{v}.0" - end - end - - type { :pseudo } - name { "#{prefix}#{commit.committed_date.strftime('%Y%m%d%H%M%S')}-#{commit.sha[0..11]}" } - - params { OpenStruct.new(mod: mod, type: :pseudo, commit: commit, name: name, semver: name) } - end end end diff --git a/spec/factories/go_modules.rb b/spec/factories/go_modules.rb index fdbacf48d3b971acebec971600587a1f2a34cf67..ca7184a9194686ffc50c176186e294be94f99303 100644 --- a/spec/factories/go_modules.rb +++ b/spec/factories/go_modules.rb @@ -5,7 +5,7 @@ initialize_with { new(attributes[:project], attributes[:name], attributes[:path]) } skip_create - project { create :project, :repository } + project { association(:project, :repository) } path { '' } name { "#{Settings.build_gitlab_go_url}/#{project.full_path}#{path.empty? ? '' : '/'}#{path}" } diff --git a/spec/factories_spec.rb b/spec/factories_spec.rb index edce92d194802b2006bf6fa899125befc80fe698..56d643d0cc9598188a8a118c6a756f10b3ad0997 100644 --- a/spec/factories_spec.rb +++ b/spec/factories_spec.rb @@ -18,9 +18,6 @@ def skipped_traits [:ci_job_artifact, :gzip], [:ci_job_artifact, :correct_checksum], [:environment, :non_playable], - [:go_module_commit, :files], - [:go_module_commit, :package], - [:go_module_version, :pseudo], [:composer_cache_file, :object_storage], [:debian_project_component_file, :object_storage], [:debian_project_distribution, :object_storage],