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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1d90faff6ed9a3dc75481ae50eb13a33e7534df3
4
- data.tar.gz: cecd824e8817692c2481b256fb740fee33167bb5
3
+ metadata.gz: 2385b764d50cfcc1500bf1035c82ee3507ac8e7e
4
+ data.tar.gz: f2a39579c74c57ab8dbb46fc1119f940e5dc6628
5
5
  SHA512:
6
- metadata.gz: 8a67372bcce5e60275187c8558a89ff09aefdbf3ea5ac47bc4b9b1ba081e5bb63b6e248cc3855c0c79150bf82199e2cf201f4d20a727cb4fcc12946c492b6f0e
7
- data.tar.gz: 44292d2572d753421317dd3ae3c5db640ed945290770ff41a5db3cb0702f3ce0d5f94714e1b57aef14c9471ab6aba15a224c0e6a30657823d1b0c7d2d4087cf9
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
@@ -3,5 +3,6 @@ end
3
3
 
4
4
  require_relative './metatest/errors'
5
5
  require_relative './metatest/checker'
6
+ require_relative './metatest/interactive_checker'
6
7
  require_relative './metatest/framework'
7
8
  require_relative './metatest/identity_runner'
@@ -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
@@ -4,6 +4,7 @@ module Mumukit
4
4
  end
5
5
 
6
6
  require_relative './templates/file_hook'
7
+ require_relative './templates/try_hook'
7
8
  require_relative './templates/with_structured_results'
8
9
  require_relative './templates/with_metatest'
9
10
  require_relative './templates/with_metatest_results'
@@ -1,3 +1,3 @@
1
1
  module Mumukit
2
- VERSION = '2.15.0'
2
+ VERSION = '2.16.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.15.0
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-16 00:00:00.000000000 Z
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