mumukit 2.43.0 → 2.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e040afd28d4d12898e0c213d39b5f5404c7ba05cda3f05875700fb418fc33ddd
4
- data.tar.gz: be2b5fe4e2240b8056dbb7147a2a6def7a7dfaf7c8d2a0b2b23475f4a5fed83e
3
+ metadata.gz: 4c4daef670d7b72e6a88cea099905e870f6534ba9d7da574323efc941e8e991e
4
+ data.tar.gz: 7293bd7160ff5249f5c06f45f34c4bfb87df2ee24128aefda1dbf421ad6be9cd
5
5
  SHA512:
6
- metadata.gz: 5fe277900418f475fdfebd7eb9481503bf2f0c5cd83caa8ee6386eacca9d8321810aba13a1ae4eb48cc128a91712fe82abdac244e1b52864680008b6039769ef
7
- data.tar.gz: 5b3d7125b58decee7c8e74304444191153545f17dce74dfd190f6669aa6016ecca64df515b2ec072693e14f8aed9732b7f68c6c95a2526b82cc8a60bd0482e99
6
+ metadata.gz: 723eff33716d123138cc159cb3724e554e714bf8da1024afec1372033778488cb0f0c9ea9f3a555aa14a02610375ca4f674de79089d45ebfe8e3c8cbb234391f
7
+ data.tar.gz: b214cfcc02b1a24f81c4f34ed2d39865fe79d6a56a7fd73c79ef6902cb7218ad29b90deed1a408d58164f1d202fe088f35831a70ceb32bf6f235aaacb9a1821c
data/lib/locales/en.yml CHANGED
@@ -5,14 +5,15 @@ en:
5
5
  masked_tempfile_basename: solution
6
6
  interactive:
7
7
  check_last_query_equals: "query should be '%{expected}' but was '%{actual}'"
8
- check_last_query_fails: "query should fail but it passed"
9
- check_last_query_matches: "query does not match regexp %{regexp}"
8
+ check_last_query_fails: "query should fail but it was '%{actual}' and passed"
9
+ check_last_query_matches: "query should match regexp %{regexp}, but was '%{actual}'"
10
10
  check_last_query_outputs: "query output should be '%{expected}' but was '%{actual}'"
11
- check_last_query_includes: "query output should include '%{expected}' but was '%{actual}'"
12
- check_last_query_like: "query output should be like '%{expected}' but was '%{actual}'"
13
- check_last_query_passes: "query should pass but it failed"
11
+ check_last_query_output_includes: "query output should include '%{expected}' but was '%{actual}'"
12
+ check_last_query_output_like: "query output should be like '%{expected}' but was '%{actual}'"
13
+ check_last_query_passes: "query should pass but it was '%{actual}' and failed"
14
14
  check_query_fails: "query '%{query}' should fail but it passed"
15
15
  check_query_outputs: "query '%{query}' output should be '%{expected}' but was '%{actual}'"
16
16
  check_query_passes: "query '%{query}' should pass but it failed"
17
17
  goal_passed: "goal was met successfully"
18
18
  check_queries_match: "All the required queries must be executed"
19
+ check_queries_equal: "All the required queries must be executed"
@@ -5,14 +5,15 @@ es-CL:
5
5
  masked_tempfile_basename: solucion
6
6
  interactive:
7
7
  check_last_query_equals: "La consulta debería ser '%{expected}' pero fue '%{actual}'"
8
- check_last_query_fails: "La consulta debería fallar pero pasó"
9
- check_last_query_matches: "La consulta no cumple con la expresión regular %{regexp}"
8
+ check_last_query_fails: "La consulta debería fallar pero fue '%{actual}' y pasó"
9
+ check_last_query_matches: "La consulta debería cumplir con la expresión regular '%{regexp}' pero fue '%{actual}'"
10
10
  check_last_query_outputs: "La consulta debería devolver '%{expected}' pero devolvió '%{actual}'"
11
- check_last_query_includes: "La consulta debería incluir '%{expected}' pero devolvió '%{actual}'"
12
- check_last_query_like: "La consulta debería ser como '%{expected}' pero devolvió '%{actual}'"
13
- check_last_query_passes: "La consulta debería pasar pero falló"
11
+ check_last_query_output_includes: "El retorno de la consulta debería incluir '%{expected}' pero devolvió '%{actual}'"
12
+ check_last_query_output_like: "El retorno de la consulta debería ser como '%{expected}' pero devolvió '%{actual}'"
13
+ check_last_query_passes: "La consulta debería pasar pero fue '%{actual}' y falló"
14
14
  check_query_fails: "La consulta '%{query}' debería fallar pero pasó"
