mumukit 2.24.0 → 2.25.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: a5447e85500689af2b4e3111efa2a49ab2b2d21216d7d19a9b17ecdd1485fe99
4
- data.tar.gz: 81740fbcd74028fae923d4c9a9971205c18e4b76b9fe789e2e2180634fc2b9de
3
+ metadata.gz: 7b81867a9a5abeffe235e31ab9112621032cd9aabe70331164cd04ef9fa9690d
4
+ data.tar.gz: 8a2a5ee8b78adccd927ae4cf6eeb2485500aa97b5a29289a77ae6ff067c767c4
5
5
  SHA512:
6
- metadata.gz: 3c8f894e8dea3708db381805451919696e39438ed1fc016af2bfe3db5e7ffeb6d74be18c5896d842c7567329adc203b206940c29127fdea58de43322d56a65a7
7
- data.tar.gz: 6fd82030a8554bc823b3923f9a40cb8d24b99cacbb459dc1eaa7998284cedbc828bf5b3508d828d4215761d22bb2231e9b2b88c7b68fe9793097167a5c81b4c7
6
+ metadata.gz: 259531cd39aabca42051d6e5e43f2e1a20034aaffb66275073b2554a7f9cb4644bbf9df865b29ef9e1523a566995e85ed3452401e1d7dc0c202682a4a3f4c296
7
+ data.tar.gz: 3fa8093b04df63cbf313d7204fb710a7a566d2ac7a369750d359294c7ef93c1b6c87e4ada07da72adffd88bd0b9f07b10f2d0d431212d00453b208174a954c85
data/lib/mumukit.rb CHANGED
@@ -31,7 +31,7 @@ module Mumukit
31
31
  end
32
32
 
33
33
  class << self
34
- delegate :prefix, :config, :configure, :runtime, :configure_runtime, :directives_pipeline, to: :current_runner
34
+ delegate :prefix, :config, :configure, :reconfigure, :runtime, :configure_runtime, :directives_pipeline, to: :current_runner
35
35
  end
36
36
  end
37
37
 
@@ -48,6 +48,7 @@ Mumukit.configure_defaults do |config|
48
48
  config.command_size_limit = 1024
49
49
  config.process_expectations_on_empty_content = false
50
50
  config.run_test_hook_on_empty_test = false
51
+ config.multifile = false
51
52
  end
52
53
 
53
54
  require 'mumukit/content_type'
@@ -11,6 +11,12 @@ class Mumukit::Runner
11
11
  yield @config
12
12
  end
13
13
 
14
+ def reconfigure(&block)
15
+ @config = nil
16
+ @pipeline = nil
17
+ configure &block
18
+ end
19
+
14
20
  def configure_runtime(config)
15
21
  @runtime = Mumukit::Runtime.new(config)
16
22
  end
@@ -30,17 +36,29 @@ class Mumukit::Runner
30
36
  def new_directives_pipeline
31
37
  if config.preprocessor_enabled
32
38
  Mumukit::Directives::Pipeline.new(
33
- [Mumukit::Directives::Sections.new,
34
- Mumukit::Directives::Interpolations.new('test'),
35
- Mumukit::Directives::Interpolations.new('extra'),
36
- Mumukit::Directives::Interpolations.new('content'),
37
- Mumukit::Directives::Flags.new],
39
+ [new_sections_directive,
40
+ new_interpolations_directive('test'),
41
+ new_interpolations_directive('extra'),
42
+ new_interpolations_directive('content'),
43
+ new_flags_directive],
38
44
  config.comment_type)
39
45
  else
40
46
  Mumukit::Directives::NullPipeline
41
47
  end
42
48
  end
43
49
 
50
+ def new_interpolations_directive(key)
51
+ Mumukit::Directives::Interpolations.new(key)
52
+ end
53
+
54
+ def new_sections_directive
55
+ Mumukit::Directives::Sections.new nest_sections: Mumukit.config.multifile
56
+ end
57
+
58
+ def new_flags_directive
59
+ Mumukit::Directives::Flags.new
60
+ end
61
+
44
62
  def self.default_config
45
63
  @default_config
46
64
  end
@@ -49,4 +67,4 @@ class Mumukit::Runner
49
67
  @default_config ||= OpenStruct.new
50
68
  yield @default_config
51
69
  end
52
- end
70
+ end
@@ -10,17 +10,18 @@ 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?,
14
- query: query_hook?,
15
- try: try_hook?,
16
- expectations: expectations_hook?,
17
- feedback: feedback_hook?,
18
- secure: validation_hook?,
19
- stateful: Mumukit.config.stateful,
20
- preprocessor: Mumukit.config.preprocessor_enabled,
13
+ precompile: precompile_hook?,
14
+ query: query_hook?,
15
+ try: try_hook?,
16
+ expectations: expectations_hook?,
17
+ feedback: feedback_hook?,
18
+ secure: validation_hook?,
19
+ stateful: Mumukit.config.stateful,
20
+ multifile: Mumukit.config.multifile,
21
+ preprocessor: Mumukit.config.preprocessor_enabled,
21
22
 
22
- sandboxed: any_hook_include?([:test, :query], Mumukit::Templates::WithIsolatedEnvironment),
23
- structured: any_hook_include?([:test], Mumukit::Templates::WithStructuredResults) || Mumukit.config.structured
23
+ sandboxed: any_hook_include?([:test, :query], Mumukit::Templates::WithIsolatedEnvironment),
24
+ structured: any_hook_include?([:test], Mumukit::Templates::WithStructuredResults) || Mumukit.config.structured
24
25
  }
