mumuki-gobstones-runner 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +5 -13
  2. data/lib/assets_server.rb +37 -0
  3. data/lib/checker.rb +101 -0
  4. data/lib/expectations_hook.rb +8 -96
  5. data/lib/extensions/string.rb +17 -0
  6. data/lib/gobstones.rb +11 -0
  7. data/lib/gobstones/batch.rb +38 -0
  8. data/lib/gobstones/batch_parser.rb +68 -0
  9. data/lib/gobstones/error_builder.rb +6 -0
  10. data/lib/gobstones/example_code_builder.rb +35 -0
  11. data/lib/gobstones_runner.rb +17 -4
  12. data/lib/locales/en.yml +13 -0
  13. data/lib/locales/es.yml +13 -0
  14. data/lib/metadata_hook.rb +29 -7
  15. data/lib/multiple_executions_runner.rb +28 -0
  16. data/lib/precompile_hook.rb +30 -0
  17. data/lib/render/boards.html.erb +58 -0
  18. data/lib/render/editor/editor.css +12 -0
  19. data/lib/render/editor/editor.js +9 -0
  20. data/lib/render/html_board.rb +12 -0
  21. data/lib/render/html_renderer.rb +95 -0
  22. data/lib/render/with_renderer.rb +22 -0
  23. data/lib/test_hook.rb +8 -21
  24. metadata +66 -55
  25. data/lib/assets/boom.png +0 -0
  26. data/lib/stones_spec.rb +0 -21
  27. data/lib/stones_spec/error_message_parser.rb +0 -17
  28. data/lib/stones_spec/example.rb +0 -47
  29. data/lib/stones_spec/gobstones.rb +0 -55
  30. data/lib/stones_spec/hash.rb +0 -5
  31. data/lib/stones_spec/html_board_renderer.rb +0 -77
  32. data/lib/stones_spec/postcondition/expected_boom.rb +0 -55
  33. data/lib/stones_spec/postcondition/expected_final_board.rb +0 -56
  34. data/lib/stones_spec/postcondition/expected_return_value.rb +0 -44
  35. data/lib/stones_spec/postcondition/postcondition.rb +0 -35
  36. data/lib/stones_spec/precondition.rb +0 -26
  37. data/lib/stones_spec/runner.rb +0 -41
  38. data/lib/stones_spec/string.rb +0 -10
  39. data/lib/stones_spec/subject.rb +0 -80
  40. data/lib/stones_spec/version.rb +0 -3
  41. data/lib/stones_spec/with_command_line.rb +0 -7
  42. data/lib/stones_spec/with_gbb_html_rendering.rb +0 -60
  43. data/lib/stones_spec/with_gobstones_css.rb +0 -112
  44. data/lib/stones_spec/with_tempfile.rb +0 -13
  45. data/lib/with_test_parser.rb +0 -8
@@ -1,13 +1,26 @@
1
1
  require 'mumukit'
2
+ require 'erb'
3
+
4
+ I18n.load_translations_path File.join(__dir__, 'locales', '*.yml')
2
5
 
3
6
  Mumukit.runner_name = 'gobstones'
4
7
  Mumukit.configure do |config|
5
- config.structured = true
8
+ config.docker_image = 'mumuki/mumuki-gobstones-worker:1.0'
6
9
  config.content_type = 'html'
10
+ config.structured = true
7
11
  end
8
12
 
9
- require 'active_support/all'
10
- require_relative './stones_spec'
11
- require_relative './test_hook'
13
+ require_relative './gobstones'
14
+ require_relative './extensions/string'
15
+ require_relative './assets_server'
16
+ require_relative './render/with_renderer'
17
+ require_relative './render/html_board'
18
+ require_relative './render/html_renderer'
19
+
20
+ require_relative './multiple_executions_runner'
21
+
12
22
  require_relative './metadata_hook'
23
+ require_relative './precompile_hook'
24
+ require_relative './test_hook'
13
25
  require_relative './expectations_hook'