15
15
  check_query_outputs: "La consulta '%{query}' debería devolver '%{expected}' pero devolvió '%{actual}'"
16
16
  check_query_passes: "La consulta '%{query}' debería pasar pero falló"
17
17
  goal_passed: "El objetivo se cumplió exitosamente"
18
18
  check_queries_match: "Se deben realizar todas las consultas solicitadas"
19
+ check_queries_equal: "Se deben realizar todas las consultas solicitadas"
data/lib/locales/es.yml CHANGED
@@ -5,14 +5,15 @@ es:
5
5
  masked_tempfile_basename: solucion
6
6
  interactive:
7
7
  check_last_query_equals: "La consulta debería ser '%{expected}' pero fue '%{actual}'"
8
- check_last_query_fails: "La consulta debería fallar pero pasó"
9
- check_last_query_matches: "La consulta no cumple con la expresión regular %{regexp}"
8
+ check_last_query_fails: "La consulta debería fallar pero fue '%{actual}' y pasó"
9
+ check_last_query_matches: "La consulta debería cumplir con la expresión regular '%{regexp}' pero fue '%{actual}'"
10
10
  check_last_query_outputs: "La consulta debería devolver '%{expected}' pero devolvió '%{actual}'"
11
- check_last_query_includes: "La consulta debería incluir '%{expected}' pero devolvió '%{actual}'"
12
- check_last_query_like: "La consulta debería ser como '%{expected}' pero devolvió '%{actual}'"
13
- check_last_query_passes: "La consulta debería pasar pero falló"
11
+ check_last_query_output_includes: "El retorno de la consulta debería incluir '%{expected}' pero devolvió '%{actual}'"
12
+ check_last_query_output_like: "El retorno de la consulta debería ser como '%{expected}' pero devolvió '%{actual}'"
13
+ check_last_query_passes: "La consulta debería pasar pero fue '%{actual}' y falló"
14
14
  check_query_fails: "La consulta '%{query}' debería fallar pero pasó"
15
15
  check_query_outputs: "La consulta '%{query}' debería devolver '%{expected}' pero devolvió '%{actual}'"
16
16
  check_query_passes: "La consulta '%{query}' debería pasar pero falló"
17
- check_queries_match: "Se deben realizar todas las consultas solicitadas"
18
17
  goal_passed: "El objetivo se cumplió exitosamente"
18
+ check_queries_match: "Se deben realizar todas las consultas solicitadas"
19
+ check_queries_equal: "Se deben realizar todas las consultas solicitadas"
data/lib/locales/pt.yml CHANGED
@@ -5,14 +5,15 @@ pt:
5
5
  masked_tempfile_basename: solução
6
6
  interactive:
7
7
  check_last_query_equals: "a consulta deve ser '%{expected}' mas foi '%{actual}'"
8
- check_last_query_fails: "a consulta deve falhar, mas passou"
9
- check_last_query_matches: "A consulta não corresponde a regex %{regexp}"
8
+ check_last_query_fails: "a consulta deve falhar, mas foi '%{actual}' e passou"
9
+ check_last_query_matches: "A consulta deve corresponder a regex %{regexp} mas foi '%{actual}'"
10
10
  check_last_query_outputs: "O resultado da consulta deve ser '%{expected}', mas foi '%{actual}'"
11
- check_last_query_includes: "O resultado da consulta deve incluir '%{expected}', mas foi '%{actual}'"
12
- check_last_query_like: "O resultado da consulta deve ser como '%{expected}', mas foi '%{actual}'"
13
- check_last_query_passes: "A consulta deve passar, mas falhou"
11
+ check_last_query_output_includes: "O resultado da consulta deve incluir '%{expected}', mas foi '%{actual}'"
12
+ check_last_query_output_like: "O resultado da consulta deve ser como '%{expected}', mas foi '%{actual}'"
13
+ check_last_query_passes: "A consulta deve passar, mas foi '%{actual}' e falhou"
14
14
  check_query_fails: "a consulta '%{query}' deve falhar, mas passou"
