marty 2.5.8 → 2.5.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 17d4c8cca5e227120b347328f76f6b5c2844a3662fe4fa31c186d4ac5b422f9b
4
- data.tar.gz: 5ae6f1ec90da4b1543ed781e2bd9b9ef88224d9b51bde8257f9e9188dc44b82c
3
+ metadata.gz: ec3679621406e9c0a3d3a343f38bc89cd467a9e39c353b7a2a4911877482194d
4
+ data.tar.gz: fde0d9513d1f964b7a9a7022d964971a6aa486785027e7e96ddb1da11c815807
5
5
  SHA512:
6
- metadata.gz: 5705fbd63836311b4f6b2847d9b2b2fe998a413980a5a795a98494f94e8dc0dda78dc0a3a05d994c821102e8bf8320afe6465393dd663674cb22b5cfa2b63a52
7
- data.tar.gz: 806137fda06674d6d4fa937689a0da78898f1c4589ee1f52833030aea10537e48a76037ebbe2acc7a1c90eaccee1bb4d2af7ea325a09f93dbbc35028af5f37e9
6
+ metadata.gz: d520244f0c0e98a1ae3c779660f049663514f2062eabd837e3167bb6098754476abef431e5f9c22fdd460567c56791a7d08095b852af0c807a628c6998148cfc
7
+ data.tar.gz: f6d70ee23ab6b1a571a5bb913ffc10e453169731b4e5736a8ac22ff830262b65d19e9cf81361f8e54f54fd774d64b6149f6d572c524249af8c80a9315537da95
data/Gemfile CHANGED
@@ -16,6 +16,7 @@ group :development, :test do
16
16
  gem 'chromedriver-helper'
17
17
  gem 'connection_pool'
18
18
  gem 'database_cleaner'
19
+ gem 'pry-byebug'
19
20
  gem 'pry-rails'
20
21
  gem 'rails-controller-testing'
21
22
  gem 'rspec-instafail', require: false
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- marty (2.5.8)
4
+ marty (2.5.9)
5
5
  aws-sigv4 (~> 1.0, >= 1.0.2)
6
6
  axlsx (= 3.0.0pre)
7
7
  coderay
@@ -69,6 +69,7 @@ GEM
69
69
  nokogiri (~> 1.8, >= 1.8.2)
70
70
  rubyzip (~> 1.2, >= 1.2.1)
71
71
  builder (3.2.3)
72
+ byebug (11.0.0)
72
73
  capybara (2.18.0)
73
74
  addressable
74
75
  mini_mime (>= 0.1.3)
@@ -152,6 +153,9 @@ GEM
152
153
  pry (0.12.2)
153
154
  coderay (~> 1.1.0)
154
155
  method_source (~> 0.9.0)
156
+ pry-byebug (3.7.0)
157
+ byebug (~> 11.0)
158
+ pry (~> 0.10)
155
159
  pry-rails (0.3.9)
156
160
  pry (>= 0.10.4)
157
161
  public_suffix (3.0.3)
@@ -264,6 +268,7 @@ DEPENDENCIES
264
268
  mcfly
265
269
  netzke (= 6.5.0.0)
266
270
  pg
271
+ pry-byebug
267
272
  pry-rails
268
273
  rails (~> 5.1.4)
269
274
  rails-controller-testing
@@ -52,7 +52,7 @@ class Marty::ScriptTester < Marty::Form
52
52
 
53
53
  begin
54
54
  phash = ActiveSupport::JSON.decode("{ #{pjson} }")
55
- rescue MultiJson::DecodeError
55
+ rescue JSON::ParserError
56
56
  client.netzke_notify 'Malformed input parameters'
57
57
  return
58
58
  end
@@ -34,7 +34,7 @@ class Marty::RuleScriptSet < Delorean::AbstractContainer
34
34
 
35
35
  def write_attr(k, v)
36
36
  equals, rhs = v == :parameter ? [' =?', ''] :
37
- [' =', v.lines.map { |l| ' ' * 8 + l }.join]
37
+ [" =\n", v.lines.map { |l| ' ' * 8 + l }.join]
38
38
  k + equals + rhs
39
39
  end
40
40
 
@@ -128,24 +128,33 @@ class Marty::RuleScriptSet < Delorean::AbstractContainer
128
128
  errs
129
129
  end
130
130
 
131
- def get_parse_error_field(ruleh, exc)
132
- line = (exc.line || 1) - 1
133
- errs = { class_body: self.class.body_lines } + code_section_counts(ruleh)
134
- ranges0 = errs.values.reduce([0]) do |acc, len|
131
+ def search_ranges(oh, line)
132
+ ranges0 = oh.values.reduce([0]) do |acc, len|
135
133
  acc + [acc.last + len]
136
134
  end
137
- ranges = errs.keys.zip(ranges0.each_cons(2).to_a)
135
+ ranges = oh.keys.zip(ranges0.each_cons(2).to_a)
138
136
  secnm, (st, en) = ranges.detect do |sec, (st, en)|
