mumukit 2.18.1 → 2.19.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
  SHA256:
3
- metadata.gz: 659899e2dc58610a3f7e719e40d37cec27036e9fac9efcb9faee18fbc6ea50c0
4
- data.tar.gz: ccf516286aac773ca9dc6d5bd606f02df3a9defa01831c0024393254a243ff94
3
+ metadata.gz: 95ed79f89e4fde9393a7d6399f76ec3121454fe95b12f3b985356e6639531c16
4
+ data.tar.gz: c4d389a3719496b384e18d537b9bec25620f3600ed6d1685de9250588e8ccabe
5
5
  SHA512:
6
- metadata.gz: 884a8ff595db7f16443537c457c11a160747ba3002687fbe30d1292b0cec3d237385d7c328111d423097696a040dc36ef8e330e50f5e8c9c92e7f5f80922ffa1
7
- data.tar.gz: 026858365c740fe5175791e1c7555ec249f7d8aa782b270b1590217809c2b6622bf309f7e7a1cad4bf1503e2a9c438f27aa3745968903ec027539444e1f2196e
6
+ metadata.gz: 9b326efa5b3b4583b5973aaf502b0cfc9b1279c1544df7fd1340fa1eb4d44b7ea6788ec34bc2a15ec4dd2c3160b845dc6bbe2227a10ede34e7f24d92acf9ee1e
7
+ data.tar.gz: c2f2f53456a181f928a3bfa2dd5575d5b414477d9ac6b0bf4f6e35739f52bb927469647e56c11bbc3270d63c75d9ab2c8e809874662ea42f9d8df41833efa24e
@@ -8,6 +8,8 @@ en:
8
8
  check_last_query_fails: "query should fail but it passed"
9
9
  check_last_query_matches: "query does not match regex %{regex}"
10
10
  check_last_query_outputs: "query output should be '%{expected}' but was '%{actual}'"
11
+ check_last_query_includes: "query output should include '%{expected}' but was '%{actual}'"
12
+ check_last_query_like: "query output should be like '%{expected}' but was '%{actual}'"
11
13
  check_last_query_passes: "query should pass but it failed"
12
14
  check_query_fails: "query '%{query}' should fail but it passed"
13
15
  check_query_outputs: "query '%{query}' output should be '%{expected}' but was '%{actual}'"
@@ -8,6 +8,8 @@ es:
8
8
  check_last_query_fails: "La consulta debería fallar pero pasó"
9
9
  check_last_query_matches: "La consulta no cumple con la expresión regular %{regex}"
10
10
  check_last_query_outputs: "La consulta debería devolver '%{expected}' pero devolvió '%{actual}'"
11
+ check_last_query_includes: "La consulta debería incluir '%{expected}' pero devolvió '%{actual}'"
12
+ check_last_query_like: "La consulta debería ser como '%{expected}' pero devolvió '%{actual}'"
11
13
  check_last_query_passes: "La consulta debería pasar pero falló"
12
14
  check_query_fails: "La consulta '%{query}' debería fallar pero pasó"
13
15
  check_query_outputs: "La consulta '%{query}' debería devolver '%{expected}' pero devolvió '%{actual}'"
@@ -9,5 +9,6 @@ require_relative './defaults/default_query_hook'
9
9
  require_relative './defaults/default_feedback_hook'
10
10
  require_relative './defaults/default_validation_hook'
11
11
  require_relative './defaults/default_test_hook'
12
+ require_relative './defaults/default_precompile_hook'
12
13
  require_relative './defaults/default_try_hook'
13
- require_relative './defaults/default_metadata_hook'
14
+ require_relative './defaults/default_metadata_hook'
@@ -0,0 +1,5 @@
1
+ class Mumukit::Defaults::PrecompileHook < Mumukit::Hook
2
+ def compile(request)
3
+ request
4
+ end
5
+ end
@@ -21,9 +21,21 @@ module Mumukit::Metatest
21
21
  end
22
22
 
23
23
  def check_last_query_outputs(result, goal)