15
15
  check_query_outputs: "a consulta '%{query}' deve ser '%{expected}', mas foi '%{actual}'"
16
16
  check_query_passes: "a consulta '%{query}' deve passar, mas falhou"
17
17
  check_queries_match: "Todas as consultas solicitadas devem ser feitas"
18
+ check_queries_equal: "Todas as consultas solicitadas devem ser feitas"
18
19
  goal_passed: "O objetivo foi alcançado com sucesso"
@@ -8,15 +8,19 @@ class Mumukit::Explainer
8
8
  private
9
9
 
10
10
  def explanations(content, test_results)
11
+ eval_explain_methods(content, test_results)
12
+ .map { |explain| I18n.t(explain[:key], **explain[:binding]) }
13
+ end
14
+
15
+ def eval_explain_methods(content, test_results)
11
16
  explain_methods
12
17
  .map { |selector, key| eval_explain(selector, key, content, test_results) }
13
18
  .compact
14
- .map { |explain| I18n.t(explain[:key], explain[:binding]) }
15
19
  end
16
20
 
17
21
  def eval_explain(selector, key, content, test_results)
18
22
  send(selector, content, test_results).try do |it|
19
- {key: key, binding: it}
23
+ {key: key, binding: it.is_a?(Hash) ? it : {}}
20
24
  end
21
25
  end
22
26
 
data/lib/mumukit/hook.rb CHANGED
@@ -7,8 +7,8 @@ class Mumukit::Hook
7
7
  @config = (config||{}).with_indifferent_access
8
8
  end
9
9
 
10
- def t(*args)
11
- I18n.t(*args)
10
+ def t(*args, **kwargs)
11
+ I18n.t(*args, **kwargs)
12
12
  end
13
13
 
14
14
  def method_missing(name, *args, &block)
@@ -14,15 +14,22 @@ module Mumukit::Metatest
14
14
 
15
15
  def check_last_query_matches(_result, goal)
16
16
  regexp = goal[:regexp]
17
- fail_t :check_last_query_matches, regexp: regexp.inspect unless query.match?(regexp)
17
+ actual = query
18
+ fail_t :check_last_query_matches, regexp: regexp.inspect, actual: actual unless query.match?(regexp)
18
19
  end
19
20
 
20
21
  def check_last_query_fails(result, _goal)
21
- fail_t :check_last_query_fails unless result[:query][:status].failed?
22
+ actual = query
23
+ fail_t :check_last_query_fails, actual: actual unless result[:query][:status].failed?
24
+ end
25
+
26
+ def check_queries_equal(result, goal)
27
+ fail_t :check_queries_equal unless goal[:values].all? do |regexp|
28
+ queries.any? { |query| query == regexp }
29
+ end
22
30
  end
23
31
 
24
32
  def check_queries_match(result, goal)
25
- queries = [query] + @request.cookie.to_a
26
33
  fail_t :check_queries_match unless goal[:regexps].all? do |regexp|
27
34
  queries.any? { |query| query.match? regexp }
28
35
  end
@@ -47,7 +54,8 @@ module Mumukit::Metatest
47
54
  end
48
55
 
49
56
  def check_last_query_passes(result, _goal)
50
- fail_t :check_last_query_passes unless result[:query][:status].passed?
57
+ actual = query
58
+ fail_t :check_last_query_passes, actual: actual unless result[:query][:status].passed?
51
59
  end
52
60
 
53
61
  def check_query_passes(result, goal)
@@ -68,8 +76,8 @@ module Mumukit::Metatest
68
76
  I18n.t locale(:goal_passed)
69
77
  end
70
78
 
71
- def fail_t(sym, *args)
72
- fail I18n.t locale(sym), *args
79
+ def fail_t(sym, **kwargs)
80
+ fail I18n.t(locale(sym), **kwargs)
73
81
  end
74
82
 
75
83
  def locale(sym)
@@ -83,8 +91,30 @@ module Mumukit::Metatest
83
91
  private
84
92
 
85
93
  def query
