mumukit 2.24.0 → 2.25.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: 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