mumukit 2.15.0 → 2.16.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 +10 -0
- data/lib/locales/es.yml +10 -0
- data/lib/mumukit/metatest/interactive_checker.rb +59 -0
- data/lib/mumukit/metatest.rb +1 -0
- data/lib/mumukit/templates/try_hook.rb +13 -0
- data/lib/mumukit/templates.rb +1 -0
- data/lib/mumukit/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2385b764d50cfcc1500bf1035c82ee3507ac8e7e
|
|
4
|
+
data.tar.gz: f2a39579c74c57ab8dbb46fc1119f940e5dc6628
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d19763bc5427c022cb87c53295385554577660f36055d5492c0b2275ac5816b7b9f923686a333f615b2b629100b956fd80bdf3de847b9d1aa300560c51cc94b9
|
|
7
|
+
data.tar.gz: 34d165839699d3a63a645be24da7746ec5d4270ce323dbaf0ca41e6753f60d35da6b9b89aa5f0f63864ebab9016cd83530d655de1d83f1a7630c7bd11866da49
|
data/lib/locales/en.yml
CHANGED
|
@@ -3,3 +3,13 @@ en:
|
|
|
3
3
|
memory_exceeded: Memory limit exceeded. Is your program trying to allocate to much memory?
|
|
4
4
|
time_exceeded: Execution time limit of %{limit}s exceeded. Is your program performing an infinite loop or recursion?
|
|
5
5
|
masked_tempfile_basename: solution
|
|
6
|
+
interactive:
|
|
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 regex %{regex}"
|
|
10
|
+
check_last_query_outputs: "query output should be '%{expected}' but was '%{actual}'"
|
|
11
|
+
check_last_query_passes: "query should pass but it failed"
|
|
12
|
+
check_query_fails: "query '%{query}' should fail but it passed"
|
|
13
|
+
check_query_outputs: "query '%{query}' output should be '%{expected}' but was '%{actual}'"
|
|
14
|
+
check_query_passes: "query '%{query}' should pass but it failed"
|
|
15
|
+
goal_passed: "goal was met successfully"
|
data/lib/locales/es.yml
CHANGED
|
@@ -3,3 +3,13 @@ es:
|
|
|
3
3
|
memory_exceeded: Limite de memoria excedido. ¿Tu programa está alocando demasiada memoria?
|
|
4
4
|
time_exceeded: Limite de tiempo de ejecución de %{limit}s excedido. ¿Tu programa tiene recursión o bucle infinito?
|
|
5
5
|
masked_tempfile_basename: solucion
|
|
6
|
+
interactive:
|
|
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 %{regex}"
|
|
10
|
+
check_last_query_outputs: "La consulta debería devolver '%{expected}' pero devolvió '%{actual}'"
|
|
11
|
+
check_last_query_passes: "La consulta debería pasar pero falló"
|
|
12
|
+
check_query_fails: "La consulta '%{query}' debería fallar pero pasó"
|
|
13
|
+
check_query_outputs: "La consulta '%{query}' debería devolver '%{expected}' pero devolvió '%{actual}'"
|
|
14
|
+
check_query_passes: "La consulta '%{query}' debería pasar pero falló"
|
|
15
|
+
goal_passed: "El objetivo se cumplió exitosamente"
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
module Mumukit::Metatest
|
|
2
|
+
class InteractiveChecker < Checker
|
|
3
|
+
|
|
4
|
+
def initialize(request)
|
|
5
|
+
@request = request
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def check_last_query_equals(_result, goal)
|
|
9
|
+
expected = goal[:query]
|
|
10
|
+
actual = @request.query
|
|
11
|
+
fail_t :check_last_query_equals, expected: expected, actual: actual unless expected == actual
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def check_last_query_matches(_result, goal)
|
|
15
|
+
regex = goal[:regex]
|
|
16
|
+
fail_t :check_last_query_matches, regex: regex.inspect unless regex.matches? @request.query
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def check_last_query_fails(result, _goal)
|
|
20
|
+
fail_t :check_last_query_fails unless result[:query][:status] == :failed
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def check_last_query_outputs(result, goal)
|
|
24
|
+
expected = goal.with_indifferent_access[:output]
|
|
25
|
+
actual = result[:query][:result]
|
|
26
|
+
fail_t :check_last_query_outputs, expected: expected, actual: actual unless expected == actual
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def check_last_query_passes(result, _goal)
|
|
30
|
+
fail_t :check_last_query_passes unless result[:query][:status] == :passed
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def check_query_passes(result, goal)
|
|
34
|
+
fail_t :check_query_passes, query: goal.with_indifferent_access[:query] unless result[:status] == :passed
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def check_query_fails(result, goal)
|
|
38
|
+
fail_t :check_query_fails, query: goal.with_indifferent_access[:query] unless result[:status] == :failed
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def check_query_outputs(result, goal)
|
|
42
|
+
expected = goal.with_indifferent_access[:output]
|
|
43
|
+
actual = result[:goal]
|
|
44
|
+
fail_t :check_query_outputs, query: goal.with_indifferent_access[:query], expected: expected, actual: actual unless expected == actual
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def render_success_output(_value)
|
|
48
|
+
I18n.t locale(:goal_passed)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def fail_t(sym, *args)
|
|
52
|
+
fail I18n.t locale(sym), *args
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def locale(sym)
|
|
56
|
+
'mumukit.interactive.' + sym.to_s
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
data/lib/mumukit/metatest.rb
CHANGED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Mumukit
|
|
2
|
+
class Templates::TryHook < Templates::FileHook
|
|
3
|
+
def compile(request)
|
|
4
|
+
@goal = {postconditions: [[request.goal.with_indifferent_access[:kind], request.goal]]}
|
|
5
|
+
@checker = Metatest::InteractiveChecker.new request
|
|
6
|
+
super request
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def check(results)
|
|
10
|
+
@checker.check(results, @goal)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
data/lib/mumukit/templates.rb
CHANGED
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.16.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: 2017-10-
|
|
11
|
+
date: 2017-10-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -263,6 +263,7 @@ files:
|
|
|
263
263
|
- lib/mumukit/metatest/errors.rb
|
|
264
264
|
- lib/mumukit/metatest/framework.rb
|
|
265
265
|
- lib/mumukit/metatest/identity_runner.rb
|
|
266
|
+
- lib/mumukit/metatest/interactive_checker.rb
|
|
266
267
|
- lib/mumukit/request_validation_error.rb
|
|
267
268
|
- lib/mumukit/runner.rb
|
|
268
269
|
- lib/mumukit/runtime.rb
|
|
@@ -277,6 +278,7 @@ files:
|
|
|
277
278
|
- lib/mumukit/templates.rb
|
|
278
279
|
- lib/mumukit/templates/file_hook.rb
|
|
279
280
|
- lib/mumukit/templates/mulang_expectations_hook.rb
|
|
281
|
+
- lib/mumukit/templates/try_hook.rb
|
|
280
282
|
- lib/mumukit/templates/with_code_smells.rb
|
|
281
283
|
- lib/mumukit/templates/with_cookie.rb
|
|
282
284
|
- lib/mumukit/templates/with_embedded_environment.rb
|