86
- query_s = @request.query.to_s
87
- @strip_mode == :right_only ? query_s.rstrip : query_s.strip
94
+ strip @request.query.to_s
95
+ end
96
+
97
+ def cookie
98
+ @request.cookie.to_a.map { |it| strip it }
99
+ end
100
+
101
+ def strip(string)
102
+ case strip_mode
103
+ when :strict then string
104
+ when :right_only then string.rstrip
105
+ when :right_and_internal then string.rstrip.squeeze(' ')
106
+ when :left_and_right then string.strip
107
+ when :left_right_and_internal then string.strip.squeeze(' ')
108
+ else raise "Unsupported strip mode #{@strip_mode}"
109
+ end
110
+ end
111
+
112
+ def queries
113
+ @queries ||= [query] + cookie
114
+ end
115
+
116
+ def strip_mode
117
+ @request.dig(:settings, :interactive_strip_mode) || @strip_mode
88
118
  end
89
119
  end
90
120
  end
@@ -1,3 +1,3 @@
1
1
  module Mumukit
2
- VERSION = '2.43.0'
2
+ VERSION = '2.45.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mumukit
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.43.0
4
+ version: 2.45.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Franco Leonardo Bulgarelli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-21 00:00:00.000000000 Z
11
+ date: 2023-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '12.3'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '12.3'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -126,16 +126,22 @@ dependencies:
126
126
  name: i18n
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0.7'
132
+ - - "<"
133
+ - !ruby/object:Gem::Version
134
+ version: '2'
132
135
  type: :runtime
133
136
  prerelease: false
134
137
  version_requirements: !ruby/object:Gem::Requirement
135
138
  requirements:
136
- - - "~>"
139
+ - - ">="
137
140
  - !ruby/object:Gem::Version
138
141
  version: '0.7'
142
+ - - "<"
143
+ - !ruby/object:Gem::Version
144
+ version: '2'
139
145
  - !ruby/object:Gem::Dependency
140
146
  name: puma
141
147
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +162,14 @@ dependencies:
156
162
  requirements:
157
163
  - - "~>"
158
164
  - !ruby/object:Gem::Version
159
- version: '1.25'
165
+ version: '2.0'
160
166
  type: :runtime
161
167
  prerelease: false
162
168
  version_requirements: !ruby/object:Gem::Requirement
163
169
  requirements:
164
170
  - - "~>"
165
171
  - !ruby/object:Gem::Version
166
- version: '1.25'
172
+ version: '2.0'
167
173
  - !ruby/object:Gem::Dependency
168
174
  name: excon
169
175
  requirement: !ruby/object:Gem::Requirement
@@ -246,28 +252,28 @@ dependencies:
246
252
  requirements:
247
253
  - - "~>"
248
254
  - !ruby/object:Gem::Version
249
- version: '1.3'
255
+ version: '1.20'
250
256
  type: :runtime
251
257
  prerelease: false
252
258
  version_requirements: !ruby/object:Gem::Requirement
253
259
  requirements:
254
260
  - - "~>"
255
261
  - !ruby/object:Gem::Version
256
- version: '1.3'
262
+ version: '1.20'
257
263
  - !ruby/object:Gem::Dependency
258
264
  name: mumukit-directives
259
265
  requirement: !ruby/object:Gem::Requirement
260
266
  requirements:
261
267
  - - "~>"
262
268
  - !ruby/object:Gem::Version
263
- version: '0.4'
269
+ version: '0.6'
264
270
  type: :runtime
265
271
  prerelease: false
266
272
  version_requirements: !ruby/object:Gem::Requirement
267
273
  requirements:
268
274
  - - "~>"
269
275
  - !ruby/object:Gem::Version
270
- version: '0.4'
276
+ version: '0.6'
271
277
  - !ruby/object:Gem::Dependency
272
278
  name: mumukit-content-type
273
279
  requirement: !ruby/object:Gem::Requirement
@@ -368,14 +374,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
368
374
  requirements:
369
375
  - - ">="
370
376
  - !ruby/object:Gem::Version
371
- version: '0'
377
+ version: '3.0'
372
378
  required_rubygems_version: !ruby/object:Gem::Requirement
373
379
  requirements:
374
380
  - - ">="
375
381
  - !ruby/object:Gem::Version
376
382
  version: '0'
377
383
  requirements: []
378
- rubygems_version: 3.0.3
384
+ rubygems_version: 3.4.10
379
385
  signing_key:
380
386
  specification_version: 4
381
387
  summary: Mumuki Test Server Development Kit