26
+ require_relative './checker'
@@ -0,0 +1,13 @@
1
+ en:
2
+ actual_board: 'Actual final board'
3
+ check_failed_unexpected_boom: 'The program did BOOM.'
4
+ check_final_board_failed_different_boards: 'A different board was obtained'
5
+ check_error_failed_expected_boom: 'The program was expected to BOOM but a final board was obtained.'
6
+ check_error_failed_another_reason: 'The program was expected to fail by <strong>%{expected_code}</strong>, but it failed by another reason.'
7
+ check_return_failed_different_values: '<strong>%{expected_value}</strong> was expected but <strong>%{actual_value}</strong> was obtained.'
8
+ check_return_failed_no_return: '<strong>%{expected_value}</strong> was expected but no value was obtained.'
9
+ code_no_stones: 'No stones left'
10
+ code_out_of_board: 'Out of board'
11
+ expected_board: 'Expected final board'
12
+ final_board: 'Final board'
13
+ initial_board: 'Initial board'
@@ -0,0 +1,13 @@
1
+ es:
2
+ actual_board: 'Tablero final obtenido'
3
+ check_failed_unexpected_boom: 'El programa hizo BOOM.'
4
+ check_final_board_failed_different_boards: 'Se obtuvo un tablero distinto al esperado.'
5
+ check_error_failed_expected_boom: 'Se esperaba que el programa hiciera BOOM, pero se ejecutó normalmente.'
6
+ check_error_failed_another_reason: 'Se esperaba que el programa hiciera BOOM por <strong>%{expected_code}</strong> pero falló por otro motivo.'
7
+ check_return_failed_different_values: 'Se esperaba <strong>%{expected_value}</strong> pero se obtuvo <strong>%{actual_value}</strong>.'
8
+ check_return_failed_no_return: 'Se esperaba <strong>%{expected_value}</strong> pero no se obtuvo ningún valor.'
9
+ code_no_stones: 'falta de bolitas disponibles'
10
+ code_out_of_board: 'caída del tablero'
11
+ expected_board: 'Tablero final esperado'
12
+ final_board: 'Tablero final'
13
+ initial_board: 'Tablero inicial'
data/lib/metadata_hook.rb CHANGED
@@ -1,16 +1,38 @@
1
1
  class GobstonesMetadataHook < Mumukit::Hook
2
2
  def metadata
3
- {language: {
3
+ {
4
+ language: {
4
5
  name: 'gobstones',
5
6
  icon: {type: 'devicon', name: 'gobstones'},
6
- version: '1.4.1',
7
+ version: 'v1.0.0',
7
8
  extension: 'gbs',
8
9
  ace_mode: 'gobstones',
9
10
  graphic: true
10
- },
11
- test_framework: {
12
- name: 'stones-spec',
13
- test_extension: 'yml'
14
- }}
11
+ },
12
+ layout_assets_urls: {
13
+ js: [
14
+ 'assets/webcomponents.js'
15
+ ],
16
+ html: [
17
+ 'assets/polymer.html',
18
+ 'assets/gs-board.html'
19
+ ]
20
+ },
21
+ editor_assets_urls: {
22
+ js: [
23
+ 'assets/editor/editor.js'
24
+ ],
25
+ html: [
26
+ 'assets/editor/editor.html',
27
+ ],
28
+ css: [
29
+ 'assets/editor/editor.css'
30
+ ]
31
+ },
32
+ test_framework: {
33
+ name: 'metatest',
34
+ test_extension: 'yml'
35
+ }
36
+ }
15
37
  end
16
38
  end
