mumukit 2.40.0 → 2.43.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
  SHA256:
3
- metadata.gz: 7df39585e9af97eafeaa33f6189749ed29458e5a55ab37cf3339ae4200fc3f97
4
- data.tar.gz: 0d272a7e75b9cd754314cdaafac2e3158b3b80374e88099be3633066d0098ef0
3
+ metadata.gz: e040afd28d4d12898e0c213d39b5f5404c7ba05cda3f05875700fb418fc33ddd
4
+ data.tar.gz: be2b5fe4e2240b8056dbb7147a2a6def7a7dfaf7c8d2a0b2b23475f4a5fed83e
5
5
  SHA512:
6
- metadata.gz: 7d7868073a960f5c0476bb8dd09aa84bb3d3aa1427ea1fef0700c4d664778cb40c60a18f6db212fc641e784839913e17ba23863788c393535b186764e2f44cdb
7
- data.tar.gz: ca71c3f73c932143b403e4758e110f1e2f209f15cca3ada46365f95bc4974bef8042939e558ac5e11ef6e280b239dbd5abc48aa836fd8206b6098904b3473141
6
+ metadata.gz: 5fe277900418f475fdfebd7eb9481503bf2f0c5cd83caa8ee6386eacca9d8321810aba13a1ae4eb48cc128a91712fe82abdac244e1b52864680008b6039769ef
7
+ data.tar.gz: 5b3d7125b58decee7c8e74304444191153545f17dce74dfd190f6669aa6016ecca64df515b2ec072693e14f8aed9732b7f68c6c95a2526b82cc8a60bd0482e99
data/lib/locales/en.yml CHANGED
@@ -6,7 +6,7 @@ en:
6
6
  interactive:
7
7
  check_last_query_equals: "query should be '%{expected}' but was '%{actual}'"
8
8
  check_last_query_fails: "query should fail but it passed"
9
- check_last_query_matches: "query does not match regex %{regex}"
9
+ check_last_query_matches: "query does not match regexp %{regexp}"
10
10
  check_last_query_outputs: "query output should be '%{expected}' but was '%{actual}'"
11
11
  check_last_query_includes: "query output should include '%{expected}' but was '%{actual}'"
12
12
  check_last_query_like: "query output should be like '%{expected}' but was '%{actual}'"
@@ -15,3 +15,4 @@ en:
15
15
  check_query_outputs: "query '%{query}' output should be '%{expected}' but was '%{actual}'"
16
16
  check_query_passes: "query '%{query}' should pass but it failed"
17
17
  goal_passed: "goal was met successfully"
18
+ check_queries_match: "All the required queries must be executed"
@@ -6,7 +6,7 @@ es-CL:
6
6
  interactive:
7
7
  check_last_query_equals: "La consulta debería ser '%{expected}' pero fue '%{actual}'"
8
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}"
9
+ check_last_query_matches: "La consulta no cumple con la expresión regular %{regexp}"
10
10
  check_last_query_outputs: "La consulta debería devolver '%{expected}' pero devolvió '%{actual}'"
11
11
  check_last_query_includes: "La consulta debería incluir '%{expected}' pero devolvió '%{actual}'"
12
12
  check_last_query_like: "La consulta debería ser como '%{expected}' pero devolvió '%{actual}'"
@@ -15,3 +15,4 @@ es-CL:
15
15
  check_query_outputs: "La consulta '%{query}' debería devolver '%{expected}' pero devolvió '%{actual}'"
16
16
  check_query_passes: "La consulta '%{query}' debería pasar pero falló"
17
17
  goal_passed: "El objetivo se cumplió exitosamente"
18
+ check_queries_match: "Se deben realizar todas las consultas solicitadas"
data/lib/locales/es.yml CHANGED
@@ -6,7 +6,7 @@ es:
6
6
  interactive:
7
7
  check_last_query_equals: "La consulta debería ser '%{expected}' pero fue '%{actual}'"
8
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}"
9
+ check_last_query_matches: "La consulta no cumple con la expresión regular %{regexp}"
10
10
  check_last_query_outputs: "La consulta debería devolver '%{expected}' pero devolvió '%{actual}'"
11
11
  check_last_query_includes: "La consulta debería incluir '%{expected}' pero devolvió '%{actual}'"
12
12
  check_last_query_like: "La consulta debería ser como '%{expected}' pero devolvió '%{actual}'"
@@ -14,4 +14,5 @@ es:
14
14
  check_query_fails: "La consulta '%{query}' debería fallar pero pasó"
15
15
  check_query_outputs: "La consulta '%{query}' debería devolver '%{expected}' pero devolvió '%{actual}'"
16
16
  check_query_passes: "La consulta '%{query}' debería pasar pero falló"
17
+ check_queries_match: "Se deben realizar todas las consultas solicitadas"
17
18
  goal_passed: "El objetivo se cumplió exitosamente"
data/lib/locales/pt.yml CHANGED
@@ -6,7 +6,7 @@ pt:
6
6
  interactive:
7
7
  check_last_query_equals: "a consulta deve ser '%{expected}' mas foi '%{actual}'"
8
8
  check_last_query_fails: "a consulta deve falhar, mas passou"
9
- check_last_query_matches: "A consulta não corresponde a regex %{regex}"
9
+ check_last_query_matches: "A consulta não corresponde a regex %{regexp}"
10
10
  check_last_query_outputs: "O resultado da consulta deve ser '%{expected}', mas foi '%{actual}'"
11
11
  check_last_query_includes: "O resultado da consulta deve incluir '%{expected}', mas foi '%{actual}'"
12
12
  check_last_query_like: "O resultado da consulta deve ser como '%{expected}', mas foi '%{actual}'"
@@ -14,4 +14,5 @@ pt:
14
14
  check_query_fails: "a consulta '%{query}' deve falhar, mas passou"
