Skip to content

Commit 5ae20cb

Browse files
author
bmarkons
committed
Introduce ReleasesRunner
1 parent ab5a82d commit 5ae20cb

4 files changed

Lines changed: 62 additions & 11 deletions

File tree

app/services/manual_runner.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ def initialize(repo)
77
@octokit = Octokit::Client.new(access_token: Rails.application.secrets.github_api_token)
88
end
99

10+
def run_releases(versions, pattern: '')
11+
ReleasesRunner.run(versions, @repo, pattern)
12+
end
13+
1014
def run_last(commits_count, pattern: '')
1115
if commits_count < 100
1216
run_commits(per_page: commits_count, pattern: pattern)

app/services/releases_runner.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
module ReleasesRunner
2+
def self.run(versions, repo, pattern = '')
3+
versions.each { |version| create_and_run(version, repo, pattern) }
4+
end
5+
6+
private
7+
8+
def self.create_and_run(version, repo, pattern)
9+
Release.find_or_create_by!(version: version, repo_id: repo.id)
10+
BenchmarkPool.enqueue(
11+
:release,
12+
version,
13+
repo.name,
14+
include_patterns: pattern
15+
)
16+
end
17+
end

test/services/manual_runner_test.rb

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
require 'test_helper'
22

33
class ManualRunnerTest < ActiveSupport::TestCase
4+
setup do
5+
organization = create(:organization, name: 'jeremyevans')
6+
@repo = create(:repo, name: 'sequel', organization: organization)
7+
end
8+
49
test 'new with existing repo' do
510
assert_nothing_raised do
611
ManualRunner.new(create(:repo))
@@ -14,30 +19,32 @@ class ManualRunnerTest < ActiveSupport::TestCase
1419
end
1520

1621
test 'run last 200 commits' do
17-
organization = create(:organization, name: 'jeremyevans')
18-
repo = create(:repo, name: 'sequel', organization: organization)
19-
20-
expect_to_run(100, 2)
22+
expect_to_run count: 100, times: 2
2123

2224
VCR.use_cassette('github 200 commits') do
23-
ManualRunner.new(repo).run_last(200)
25+
ManualRunner.new(@repo).run_last(200)
2426
end
2527
end
2628

2729
test 'run last 20 commits' do
28-
organization = create(:organization, name: 'jeremyevans')
29-
repo = create(:repo, name: 'sequel', organization: organization)
30-
31-
expect_to_run(20, 1)
30+
expect_to_run count: 20, times: 1
3231

3332
VCR.use_cassette('github 20 commits') do
34-
ManualRunner.new(repo).run_last(20)
33+
ManualRunner.new(@repo).run_last(20)
3534
end
3635
end
3736

37+
test 'run releases' do
38+
ReleasesRunner.expects(:run).with do |versions|
39+
assert_equal ['4.0.0', '5.0.0'], versions
40+
end
41+
42+
ManualRunner.new(@repo).run_releases(['4.0.0', '5.0.0'])
43+
end
44+
3845
private
3946

40-
def expect_to_run(count, times)
47+
def expect_to_run(count:, times:)
4148
CommitsRunner.expects(:run).times(times).returns(count).with do |source, commits, repo, pattern|
4249
commits.each do |commit|
4350
assert commit['sha']
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
require 'test_helper'
2+
3+
class ReleasesRunnerTest < ActiveSupport::TestCase
4+
include ActiveJob::TestHelper
5+
6+
setup do
7+
@repo = create(:repo, name: 'rails')
8+
end
9+
10+
test '#run release versions' do
11+
versions = ['4.10.0', '5.1.3', '5.0.3']
12+
13+
ReleasesRunner.run(versions, @repo)
14+
15+
versions.each do |version|
16+
release = Release.find_by!(version: version, repo_id: @repo.id)
17+
assert_equal version, release.version
18+
assert_equal @repo.id, release.repo_id
19+
end
20+
21+
assert_enqueued_jobs(versions.count)
22+
end
23+
end

0 commit comments

Comments
 (0)