@@ -0,0 +1,28 @@
1
+ module Gobstones
2
+ class MultipleExecutionsRunner
3
+ def run(output, example)
4
+ execution = output[example[:id]]
5
+ execution[:status] = execution[:status].to_sym
6
+
7
+ raise Mumukit::Metatest::Errored, error_message(execution) unless success?(execution)
8
+ execution
9
+ end
10
+
11
+ private
12
+
13
+ def success?(execution)
14
+ [:passed, :runtime_error].include? execution[:status]
15
+ end
16
+
17
+ def error_message(execution)
18
+ return format execution.except(:result).to_json if execution[:status] != :compilation_error
19
+
20
+ error = execution[:result][:finalBoardError]
21
+ format Gobstones.build_error(error)
22
+ end
23
+
24
+ def format(error)
25
+ "<pre>#{error}</pre>"
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,30 @@
1
+ class GobstonesPrecompileHook < Mumukit::Templates::FileHook
2
+ attr_accessor :batch
3
+
4
+ structured true
5
+ isolated true
6
+
7
+ def tempfile_extension
8
+ '.json'
9
+ end
10
+
11
+ def command_line(filename)
12
+ "gobstones-cli --batch #{filename}"
13
+ end
14
+
15
+ def compile(request)
16
+ file = super request
17
+
18
+ struct request.to_h.merge batch: @batch,
19
+ result: run!(file)
20
+ end
21
+
22
+ def compile_file_content(request)
23
+ @batch = Gobstones::BatchParser.parse(request)
24
+ @batch.to_json
25
+ end
26
+
27
+ def post_process_file(_file, result, status)
28
+ [result.parse_as_json, status]
29
+ end
30
+ end
@@ -0,0 +1,58 @@
1
+ <style>
2
+
3
+ .boards-container {
4
+ display: inline-flex;
5
+ }
6
+
7
+ .error-text {
8
+ color: #d9534f;
9
+ }
10
+
11
+ .boom-text {
12
+ margin-top: 20px;
13
+ }
14
+
15
+ .title {
16
+ color: #b4bcc2;
17
+ text-align: left;
18
+ font-family: Arial, Helvetica, sans-serif;
19
+ font-size: 9pt;
20
+ }
21
+
22
+ .board {
23
+ margin: 0 15px;
24
+ }
25
+
26
+ </style>
27
+
28
+ <% if @result[:error] %>
29
+ <p class="error-text">
30
+ <%=I18n.t @result[:error], @result %>
31
+ </p>
32
+ <% end %>
33
+
34
+ <div class="boards-container">
35
+
36
+ <% @result[:boards].each do |it| %>
37
+ <div class="board">
38
+ <p class="title"><%=I18n.t it.title %></p>
39
+ <p>
40
+ <% if it.board.boom %>
41
+ <img src="<%= @boom_image %>" />
42
+ <% else %>
43
+ <gs-board>
44
+ <%= it.board.gbb %>
45
+ </gs-board>
46
+ <% end %>
47
+ </p>
48
+ </div>
49
+ <% end %>
50
+
51
+ </div>
52
+
53
+ <% if @result[:reason] %>
54
+ <div class="boom-text">
55
+ <strong>BOOM</strong>
56
+ <pre><%=@result[:reason]%></pre>
57
+ </div>
58
+ <% end %>
@@ -0,0 +1,12 @@
1
+ #blocklyDiv {
2
+ height: 400px !important;
3
+ width: 555px !important;
4
+ }
5
+
6
+ .blocklyTrash {
7
+ display: none;
8
+ }
9
+
10
+ .blocklyZoom {
11
+ display: none;
12
+ }
@@ -0,0 +1,9 @@
1
+ $(document).ready(() => {
2
+ $("#custom-editor").html("<gs-element-blockly />");
3
+
4
+ const blockly = $("gs-element-blockly")[0];
5
+
6
+ blockly.workspace.addChangeListener(() => {
7
+ $("#custom-editor-value")[0].value = blockly.generateCode();
8
+ });
9
+ });
@@ -0,0 +1,12 @@
1
+ require "base64"
2
+
3
+ module Gobstones
4
+ class HtmlBoard
5
+ attr_reader :gbb, :boom
6
+
7
+ def initialize(board, boom = false)
8
+ @gbb = board[:table][:gbb]
9
+ @boom = boom
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,95 @@
1
+ require "base64"
2
+
3
+ module Gobstones
4
+ class HtmlRenderer
5
+ def initialize(options)
6
+ @options = options
7
+ @boom_image = encode_image_png 'boom'
8
+ end
9
+
10
+ def render_success(result)
11
+ bind_result boards: prepare_boards([:initial, :final], result),
12
+ reason: prepare_reason(result[:reason])
13
+ end
14
+
15
+ def render_error_check_final_board_failed_different_boards(result)
16
+ bind_result error: :check_final_board_failed_different_boards,
17
+ boards: prepare_boards([:initial, :expected, :actual], result)
18
+ end
19
+
20
+ def render_error_check_failed_unexpected_boom(result)
21
+ bind_result error: :check_failed_unexpected_boom,
22
+ boards: prepare_boards([:initial, :expected, :actual], result),
23
+ reason: prepare_reason(result[:reason])
24
+ end
25
+
26
+ def render_error_check_error_failed_expected_boom(result)
27
+ bind_result error: :check_error_failed_expected_boom,
28
+ boards: prepare_boards([:initial, :expected, :final], result)
29
+ end
30
+
31
+ def render_error_check_return_failed_no_return(result)
32
+ bind_result error: :check_return_failed_no_return,
33
+ boards: prepare_boards([:initial], result),
34
+ expected_value: result[:expected_value]
35
+ end
36
+
37
+ def render_error_check_return_failed_different_values(result)
38
+ bind_result error: :check_return_failed_different_values,
39
+ boards: prepare_boards([:initial], result),
40
+ expected_value: result[:expected_value],
41
+ actual_value: result[:actual_value]
42
+ end
43
+
44
+ def render_error_check_error_failed_another_reason(result)
45
+ bind_result error: :check_error_failed_another_reason,
46
+ expected_code: I18n.t("code_#{result[:expected_code]}"),
47
+ reason: prepare_reason(result[:reason])
48
+ end
49
+
50
+ private
51
+
52
+ def prepare_reason(reason)
53
+ return unless reason
54
+ Gobstones::build_error(reason)
55
+ end
56
+
57
+ def prepare_boards(names, result)
58
+ visible_names(names, result).map do |it|
59
+ struct title: "#{it}_board".to_sym,
60
+ board: visible_board(result, it)
61
+ end
62
+ end
63
+
64
+ def visible_names(names, result)
65
+ names.reject do |it|
66
+ must_show = @options["show_#{it}_board".to_sym]
67
+ !must_show.nil? && !must_show
68
+ end
69
+ end
70
+
71
+ def visible_board(result, name)
72
+ board = result[name]
73
+
74
+ if board == 'boom'
75
+ HtmlBoard.new(result[:initial], boom: true)
76
+ else
77
+ HtmlBoard.new(board)
78
+ end
79
+ end
80
+
81
+ def encode_image_png(file_name)
82
+ base64 = Base64.strict_encode64 File.read(Gobstones::Board.assets_path_for("htmls/components/#{file_name}.png"))
83
+ "data:image/png;base64,#{base64}"
84
+ end
85
+
86
+ def bind_result(result)
87
+ @result = { boards: [] }.merge result
88
+ template_file.result binding
89
+ end
90
+
91
+ def template_file
92
+ ERB.new File.read("#{__dir__}/boards.html.erb")
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,22 @@
1
+ module Gobstones
2
+ module WithRenderer
3
+ def render_success_output(output)
4
+ result = output[:result]
5
+
6
+ renderer.render_success initial: result[:initialBoard],
7
+ final: result[:finalBoard] || 'boom',
8
+ reason: result[:finalBoardError]
9
+ end
10
+
11
+ def render_error_output(_output, error)
12
+ report = error.parse_as_json
13
+ renderer.send "render_error_#{report[:status]}", report[:result]
14
+ end
15
+
16
+ private
17
+
18
+ def renderer
19
+ @renderer ||= Gobstones::HtmlRenderer.new(@options)
20
+ end
21
+ end
22
+ end
data/lib/test_hook.rb CHANGED
@@ -1,24 +1,11 @@
1
- require 'mumukit'
2
- require 'yaml'
3
-
4
- require_relative 'stones_spec'
5
- require_relative 'with_test_parser'
6
-
7
- class GobstonesTestHook < Mumukit::Hook
8
- include WithTestParser
9
-
10
- def compile(request)
11
- test = parse_test request
12
- test[:source] = "#{request[:content]}\n#{request[:extra]}".strip
13
- test[:check_head_position] = !!test[:check_head_position]
14
- test
15
- end
16
-
17
- def run!(test_definition)
18
- StonesSpec::Gobstones.configure do |config|
19
- config.gbs_command = gobstones_command
1
+ class GobstonesTestHook < Mumukit::Defaults::TestHook
2
+ def run!(request)
3
+ output, status = request.result
4
+
5
+ if status == :passed
6
+ request.batch.run_tests! output
7
+ else
8
+ request.result
20
9
  end
