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 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