139
137
  line.between?(st, en - 1)
140
138
  end
141
139
  [secnm, line - st + 1]
140
+ end
141
+
142
+ def get_parse_error_field(ruleh, exc)
143
+ line = (exc.line || 1) - 1
144
+ errs = { class_body: self.class.body_lines } + code_section_counts(ruleh)
145
+ secnm, line_in_sec = search_ranges(errs, line)
146
+ if [:computed_guards, :results].include?(secnm)
147
+ h = Hash[ruleh[secnm.to_s].map { |k, v| [k, v.lines.count + 1] }]
148
+ attrnm, = search_ranges(h, line_in_sec)
149
+ end
150
+ [secnm, attrnm || line_in_sec]
142
151
  rescue StandardError => e
143
152
  Marty::Logger.error('RuleScriptSet#get_parse_error_field',
144
153
  error: e.message,
145
154
  backtrace: e.backtrace,
146
155
  ruleh: ruleh,
147
156
  line: line)
148
- ['Unknown', 0]
157
+ [nil, nil]
149
158
  end
150
159
 
151
160
  def get_engine(ruleh)
@@ -184,10 +193,16 @@ class Marty::RuleScriptSet < Delorean::AbstractContainer
184
193
  @@engines[[pt, sname]] = sset.parse_check(sname, get_code(ruleh))
185
194
  end
186
195
  rescue Delorean::ParseError => e
187
- secnm, line = get_parse_error_field(ruleh, e)
196
+ secnm, attr_or_line = get_parse_error_field(ruleh, e)
188
197
  msg = e.message.capitalize
189
- raise "Error in rule '#{ruleh['name']}' field '#{secnm}' "\
190
- "(line #{line}): #{msg}"
198
+ field = secnm ? "field '#{secnm}'" : ''
199
+ where = if attr_or_line.is_a?(String)
200
+ then "(attribute #{attr_or_line})"
201
+ elsif attr_or_line.is_a?(Integer)
202
+ then "(line #{attr_or_line})"
203
+ else ''
204
+ end
205
+ raise "Error in rule '#{ruleh['name']}' #{field} #{where}: #{msg}"
191
206
  end
192
207
 
193
208
  def self.indent(s)
@@ -1,3 +1,3 @@
1
1
  module Marty
2
- VERSION = '2.5.8'
2
+ VERSION = '2.5.9'
3
3
  end
@@ -222,16 +222,16 @@ feature 'rule view', js: true do
222
222
  fill_in(:computed_guards, with: "x = true\ny = false\nvar = 123j\nz = true")
223
223
  press('OK')
224
224
  wait_for_ajax
225
- exp = "Computed - Error in rule 'abc' field 'computed_guards' (line 3): "\
226
- 'Syntax error'
225
+ exp = "Computed - Error in rule 'abc' field 'computed_guards' "\
226
+ '(attribute var): Syntax error'
227
227
  expect(page).to have_content(exp)
228
228
  sleep 2
229
229
 
230
230
  fill_in(:computed_guards, with: %Q(var1 = "good"\nvar2 = 123\nvar3 = 123j))
231
231
  press('OK')
232
232
  wait_for_ajax
233
- exp = "Computed - Error in rule 'abc' field 'computed_guards' (line 3): "\
234
- 'Syntax error'
233
+ exp = "Computed - Error in rule 'abc' field 'computed_guards' "\
234
+ '(attribute var3): Syntax error'
235
235
  expect(page).to have_content(exp)
236
236
  sleep 2
237
237
 
@@ -239,7 +239,7 @@ feature 'rule view', js: true do
239
239
  fill_in(:results, with: %Q(var3 = 123j\nvar1 = "good"\nvar2 = 123))
240
240
  press('OK')
241
241
  wait_for_ajax
242
- exp = "Computed - Error in rule 'abc' field 'results' (line 1): "\
242
+ exp = "Computed - Error in rule 'abc' field 'results' (attribute var3): "\
243
243
  'Syntax error'
244
244
  expect(page).to have_content(exp)
245
245
  sleep 2
@@ -247,7 +247,8 @@ feature 'rule view', js: true do
247
247
  fill_in(:results, with: %Q(abc = "def"\ndef = 5\nxyz = def+10\nsadf asdf lsf))
248
248
  press('OK')
249
249
  wait_for_ajax
250
- exp = "Computed - Error in rule 'abc' field 'results' (line 4): Syntax error"
250
+ exp = "Computed - Error in rule 'abc' field 'results' (attribute xyz): "\
251
+ 'Syntax error'
251
252
  expect(page).to have_content(exp)
252
253
  sleep 2
253
254
 
@@ -119,6 +119,13 @@ DELOREAN
119
119
  expect(page).to have_content 'undefined parameter p0'
120
120
  end
121
121
 