21
-
22
- StonesSpec::Runner.new.run!(test_definition)
23
10
  end
24
11
  end
metadata CHANGED
@@ -1,160 +1,171 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mumuki-gobstones-runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
- - Franco Leonardo Bulgarelli
7
+ - Rodrigo Alfonso
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-28 00:00:00.000000000 Z
11
+ date: 2018-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mumukit
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.5'
19
+ version: '2.19'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.5'
26
+ version: '2.19'
27
27
  - !ruby/object:Gem::Dependency
28
- name: mumukit-inspection
28
+ name: sinatra-cross_origin
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.1'
33
+ version: '0.4'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.1'
40
+ version: '0.4'
41
41
  - !ruby/object:Gem::Dependency
42
- name: ruby-stones
42
+ name: gobstones-board
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.2'
47
+ version: '1.8'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.2'
54
+ version: '1.8'
55
+ - !ruby/object:Gem::Dependency
56
+ name: gobstones-blockly
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.6'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.6'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: bundler
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - ~>
73
+ - - "~>"
60
74
  - !ruby/object:Gem::Version
61
75
  version: '1.7'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - ~>
80
+ - - "~>"
67
81
  - !ruby/object:Gem::Version
68
82
  version: '1.7'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rake
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - ~>
87
+ - - "~>"
74
88
  - !ruby/object:Gem::Version
