marty 9.3.0 → 9.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gemignore +2 -0
- data/.gitignore +3 -0
- data/.rubocop.yml +34 -1
- data/Gemfile +1 -0
- data/Rakefile +10 -0
- data/app/assets/javascripts/marty/cable.js +21 -9
- data/app/channels/application_cable/connection.rb +1 -1
- data/app/channels/marty/notification_channel.rb +4 -1
- data/app/components/marty/api_config_view.rb +1 -1
- data/app/components/marty/api_log_view.rb +1 -1
- data/app/components/marty/auth_app.rb +8 -1
- data/app/components/marty/auth_app/client/auth_app.js +6 -0
- data/app/components/marty/data_grid_view.rb +6 -6
- data/app/components/marty/extras/misc.rb +1 -1
- data/app/components/marty/log_view.rb +1 -1
- data/app/components/marty/posting_grid.rb +1 -1
- data/app/components/marty/script_form.rb +3 -3
- data/app/components/marty/user_view.rb +1 -1
- data/app/components/marty/users/user_view.rb +1 -1
- data/app/controllers/marty/application_controller.rb +7 -7
- data/app/controllers/marty/delayed_job_controller.rb +7 -4
- data/app/controllers/marty/diagnostic/controller.rb +1 -1
- data/app/controllers/marty/job_controller.rb +2 -2
- data/app/models/marty/api_auth.rb +3 -3
- data/app/models/marty/api_config.rb +1 -1
- data/app/models/marty/base_rule.rb +1 -1
- data/app/models/marty/config.rb +5 -5
- data/app/models/marty/data_grid.rb +3 -3
- data/app/models/marty/delorean_rule.rb +2 -2
- data/app/models/marty/grid_index_boolean.rb +2 -2
- data/app/models/marty/grid_index_int4range.rb +1 -1
- data/app/models/marty/grid_index_integer.rb +1 -1
- data/app/models/marty/grid_index_numrange.rb +1 -1
- data/app/models/marty/grid_index_string.rb +1 -1
- data/app/models/marty/import_type.rb +2 -2
- data/app/models/marty/notifications/notification.rb +2 -1
- data/app/models/marty/posting.rb +6 -6
- data/app/models/marty/posting_type.rb +2 -2
- data/app/models/marty/promise.rb +4 -3
- data/app/models/marty/script.rb +7 -7
- data/app/models/marty/tag.rb +5 -5
- data/app/models/marty/token.rb +1 -1
- data/app/models/marty/user.rb +11 -10
- data/app/models/marty/user_role.rb +2 -2
- data/app/models/marty/vw_promise.rb +2 -1
- data/app/services/marty/background_job/update_schedule.rb +1 -1
- data/app/services/marty/data_grid/constraint.rb +4 -3
- data/app/services/marty/jobs/schedule.rb +2 -2
- data/lib/marty/data_change.rb +1 -1
- data/lib/marty/data_conversion.rb +1 -1
- data/lib/marty/migrations.rb +2 -2
- data/lib/marty/rpc_call.rb +2 -1
- data/lib/marty/rule_script_set.rb +1 -3
- data/lib/marty/util.rb +2 -2
- data/lib/marty/version.rb +1 -1
- data/lib/tasks/scripts_tasks.rake +2 -2
- data/marty.gemspec +5 -1
- data/spec/controllers/job_controller_spec.rb +7 -7
- data/spec/controllers/rpc_controller_spec.rb +8 -8
- data/spec/controllers/rpc_import_spec.rb +3 -3
- data/spec/features/data_blame_report_spec.rb +1 -1
- data/spec/features/data_grid_spec.rb +101 -3
- data/spec/features/enum_values_report_spec.rb +1 -1
- data/spec/features/extjs_spec.rb +1 -1
- data/spec/features/jobs_dashboard_spec.rb +2 -2
- data/spec/features/log_view_spec.rb +1 -1
- data/spec/features/reporting_spec.rb +3 -3
- data/spec/features/scripting_spec.rb +3 -3
- data/spec/features/scripting_test_spec.rb +3 -3
- data/spec/features/user_list_report_spec.rb +1 -1
- data/spec/fixtures/misc/data_grid_6.txt +9 -0
- data/spec/fixtures/misc/data_grid_7.txt +7 -0
- data/spec/fixtures/misc/data_grid_8.txt +10 -0
- data/spec/fixtures/misc/data_grid_9.txt +10 -0
- data/spec/lib/data_blame_spec.rb +1 -1
- data/spec/lib/data_importer_spec.rb +4 -4
- data/spec/lib/delorean_query_spec.rb +1 -1
- data/spec/lib/logger_spec.rb +1 -1
- data/spec/lib/mcfly_model_spec.rb +2 -2
- data/spec/lib/table_report_spec.rb +1 -1
- data/spec/models/api_auth_spec.rb +2 -2
- data/spec/models/data_grid_spec.rb +3 -3
- data/spec/models/posting_spec.rb +12 -12
- data/spec/models/promise_spec.rb +1 -1
- data/spec/models/rule_spec.rb +1 -1
- data/spec/models/script_spec.rb +1 -1
- data/spec/other/diagnostic/delayed_job_version_spec.rb +1 -1
- data/spec/spec_helper.rb +3 -0
- data/spec/support/netzke.rb +2 -2
- data/spec/support/setup.rb +1 -1
- data/spec/support/simplecov_helper.rb +94 -0
- data/spec/support/users.rb +2 -2
- metadata +8 -3
- data/.gitlab-ci.yml +0 -117
@@ -28,7 +28,7 @@ feature 'under Applications menu, Scripting workflows', js: true, speed: :slow d
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def with_user(uname, &block)
|
31
|
-
u = Marty::User.
|
31
|
+
u = Marty::User.find_by(login: uname)
|
32
32
|
begin
|
33
33
|
old_u, Mcfly.whodunnit = Mcfly.whodunnit, u
|
34
34
|
block.call(u)
|
@@ -48,7 +48,7 @@ feature 'under Applications menu, Scripting workflows', js: true, speed: :slow d
|
|
48
48
|
'A3' => "#3\n",
|
49
49
|
'A4' => "#4\n",
|
50
50
|
'A5' => "#5\n",
|
51
|
-
},
|
51
|
+
}, Time.zone.today)
|
52
52
|
|
53
53
|
# create 3 additional tags and modify A5 in the process
|
54
54
|
(1..3).each do |i|
|
@@ -57,7 +57,7 @@ feature 'under Applications menu, Scripting workflows', js: true, speed: :slow d
|
|
57
57
|
Marty::Script.
|
58
58
|
load_script_bodies({
|
59
59
|
'A5' => body + "##{i}\n"
|
60
|
-
},
|
60
|
+
}, Time.zone.today + i.minute)
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
@@ -20,7 +20,7 @@ feature 'under Applications menu, Scripting (debug) workflows', js: true do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def with_user(uname, &block)
|
23
|
-
u = Marty::User.
|
23
|
+
u = Marty::User.find_by(login: uname)
|
24
24
|
begin
|
25
25
|
old_u, Mcfly.whodunnit = Mcfly.whodunnit, u
|
26
26
|
block.call(u)
|
@@ -50,7 +50,7 @@ DELOREAN
|
|
50
50
|
load_script_bodies({
|
51
51
|
'M1' => sample_script,
|
52
52
|
'M2' => sample_script.gsub(/a/, 'aa').gsub(/b/, 'bb'),
|
53
|
-
},
|
53
|
+
}, Time.zone.today)
|
54
54
|
|
55
55
|
# add a DEV version of M1.
|
56
56
|
s = Marty::Script.find_by(obsoleted_dt: 'infinity', name: 'M1')
|
@@ -78,7 +78,7 @@ DELOREAN
|
|
78
78
|
Marty::Script.
|
79
79
|
load_script_bodies({
|
80
80
|
'M3' => sample_script2,
|
81
|
-
},
|
81
|
+
}, Time.zone.today + 2.minutes)
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
@@ -0,0 +1,10 @@
|
|
1
|
+
integer
|
2
|
+
mortgage_type string v
|
3
|
+
loan_amortization_period_count int4range v
|
4
|
+
|
5
|
+
FHA|USDA/Rural Housing|VA >=96<=180 180
|
6
|
+
FHA|USDA/Rural Housing|VA >180<=360 360
|
7
|
+
Conventional >=96<=120 120
|
8
|
+
Conventional >120<=180 180
|
9
|
+
Conventional >180<=240 240
|
10
|
+
Conventional >240<=360 360
|
@@ -0,0 +1,10 @@
|
|
1
|
+
string
|
2
|
+
mortgage_type string v
|
3
|
+
loan_amortization_period_count int4range v
|
4
|
+
|
5
|
+
FHA|USDA/Rural Housing|VA >=96<=180 "180"
|
6
|
+
FHA|USDA/Rural Housing|VA >180<=360 "360"
|
7
|
+
Conventional >=96<=120 "120"
|
8
|
+
Conventional >120<=180 "180"
|
9
|
+
Conventional >180<=240 "240"
|
10
|
+
Conventional >240<=360 "360"
|
data/spec/lib/data_blame_spec.rb
CHANGED
@@ -16,7 +16,7 @@ describe 'Blame Report', slow: true do
|
|
16
16
|
time5 = Time.zone.parse '2019-01-27 05:14:50 -0800'
|
17
17
|
|
18
18
|
posting = Marty::Posting.do_create('BASE', time3 - 2.hours, 'base posting')
|
19
|
-
@pt = Marty::Posting.
|
19
|
+
@pt = Marty::Posting.find_by(name: posting.name).created_dt
|
20
20
|
|
21
21
|
bc = Gemini::BudCategory.create(name: 'Conv Fixed 30', created_dt: time1)
|
22
22
|
bc2 = Gemini::BudCategory.create(name: 'Govt Fixed 30', created_dt: time1)
|
@@ -129,7 +129,7 @@ describe DataImporter do
|
|
129
129
|
Gemini::FannieBup.count.should == 6
|
130
130
|
|
131
131
|
# spot-check the import
|
132
|
-
bc = Gemini::BudCategory.
|
132
|
+
bc = Gemini::BudCategory.find_by(name: 'Conv Fixed 30')
|
133
133
|
fb = Gemini::FannieBup.where(bud_category_id: bc.id, note_rate: 2.50).first
|
134
134
|
fb.buy_up.should == 4.41300
|
135
135
|
fb.buy_down.should == 7.22800
|
@@ -418,7 +418,7 @@ describe DataImporter do
|
|
418
418
|
end
|
419
419
|
|
420
420
|
it 'should be able to export' do
|
421
|
-
Marty::Script.load_scripts(nil,
|
421
|
+
Marty::Script.load_scripts(nil, Time.zone.today)
|
422
422
|
Marty::ScriptSet.clear_cache
|
423
423
|
Marty::DataImporter.do_import_summary(Gemini::BudCategory, bud_cats)
|
424
424
|
Marty::DataImporter.do_import_summary(Gemini::FannieBup, fannie_bup1)
|
@@ -441,7 +441,7 @@ describe 'Blame Report without yml translations' do
|
|
441
441
|
note_rate: nil
|
442
442
|
}
|
443
443
|
)
|
444
|
-
Marty::Script.load_scripts(nil,
|
444
|
+
Marty::Script.load_scripts(nil, Time.zone.today)
|
445
445
|
Marty::ScriptSet.clear_cache
|
446
446
|
p = Marty::Posting.do_create('BASE', DateTime.yesterday, 'yesterday')
|
447
447
|
Marty::DataImporter.do_import_summary(Gemini::BudCategory, bud_cats)
|
@@ -468,7 +468,7 @@ describe 'Blame Report with yml translations' do
|
|
468
468
|
before(:each) do
|
469
469
|
I18n.backend.store_translations(:en, attributes: { note_rate: 'Note Rate' })
|
470
470
|
|
471
|
-
Marty::Script.load_scripts(nil,
|
471
|
+
Marty::Script.load_scripts(nil, Time.zone.today)
|
472
472
|
Marty::ScriptSet.clear_cache
|
473
473
|
p = Marty::Posting.do_create('BASE', DateTime.yesterday, 'yesterday')
|
474
474
|
Marty::DataImporter.do_import_summary(Gemini::BudCategory, bud_cats)
|
data/spec/lib/logger_spec.rb
CHANGED
@@ -76,7 +76,7 @@ describe 'McflyModel' do
|
|
76
76
|
@clean_file = "/tmp/clean_#{Process.pid}.psql"
|
77
77
|
save_clean_db(@clean_file)
|
78
78
|
marty_whodunnit
|
79
|
-
dt =
|
79
|
+
dt = Time.zone.today
|
80
80
|
Marty::DataImporter.do_import_summary(Gemini::Entity, entities)
|
81
81
|
Marty::DataImporter.do_import_summary(Gemini::BudCategory, bud_cats)
|
82
82
|
Marty::DataImporter.do_import_summary(Gemini::FannieBup, fannie_bup)
|
@@ -93,7 +93,7 @@ describe 'McflyModel' do
|
|
93
93
|
Marty::Script.load_script_bodies(
|
94
94
|
{
|
95
95
|
name => (errscript % fn),
|
96
|
-
},
|
96
|
+
}, Time.zone.today)
|
97
97
|
end
|
98
98
|
|
99
99
|
Marty::Script.load_script_bodies({ 'E5' => (errscript2 % 'a_func_p') }, dt)
|
@@ -27,7 +27,7 @@ describe 'Blame Report', slow: true do
|
|
27
27
|
time5 = Time.zone.parse '2019-01-27 05:14:50 -0800'
|
28
28
|
|
29
29
|
posting = Marty::Posting.do_create('BASE', time5 - 2.hours, 'base posting')
|
30
|
-
@pt_name = Marty::Posting.
|
30
|
+
@pt_name = Marty::Posting.find_by(name: posting.name).name
|
31
31
|
|
32
32
|
bc = Gemini::BudCategory.create(name: 'Conv Fixed 30', created_dt: time1)
|
33
33
|
bc2 = Gemini::BudCategory.create(name: 'Govt Fixed 30', created_dt: time1)
|
@@ -6,7 +6,7 @@ module Marty
|
|
6
6
|
Marty::Script.load_script_bodies({
|
7
7
|
'Script1' => "A:\n a = 1\n",
|
8
8
|
'NewScript1' => "B:\n b = 0\n",
|
9
|
-
|
9
|
+
}, Time.zone.today)
|
10
10
|
|
11
11
|
@api = ApiAuth.new
|
12
12
|
@api.app_name = 'TestApp'
|
@@ -70,7 +70,7 @@ module Marty
|
|
70
70
|
s.name = 'TestScript'
|
71
71
|
s.body = '-- Test3'
|
72
72
|
# Creates a script in the future - no tag exists
|
73
|
-
s.created_dt = Time.now + 1.minute
|
73
|
+
s.created_dt = Time.zone.now + 1.minute
|
74
74
|
s.save!
|
75
75
|
|
76
76
|
api = ApiAuth.new
|
@@ -608,7 +608,7 @@ EOS
|
|
608
608
|
end
|
609
609
|
|
610
610
|
it 'should handle DataGrid typed data grids -- non mcfly' do
|
611
|
-
ca = Gemini::State.
|
611
|
+
ca = Gemini::State.find_by(name: 'CA')
|
612
612
|
|
613
613
|
res = lookup_grid_helper('infinity', 'Gb', 'property_state' => ca)
|
614
614
|
expect(res).to eq [70, 'Gb']
|
@@ -620,7 +620,7 @@ EOS
|
|
620
620
|
|
621
621
|
it 'should handle typed (enum) data lookup_grid' do
|
622
622
|
pt = 'infinity'
|
623
|
-
ca = Gemini::State.
|
623
|
+
ca = Gemini::State.find_by(name: 'CA')
|
624
624
|
|
625
625
|
res = Marty::DataGrid.
|
626
626
|
lookup_grid_h(pt, 'Gb', { 'property_state' => ca }, false)
|
@@ -884,7 +884,7 @@ EOS
|
|
884
884
|
end
|
885
885
|
|
886
886
|
it 'should be able to externally export/import grids' do
|
887
|
-
load_scripts(nil,
|
887
|
+
load_scripts(nil, Time.zone.today)
|
888
888
|
|
889
889
|
dg = dg_from_import('G1', G1)
|
890
890
|
|
data/spec/models/posting_spec.rb
CHANGED
@@ -44,19 +44,19 @@ module Marty
|
|
44
44
|
before do
|
45
45
|
PostingType.create(name: 'SNAPSHOT')
|
46
46
|
PostingType.create(name: 'OTHER')
|
47
|
-
Posting.do_create('BASE', 0.
|
47
|
+
Posting.do_create('BASE', 0.days.from_now, 'base posting')
|
48
48
|
Posting.do_create('SNAPSHOT', 1.day.from_now, 'snapshot1 posting')
|
49
|
-
Posting.do_create('SNAPSHOT', 2.
|
50
|
-
Posting.do_create('OTHER', 3.
|
51
|
-
Posting.do_create('SNAPSHOT', 4.
|
52
|
-
Posting.do_create('OTHER', 5.
|
49
|
+
Posting.do_create('SNAPSHOT', 2.days.from_now, 'snapshot2 posting')
|
50
|
+
Posting.do_create('OTHER', 3.days.from_now, 'other1 posting')
|
51
|
+
Posting.do_create('SNAPSHOT', 4.days.from_now, 'snapshot3 posting')
|
52
|
+
Posting.do_create('OTHER', 5.days.from_now, 'other2 posting')
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'filters on a single posting type' do
|
56
56
|
# First param is just the limit (max) to return
|
57
57
|
res = Posting.get_latest_by_type(10, ['BASE'])
|
58
58
|
expect(res.count).to eq 1
|
59
|
-
r0 = Posting.
|
59
|
+
r0 = Posting.find_by(name: res[0]['name'])
|
60
60
|
expect(r0.comment).to eq 'base posting'
|
61
61
|
end
|
62
62
|
|
@@ -64,8 +64,8 @@ module Marty
|
|
64
64
|
res = Posting.get_latest_by_type(10, ['BASE', 'SNAPSHOT'])
|
65
65
|
expect(res.count).to eq 4
|
66
66
|
# snapshot3 is most recent with this filter
|
67
|
-
r0 = Posting.
|
68
|
-
r3 = Posting.
|
67
|
+
r0 = Posting.find_by(name: res[0]['name'])
|
68
|
+
r3 = Posting.find_by(name: res[3]['name'])
|
69
69
|
expect(r0.comment).to eq 'snapshot3 posting'
|
70
70
|
expect(r3.comment).to eq 'base posting'
|
71
71
|
end
|
@@ -74,8 +74,8 @@ module Marty
|
|
74
74
|
res = Posting.get_latest_by_type(10, ['SNAPSHOT', 'OTHER'])
|
75
75
|
expect(res.count).to eq 5
|
76
76
|
# other2 is most recent with this filter
|
77
|
-
r0 = Posting.
|
78
|
-
r4 = Posting.
|
77
|
+
r0 = Posting.find_by(name: res[0]['name'])
|
78
|
+
r4 = Posting.find_by(name: res[4]['name'])
|
79
79
|
expect(r0.comment).to eq 'other2 posting'
|
80
80
|
expect(r4.comment).to eq 'snapshot1 posting'
|
81
81
|
end
|
@@ -84,8 +84,8 @@ module Marty
|
|
84
84
|
res = Posting.get_latest_by_type(3, ['SNAPSHOT', 'OTHER'])
|
85
85
|
expect(res.count).to eq 3
|
86
86
|
# other2 is most recent with this filter
|
87
|
-
r0 = Posting.
|
88
|
-
r2 = Posting.
|
87
|
+
r0 = Posting.find_by(name: res[0]['name'])
|
88
|
+
r2 = Posting.find_by(name: res[2]['name'])
|
89
89
|
expect(r0.comment).to eq 'other2 posting'
|
90
90
|
expect(r2.comment).to eq 'other1 posting'
|
91
91
|
end
|
data/spec/models/promise_spec.rb
CHANGED
@@ -12,7 +12,7 @@ describe Marty::Promise, slow: true, retry: 3 do
|
|
12
12
|
# means we lose the globally set user
|
13
13
|
Mcfly.whodunnit = system_user
|
14
14
|
|
15
|
-
Marty::Script.load_script_bodies(promise_bodies,
|
15
|
+
Marty::Script.load_script_bodies(promise_bodies, Time.zone.today)
|
16
16
|
|
17
17
|
start_delayed_job
|
18
18
|
end
|
data/spec/models/rule_spec.rb
CHANGED
@@ -437,7 +437,7 @@ module Marty::RuleSpec
|
|
437
437
|
to receive(:evaluate).and_raise('hi mom')
|
438
438
|
expect do
|
439
439
|
simple.compute(@ruleopts_myrule,
|
440
|
-
'pt' => Time.now)
|
440
|
+
'pt' => Time.zone.now)
|
441
441
|
end .to raise_error(/hi mom/)
|
442
442
|
# simple2a should return results without evaluation (they are all fixed)
|
443
443
|
expect(simple2a.compute(@ruleopts_myrule, 'pt' => Time.zone.now)).to eq(
|
data/spec/models/script_spec.rb
CHANGED
@@ -175,7 +175,7 @@ describe Marty::Script do
|
|
175
175
|
it 'gets the files from the default paths' do
|
176
176
|
allow(Dir).to receive(:glob).and_return([])
|
177
177
|
Marty::Script.get_script_filenames
|
178
|
-
expect(Dir).to have_received(:glob).with(
|
178
|
+
expect(Dir).to have_received(:glob).with(Rails.root.join('delorean/**/*.dl').to_s)
|
179
179
|
expect(Dir).to have_received(:glob).
|
180
180
|
with(File.expand_path('../../../delorean/**/*.dl', __FILE__))
|
181
181
|
expect(Dir).to have_received(:glob).twice
|
data/spec/spec_helper.rb
CHANGED
data/spec/support/netzke.rb
CHANGED
@@ -101,14 +101,14 @@ module Marty; module RSpec; module Netzke
|
|
101
101
|
|
102
102
|
def wait_for_element(seconds_to_wait = 2.0, sleeptime = 0.1)
|
103
103
|
res = nil
|
104
|
-
start_time = current_time = Time.now
|
104
|
+
start_time = current_time = Time.zone.now
|
105
105
|
while !res && current_time - start_time < seconds_to_wait
|
106
106
|
begin
|
107
107
|
res = yield
|
108
108
|
rescue StandardError
|
109
109
|
ensure
|
110
110
|
sleep sleeptime
|
111
|
-
current_time = Time.now
|
111
|
+
current_time = Time.zone.now
|
112
112
|
end
|
113
113
|
end
|
114
114
|
res
|
data/spec/support/setup.rb
CHANGED
@@ -0,0 +1,94 @@
|
|
1
|
+
# Credit to: https://gitlab.com/gitlab-org/gitlab-foss/blob/master/spec/simplecov_env.rb
|
2
|
+
|
3
|
+
require 'simplecov'
|
4
|
+
require 'active_support/core_ext/numeric/time'
|
5
|
+
|
6
|
+
module SimpleCovHelper
|
7
|
+
def self.merge_all_results!
|
8
|
+
resultset_files = Pathname.glob(
|
9
|
+
File.join(SimpleCov.coverage_path, '**', '.resultset.json')
|
10
|
+
)
|
11
|
+
|
12
|
+
result_array = begin
|
13
|
+
resultset_files.map do |result_file|
|
14
|
+
SimpleCov::Result.from_hash JSON.parse(result_file.read)
|
15
|
+
end
|
16
|
+
rescue StandardError => e
|
17
|
+
{}
|
18
|
+
end
|
19
|
+
|
20
|
+
merged = SimpleCov::ResultMerger.merge_results(*result_array)
|
21
|
+
merged.format!
|
22
|
+
|
23
|
+
# Print out to console all the groups and their percents + hits/line.
|
24
|
+
groups = merged.groups.map do |group, files|
|
25
|
+
[group, files.covered_percent, files.covered_strength]
|
26
|
+
end
|
27
|
+
sorted_groups = groups.sort_by { |_gr, per, _str| -per }
|
28
|
+
sorted_groups.each do |group|
|
29
|
+
gr_name, percent, strength = group
|
30
|
+
puts "Group '#{gr_name}': #{percent} covered at #{strength} hits/line"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.configure_job
|
35
|
+
# This should only be run as part of an RSpec pipeline
|
36
|
+
return unless defined?(RSpec)
|
37
|
+
|
38
|
+
SimpleCov.configure do
|
39
|
+
if ENV['GITLAB_CI']
|
40
|
+
job_name = ENV['CI_JOB_NAME'] || nil
|
41
|
+
coverage_dir "coverage/#{job_name}"
|
42
|
+
command_name job_name
|
43
|
+
SimpleCov.at_exit { SimpleCov.result }
|
44
|
+
else
|
45
|
+
command_options = RSpec::Core::ConfigurationOptions.new(ARGV)
|
46
|
+
rspec_directories = command_options.options[:files_or_directories_to_run]
|
47
|
+
case rspec_directories.length
|
48
|
+
when 1
|
49
|
+
category = Dir.exist?(rspec_directories[0]) ? rspec_directories[0] : nil
|
50
|
+
coverage_dir "coverage/#{category}"
|
51
|
+
command_name category
|
52
|
+
else
|
53
|
+
coverage_dir 'coverage/'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.configure_profile
|
60
|
+
SimpleCov.configure do
|
61
|
+
load_profile 'test_frameworks'
|
62
|
+
load_profile 'root_filter'
|
63
|
+
load_profile 'bundler_filter'
|
64
|
+
track_files '{app,lib,config}/**/*.rb'
|
65
|
+
track_files 'db/seeds.rb'
|
66
|
+
|
67
|
+
add_filter '/vendor/ruby/'
|
68
|
+
add_filter 'spec/'
|
69
|
+
|
70
|
+
add_group 'Libraries', 'lib'
|
71
|
+
add_group 'Assets', 'app/assets'
|
72
|
+
add_group 'Channels', 'app/channels'
|
73
|
+
add_group 'Netzke Components', 'app/components'
|
74
|
+
add_group 'Controllers', 'app/controllers'
|
75
|
+
add_group 'Helpers', 'app/helpers'
|
76
|
+
add_group 'Jobs', 'app/jobs'
|
77
|
+
add_group 'Models', 'app/models'
|
78
|
+
add_group 'Services', 'app/services'
|
79
|
+
add_group 'Views', 'app/views'
|
80
|
+
|
81
|
+
use_merging true
|
82
|
+
merge_timeout 365.days
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def self.start!
|
87
|
+
return unless ENV['COVERAGE'] == 'true'
|
88
|
+
|
89
|
+
configure_profile
|
90
|
+
configure_job
|
91
|
+
|
92
|
+
SimpleCov.start
|
93
|
+
end
|
94
|
+
end
|