122
+ and_by 'see malformed params error' do
123
+ fill_in('params', with: 'a = Wrong::Class.last')
124
+ press('Compute')
125
+ wait_for_ajax
126
+ expect(page).to have_content 'Malformed input parameters'
127
+ end
128
+
122
129
  and_by 'compute attrs with good params' do
123
130
  fill_in('params', with: "a = 1.1\nc = 2.2\np0 = 3.3\n")
124
131
  press('Compute')
@@ -74,7 +74,7 @@ module Marty::RuleSpec
74
74
  @rule_type = 'SimpleRule'
75
75
  @computed_guards = { 'guard1' => 'zvjsdf12.z8*' }
76
76
  exp = Regexp.new("Computed - Error in rule 'testrule' field "\
77
- "'computed_guards' .line 1.: Syntax error")
77
+ "'computed_guards' .attribute guard1.: Syntax error")
78
78
  expect { subject }.to raise_error(exp)
79
79
  end
80
80
  it 'detects errors in computed results' do
@@ -83,7 +83,7 @@ module Marty::RuleSpec
83
83
  'does_not_compute' => 'zvjsdf12.z8*' }
84
84
  @grids = { 'grid1' => 'DataGrid1', 'grid2' => 'DataGrid2' }
85
85
  exp = Regexp.new("Computed - Error in rule 'testrule' field "\
86
- "'results' .line 2.: Syntax error")
86
+ "'results' .attribute does_not_compute.: Syntax error")
87
87
  expect { subject }.to raise_error(exp)
88
88
  end
89
89
  it 'detects errors in computed results 2' do
@@ -92,9 +92,16 @@ module Marty::RuleSpec
92
92
  @grids = { 'grid1' => 'DataGrid1', 'grid2' => 'DataGrid1',
93
93
  'grid3' => 'DataGrid3' }
94
94
  exp = Regexp.new("Computed - Error in rule 'testrule' field "\
95
- "'results' .line 1.: Syntax error")
95
+ "'results' .attribute does_not_compute.: Syntax error")
96
96
  expect { subject }.to raise_error(exp)
97
97
  end
98
+ it 'avoids delorean parse bug (redline 168745)' do
99
+ @rule_type = 'SimpleRule'
100
+ @results = { 'parse_bug' => "true\n&& false" }
101
+ @grids = { 'grid1' => 'DataGrid1', 'grid2' => 'DataGrid1',
102
+ 'grid3' => 'DataGrid3' }
103
+ expect { subject }.to_not raise_error
104
+ end
98
105
  it 'detects errors in computed results 3' do
99
106
  @rule_type = 'SimpleRule'
100
107
  @results = { 'does_compute' => '1+2',
@@ -104,7 +111,7 @@ module Marty::RuleSpec
104
111
  @grids = { 'grid1' => 'DataGrid1', 'grid2' => 'DataGrid1',
105
112
  'grid3' => 'DataGrid1' }
106
113
  exp = Regexp.new("Computed - Error in rule 'testrule' field "\
107
- "'results' .line 3.: Syntax error")
114
+ "'results' .attribute does_not_compute.: Syntax error")
108
115
  expect { subject }.to raise_error(exp)
109
116
  end
110
117
  it 'reports bad grid names' do
@@ -145,7 +152,7 @@ module Marty::RuleSpec
145
152
  @rule_type = 'XRule'
146
153
  @results = { 'x' => 'zx sdf wer' }
147
154
  exp = Regexp.new("Computed - Error in rule 'testrule' field "\
148
- "'results' .line 1.: Syntax error")
155
+ "'results' .attribute x.: Syntax error")
149
156
  expect { subject }.to raise_error(exp)
150
157
  end
151
158
  it 'rule script stuff overrides 1' do
@@ -159,7 +166,7 @@ module Marty::RuleSpec
159
166
  @rule_type = 'XRule'
160
167
  @computed_guards = { 'abc' => 'err err err', 'xyz_guard' => 'xyz_param' }
161
168
  exp = Regexp.new("Computed - Error in rule 'testrule' field "\
162
- "'computed_guards' .line 1.: Syntax error")
169
+ "'computed_guards' .attribute abc.: Syntax error")
163
170
  expect { subject }.to raise_error(exp)
164
171
  end
165
172
  it 'rule script stuff overrides 3' do
@@ -2,13 +2,13 @@ require 'spec_helper'
2
2
  require 'job_helper'
3
3
 
4
4
  describe Marty::Diagnostic::DelayedJobWorkers do
5
- def sample_data opts={}
5
+ def sample_data opts = {}
6
6
  ip, error, status = opts.values_at(:ip, :error, :status)
7
7
  {
8
8
  ip || Marty::Helper.my_ip => {
9
9
  'Delayed Workers / Node' => {
10
10
  'description' => error ? '3' : '4',
11
- 'status' => status,
11
+ 'status' => status || true,
12
12
  'consistent' => nil
13
13
  },
14
14
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marty
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.8
4
+ version: 2.5.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arman Bostani
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2019-03-05 00:00:00.000000000 Z
17
+ date: 2019-03-12 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: pg