75
89
  version: '10.0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - ~>
94
+ - - "~>"
81
95
  - !ruby/object:Gem::Version
82
96
  version: '10.0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rspec
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - ~>
101
+ - - "~>"
88
102
  - !ruby/object:Gem::Version
89
103
  version: '3.4'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - ~>
108
+ - - "~>"
95
109
  - !ruby/object:Gem::Version
96
110
  version: '3.4'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: codeclimate-test-reporter
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
- - - ! '>='
115
+ - - ">="
102
116
  - !ruby/object:Gem::Version
103
117
  version: '0'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
- - - ! '>='
122
+ - - ">="
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: mumukit-bridge
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - ~>
129
+ - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: '1.3'
131
+ version: '3.0'
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - ~>
136
+ - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: '1.3'
138
+ version: '3.0'
125
139
  description:
126
140
  email:
127
- - franco@mumuki.org
141
+ - rodri042@gmail.com
128
142
  executables: []
129
143
  extensions: []
130
144
  extra_rdoc_files: []
131
145
  files:
132
- - lib/assets/boom.png
146
+ - lib/assets_server.rb
147
+ - lib/checker.rb
133
148
  - lib/expectations_hook.rb
149
+ - lib/extensions/string.rb
150
+ - lib/gobstones.rb
151
+ - lib/gobstones/batch.rb
152
+ - lib/gobstones/batch_parser.rb
153
+ - lib/gobstones/error_builder.rb
154
+ - lib/gobstones/example_code_builder.rb
134
155
  - lib/gobstones_runner.rb
156
+ - lib/locales/en.yml
157
+ - lib/locales/es.yml
135
158
  - lib/metadata_hook.rb
136
- - lib/stones_spec.rb
137
- - lib/stones_spec/error_message_parser.rb
138
- - lib/stones_spec/example.rb
139
- - lib/stones_spec/gobstones.rb
140
- - lib/stones_spec/hash.rb
141
- - lib/stones_spec/html_board_renderer.rb
142
- - lib/stones_spec/postcondition/expected_boom.rb
143
- - lib/stones_spec/postcondition/expected_final_board.rb
144
- - lib/stones_spec/postcondition/expected_return_value.rb
145
- - lib/stones_spec/postcondition/postcondition.rb
146
- - lib/stones_spec/precondition.rb
147
- - lib/stones_spec/runner.rb
148
- - lib/stones_spec/string.rb
149
- - lib/stones_spec/subject.rb
150
- - lib/stones_spec/version.rb
151
- - lib/stones_spec/with_command_line.rb
152
- - lib/stones_spec/with_gbb_html_rendering.rb
153
- - lib/stones_spec/with_gobstones_css.rb
154
- - lib/stones_spec/with_tempfile.rb
159
+ - lib/multiple_executions_runner.rb
160
+ - lib/precompile_hook.rb
161
+ - lib/render/boards.html.erb
162
+ - lib/render/editor/editor.css
163
+ - lib/render/editor/editor.js
164
+ - lib/render/html_board.rb
165
+ - lib/render/html_renderer.rb
166
+ - lib/render/with_renderer.rb
155
167
  - lib/test_hook.rb
156
- - lib/with_test_parser.rb
157
- homepage: http://github.com/mumuki/mumuki-gobstones-server
168
+ homepage: http://github.com/gobstones/mumuki-gobstones-runner
158
169
  licenses:
159
170
  - MIT
160
171
  metadata: {}
@@ -164,17 +175,17 @@ require_paths:
164
175
  - lib
165
176
  required_ruby_version: !ruby/object:Gem::Requirement
166
177
  requirements:
167
- - - ! '>='
178
+ - - ">="
168
179
  - !ruby/object:Gem::Version
169
180
  version: '0'
170
181
  required_rubygems_version: !ruby/object:Gem::Requirement
171
182
  requirements:
172
- - - ! '>='
183
+ - - ">="
173
184
  - !ruby/object:Gem::Version
174
185
  version: '0'
175
186
  requirements: []
176
187
  rubyforge_project:
177
- rubygems_version: 2.4.5
188
+ rubygems_version: 2.5.1
178
189
  signing_key:
179
190
  specification_version: 4
180
191
  summary: Gobstones Runner for Mumuki