mumukit 2.15.0 → 2.16.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|