15
15
  check_query_outputs: "a consulta '%{query}' deve ser '%{expected}', mas foi '%{actual}'"
16
16
  check_query_passes: "a consulta '%{query}' deve passar, mas falhou"
17
+ check_queries_match: "Todas as consultas solicitadas devem ser feitas"
17
18
  goal_passed: "O objetivo foi alcançado com sucesso"
@@ -7,7 +7,7 @@ module Mumukit
7
7
  end
8
8
 
9
9
  def matches?(result, status)
10
- @status.like?(status) && @regexp.matches?(result)
10
+ @status.like?(status) && @regexp.match?(result)
11
11
  end
12
12
 
13
13
  def sanitize(result)
@@ -11,22 +11,22 @@ module Mumukit
11
11
  dirnames = filenames.map { |it| Pathname.new(it).dirname }.uniq
12
12
 
13
13
  binds = dirnames.map { |it| "#{it}:#{it}" }
14
- volumes = Hash[dirnames.map { |it| [[it, {}]] }]
15
14
 
16
15
  command = yield(*filenames)
17
16
  command = command.split if command.is_a? String
18
17
 
19
- configure_container! command, binds, volumes
18
+ configure_container! command, binds
20
19
  end
21
20
 
22
- def configure_container!(command, binds, volumes)
21
+ def configure_container!(command, binds)
23
22
  self.container = Docker::Container.create(
24
- 'Image' => Mumukit.config.docker_image,
25
- 'Cmd' => command,
26
- 'NetworkDisabled' => true,
27
- 'HostConfig' => {
28
- 'Binds' => binds},
29
- 'Volumes' => volumes)
23
+ image: Mumukit.config.docker_image,
24
+ cmd: command,
25
+ hostConfig: {
26
+ binds: binds,
27
+ pidsLimit: Mumukit.config.pids_limit
28
+ },
29
+ networkDisabled: true)
30
30
  end
31
31
 
32
32
  def run!
@@ -1,25 +1,33 @@
1
1
  module Mumukit::Metatest
2
2
  class InteractiveChecker < Checker
3
3
 
4
- def initialize(request)
4
+ def initialize(request, strip_mode: :left_and_right)
5
5
  @request = request
6
+ @strip_mode = strip_mode
6
7
  end
7
8
 
8
9
  def check_last_query_equals(_result, goal)
9
10
  expected = goal[:value]
10
- actual = @request.query.strip
11
+ actual = query
11
12
  fail_t :check_last_query_equals, expected: expected, actual: actual unless expected == actual
12
13
  end
13
14
 
14
15
  def check_last_query_matches(_result, goal)
15
- regex = goal[:regexp]
16
- fail_t :check_last_query_matches, regex: regex.inspect unless regex.matches? @request.query
16
+ regexp = goal[:regexp]
17
+ fail_t :check_last_query_matches, regexp: regexp.inspect unless query.match?(regexp)
17
18
  end
18
19
 
19
20
  def check_last_query_fails(result, _goal)
20
21
  fail_t :check_last_query_fails unless result[:query][:status].failed?
21
22
  end
22
23
 
24
+ def check_queries_match(result, goal)
25
+ queries = [query] + @request.cookie.to_a
26
+ fail_t :check_queries_match unless goal[:regexps].all? do |regexp|
27
+ queries.any? { |query| query.match? regexp }
28
+ end
29
+ end
30
+
23
31
  def check_last_query_outputs(result, goal)
24
32
  compare_last_query_by(:check_last_query_outputs, result, goal) { |expected, actual| expected == actual }
25
33
  end
@@ -72,5 +80,11 @@ module Mumukit::Metatest
72
80
  a_string.delete(" \t\r\n").downcase
73
81
  end
74
82
 
83
+ private
84
+
85
+ def query
86
+ query_s = @request.query.to_s
87
+ @strip_mode == :right_only ? query_s.rstrip : query_s.strip
88
+ end
75
89
  end
76
90
  end
@@ -4,7 +4,7 @@ module Mumukit
4
4
  request_goal = request.goal.with_indifferent_access
5
5
 
6
6
  @goal = {postconditions: [[request_goal[:kind], request_goal]]}
7
- @checker = Metatest::InteractiveChecker.new request
7
+ @checker = checker_for request
8
8
  super request
9
9
  end
10
10
 
@@ -14,6 +14,14 @@ module Mumukit
14
14
  [check_results[2], check_results[1], structured_results[:query]]
15
15
  end
16
16
 
17
+ def checker_for(request)
18
+ Metatest::InteractiveChecker.new request, **checker_options
19
+ end
20
+
21
+ def checker_options
22
+ {}
23
+ end
24
+
17
25
  required :to_structured_results
18
26
  end
19
27
  end
@@ -1,3 +1,3 @@
1
1
  module Mumukit
2
- VERSION = '2.40.0'
2
+ VERSION = '2.43.0'
3
3
  end
data/lib/mumukit.rb CHANGED
@@ -50,6 +50,7 @@ Mumukit.configure_defaults do |config|
50
50
  config.stateful = false
51
51
  config.command_time_limit = 4
52
52
  config.command_size_limit = 1024
53
+ config.pids_limit = ENV['MUMUKI_PIDS_LIMIT'].defaulting(20, &:to_i)
53
54
  config.process_expectations_on_empty_content = false
54
55
  config.run_test_hook_on_empty_test = false
55
56
  config.multifile = false
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.40.0
4
+ version: 2.43.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: 2021-02-11 00:00:00.000000000 Z
11
+ date: 2022-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 1.22.2
159
+ version: '1.25'
160
160
  type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 1.22.2
166
+ version: '1.25'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: excon
169
169
  requirement: !ruby/object:Gem::Requirement