24
+ compare_last_query_by(:check_last_query_outputs, result, goal) { |expected, actual| expected == actual }
25
+ end
26
+
27
+ def check_last_query_output_includes(result, goal)
28
+ compare_last_query_by(:check_last_query_output_includes, result, goal) { |expected, actual| actual.include? expected }
29
+ end
30
+
31
+ def check_last_query_output_like(result, goal)
32
+ compare_last_query_by(:check_last_query_output_like, result, goal) { |expected, actual| normalize(expected) == normalize(actual) }
33
+ end
34
+
35
+ def compare_last_query_by(sym, result, goal, &condition)
24
36
  expected = goal[:output]
25
37
  actual = result[:query][:result]
26
- fail_t :check_last_query_outputs, expected: expected, actual: actual unless expected == actual
38
+ fail_t sym, expected: expected, actual: actual unless condition.call expected, actual
27
39
  end
28
40
 
29
41
  def check_last_query_passes(result, _goal)
@@ -55,5 +67,10 @@ module Mumukit::Metatest
55
67
  def locale(sym)
56
68
  'mumukit.interactive.' + sym.to_s
57
69
  end
70
+
71
+ def normalize(a_string)
72
+ a_string.delete(" \t\r\n").downcase
73
+ end
74
+
58
75
  end
59
76
  end
@@ -10,6 +10,7 @@ module Mumukit::RuntimeInfo
10
10
  output_content_type: Mumukit.config.content_type,
11
11
  comment_type: Mumukit.config.comment_type,
12
12
  features: {
13
+ precompile: precompile_hook?,
13
14
  query: query_hook?,
14
15
  try: try_hook?,
15
16
  expectations: expectations_hook?,
@@ -91,7 +91,7 @@ class Mumukit::Server::TestServer
91
91
  end
92
92
 
93
93
  def preprocess(request)
94
- Mumukit.directives_pipeline.transform(request)
94
+ runtime.precompile_hook.compile Mumukit.directives_pipeline.transform(request)
95
95
  end
96
96
 
97
97
  def validate_request!(request)
@@ -8,7 +8,7 @@ module Mumukit
8
8
  OBJECT_ORIENTED_SMELLS = %w(DoesNullTest ReturnsNull)
9
9
  IMPERATIVE_SMELLS = %w(HasRedundantLocalVariableReturn HasAssignmentReturn)
10
10
  EXPRESSIVENESS_SMELLS = %w(HasTooShortBindings HasWrongCaseBindings HasMisspelledBindings)
11
- GENERIC_SMELLS = %w(IsLongCode HasCodeDuplication HasRedundantLambda HasRedundantIf DoesTypeTest HasRedundantBooleanComparison)
11
+ GENERIC_SMELLS = %w(IsLongCode HasCodeDuplication HasRedundantLambda HasRedundantIf DoesTypeTest HasRedundantBooleanComparison HasEmptyIfBranches)
12
12
 
13
13
  required :language, 'You have to provide a Mulang-compatible language in order to use this hook'
14
14
 
@@ -1,3 +1,3 @@
1
1
  module Mumukit
2
- VERSION = '2.18.1'
2
+ VERSION = '2.19.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.18.1
4
+ version: 2.19.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-12-19 00:00:00.000000000 Z
11
+ date: 2018-01-15 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/defaults/default_expectations_hook.rb
264
264
  - lib/mumukit/defaults/default_feedback_hook.rb
265
265
  - lib/mumukit/defaults/default_metadata_hook.rb
266
+ - lib/mumukit/defaults/default_precompile_hook.rb
266
267
  - lib/mumukit/defaults/default_query_hook.rb
267
268
  - lib/mumukit/defaults/default_test_hook.rb
268
269
  - lib/mumukit/defaults/default_try_hook.rb
@@ -328,7 +329,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
328
329
  version: '0'
329
330
  requirements: []
330
331
  rubyforge_project:
331
- rubygems_version: 2.7.3
332
+ rubygems_version: 2.7.4
332
333
  signing_key:
333
334
  specification_version: 4
334
335
  summary: Mumuki Test Server Development Kit