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 +4 -4
- data/lib/locales/en.yml +6 -5
- data/lib/locales/es-CL.yml +6 -5
- data/lib/locales/es.yml +7 -6
- data/lib/locales/pt.yml +6 -5
- data/lib/mumukit/explainer.rb +6 -2
- data/lib/mumukit/hook.rb +2 -2
- data/lib/mumukit/metatest/interactive_checker.rb +38 -8
- data/lib/mumukit/version.rb +1 -1
- metadata +20 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4c4daef670d7b72e6a88cea099905e870f6534ba9d7da574323efc941e8e991e
|
|
4
|
+
data.tar.gz: 7293bd7160ff5249f5c06f45f34c4bfb87df2ee24128aefda1dbf421ad6be9cd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
|
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
|
-
|
|
12
|
-
|
|
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"
|
data/lib/locales/es-CL.yml
CHANGED
|
@@ -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
|
|
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
|
-
|
|
12
|
-
|
|
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
|
|
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
|
-
|
|
12
|
-
|
|
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
|
|
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
|
-
|
|
12
|
-
|
|
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"
|
data/lib/mumukit/explainer.rb
CHANGED
|
@@ -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
|
@@ -14,15 +14,22 @@ module Mumukit::Metatest
|
|
|
14
14
|
|
|
15
15
|
def check_last_query_matches(_result, goal)
|
|
16
16
|
regexp = goal[:regexp]
|
|
17
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
72
|
-
fail I18n.t
|
|
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
|
-
|
|
87
|
-
|
|
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
|
data/lib/mumukit/version.rb
CHANGED
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.
|
|
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:
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
384
|
+
rubygems_version: 3.4.10
|
|
379
385
|
signing_key:
|
|
380
386
|
specification_version: 4
|
|
381
387
|
summary: Mumuki Test Server Development Kit
|