25
26
  }
26
27
  end
@@ -10,7 +10,10 @@ class Mumukit::Server::TestServer
10
10
  end
11
11
 
12
12
  def info(url)
13
- runtime.info.merge(runtime.metadata_hook.metadata).merge(url: url)
13
+ runtime.info
14
+ .merge(repo_url: default_repo_url)
15
+ .merge(runtime.metadata_hook.metadata)
16
+ .merge(url: url)
14
17
  end
15
18
 
16
19
  def start_request!(_request)
@@ -114,4 +117,7 @@ class Mumukit::Server::TestServer
114
117
  {exit: :errored, out: content_type.format_exception(e)}
115
118
  end
116
119
 
120
+ def default_repo_url
121
+ "https://github.com/mumuki/mumuki-#{Mumukit.runner_name}-runner"
122
+ end
117
123
  end
@@ -3,8 +3,6 @@ module Mumukit
3
3
  end
4
4
  end
5
5
 
6
- require_relative './templates/file_hook'
7
- require_relative './templates/try_hook'
8
6
  require_relative './templates/with_structured_results'
9
7
  require_relative './templates/with_metatest'
10
8
  require_relative './templates/with_metatest_results'
@@ -12,6 +10,11 @@ require_relative './templates/with_mashup_file_content'
12
10
  require_relative './templates/with_embedded_environment'
13
11
  require_relative './templates/with_isolated_environment'
14
12
  require_relative './templates/with_line_number_offset'
15
- require_relative './templates/mulang_expectations_hook'
13
+ require_relative './templates/with_multiple_files'
16
14
  require_relative './templates/with_code_smells'
17
15
  require_relative './templates/with_cookie'
16
+
17
+ require_relative './templates/file_hook'
18
+ require_relative './templates/try_hook'
19
+ require_relative './templates/mulang_expectations_hook'
20
+ require_relative './templates/multi_file_precompile_hook'
@@ -4,7 +4,6 @@ module Mumukit
4
4
 
5
5
  attr_accessor :request
6
6
 
7
-
8
7
  def compile(request)
9
8
  self.request = request
10
9
  write_tempfile! compile_file_content(request)
@@ -0,0 +1,49 @@
1
+ module Mumukit
2
+ class Templates::MultiFilePrecompileHook < Mumukit::Hook
3
+ include Mumukit::Templates::WithMultipleFiles
4
+
5
+ def compile(request)
6
+ request
7
+ .to_h
8
+ .merge(content: files_content(request))
9
+ .to_struct
10
+ end
11
+
12
+ def main_file
13
+ raise NotImplementedError
14
+ end
15
+
16
+ def consolidate(main_content, files)
17
+ raise NotImplementedError
18
+ end
19
+
20
+ private
21
+
22
+ def files_content(request)
23
+ files = files_of request
24
+ if files.empty?
25
+ no_files_content request
26
+ elsif files.count == 1
27
+ single_file_content files
28
+ else
29
+ multi_file_content files
30
+ end
31
+ end
32
+
33
+ def no_files_content(request)
34
+ request.content
35
+ end
36
+
37
+ def single_file_content(files)
38
+ files.values.first
39
+ end
40
+
41
+ def multi_file_content(files)
42
+ consolidate main_file_content(files), files
43
+ end
44
+
45
+ def main_file_content(files)
46
+ files[main_file] || ''
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,6 @@
1
+ module Mumukit::Templates::WithMultipleFiles
2
+ def files_of(request)
3
+ raise 'You need to enable Mumukit.config.multifile first!' unless Mumukit.config.multifile
4
+ request.content.is_a?(Hash) ? request.content : {}
5
+ end
6
+ end
@@ -1,3 +1,3 @@
1
1
  module Mumukit
2
- VERSION = '2.24.0'
2
+ VERSION = '2.25.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.24.0
4
+ version: 2.25.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: 2018-05-22 00:00:00.000000000 Z
11
+ date: 2018-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -226,14 +226,14 @@ dependencies:
226
226
  requirements:
227
227
  - - "~>"
228
228
  - !ruby/object:Gem::Version
229
- version: '0.3'
229
+ version: '0.4'
230
230
  type: :runtime
231
231
  prerelease: false
232
232
  version_requirements: !ruby/object:Gem::Requirement
233
233
  requirements:
234
234
  - - "~>"
235
235
  - !ruby/object:Gem::Version
236
- version: '0.3'
236
+ version: '0.4'
237
237
  - !ruby/object:Gem::Dependency
238
238
  name: mumukit-content-type
239
239
  requirement: !ruby/object:Gem::Requirement
@@ -303,6 +303,7 @@ files:
303
303
  - lib/mumukit/templates.rb
304
304
  - lib/mumukit/templates/file_hook.rb
305
305
  - lib/mumukit/templates/mulang_expectations_hook.rb
306
+ - lib/mumukit/templates/multi_file_precompile_hook.rb
306
307
  - lib/mumukit/templates/try_hook.rb
307
308
  - lib/mumukit/templates/with_code_smells.rb
308
309
  - lib/mumukit/templates/with_cookie.rb
@@ -312,6 +313,7 @@ files:
312
313
  - lib/mumukit/templates/with_mashup_file_content.rb
313
314
  - lib/mumukit/templates/with_metatest.rb
314
315
  - lib/mumukit/templates/with_metatest_results.rb
316
+ - lib/mumukit/templates/with_multiple_files.rb
315
317
  - lib/mumukit/templates/with_structured_results.rb
316
318
  - lib/mumukit/version.rb
317
319
  - lib/mumukit/with_command_line.rb