iruby 0.5.0 → 0.6.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: 1576475a17c04bbdc5080fede4710cf609c9cfb1268f692e8a11653095c2902b
4
- data.tar.gz: 46c737c267739a44dc2a7a9d4ccd5c8d3fcf89fda1b4163e74d941bd0740ec44
3
+ metadata.gz: bc4c6b99aa811b7b1e6bf3e845c7dfa023dc26ce929dbc284836081d422c4b5f
4
+ data.tar.gz: f68c0f62665ec6bb302e460885ca6e54e93f7102b3cdf699cb67143155a6181a
5
5
  SHA512:
6
- metadata.gz: 0225f7c54c11dc9668d6bbceff3dac9ba6e1d32e041355ab429b7f6b0bc204f8050f3420dfede65474614c259e7dba346db051f5414be5fb1fd2dffd9b5de894
7
- data.tar.gz: 803cbe952a48614e1d7aeefef51f772c4420aeb07bf63a679384147fe12f10469380d733834126d206342a2c6a01d7d57d6202b8d64bd90921cd3825684d22c3
6
+ metadata.gz: 2de933258f837300d49209e51140276d9373ab6497c716cfe590d8e9e989d89a7e8e12410e4275c20d065e0fdfe1221c88074eb172bcadbab07c58077009d118
7
+ data.tar.gz: 3dfa8d4abbe218873e42626056d68bc24e2372f153f18316eb152ce08aa1f95c68b301cb41f7cf154ae8b5bb94324e9071296ff67f90325aed5b08dfa123cecd
data/CHANGES CHANGED
@@ -1,3 +1,17 @@
1
+ 0.6.0 (2021-05-25)
2
+
3
+ Bug Fixes:
4
+ * Fix the handling of application/javascript https://github.com/SciRuby/iruby/issues/292, https://github.com/SciRuby/iruby/pull/294 (@kylekyle, @mrkn)
5
+
6
+ Enhancements:
7
+ * Add the `initialized` event in `IRuby::Kernel` class https://github.com/SciRuby/iruby/pull/168, https://github.com/SciRuby/iruby/pull/296 (@Yuki-Inoue, @mrkn)
8
+ * Add the following four events https://github.com/SciRuby/iruby/pull/295 (@mrkn):
9
+ * `pre-execute` -- occurs before every code execution
10
+ * `pre-run-cell` -- occurs before every non-silent code execution
11
+ * `post-execute` -- occurs after every code execution
12
+ * `post-run-cell` -- occurs after every non-silent code execution
13
+ * Replace Bond with IRB in PlainBackend https://github.com/SciRuby/iruby/pull/276, https://github.com/SciRuby/iruby/pull/297 (@cfis, @mrkn)
14
+
1
15
  0.5.0 (2021-03-25)
2
16
 
3
17
  Bug Fixes:
data/iruby.gemspec CHANGED
@@ -17,7 +17,6 @@ Gem::Specification.new do |s|
17
17
 
18
18
  s.required_ruby_version = '>= 2.3.0'
19
19
 
20
- s.add_dependency 'bond', '~> 0.5'
21
20
  s.add_dependency 'data_uri', '~> 0.1'
22
21
  s.add_dependency 'ffi-rzmq'
23
22
  s.add_dependency 'mime-types', '>= 3.3.1'
data/lib/iruby.rb CHANGED
@@ -7,6 +7,7 @@ require 'set'
7
7
 
8
8
  require 'iruby/version'
9
9
  require 'iruby/jupyter'
10
+ require 'iruby/event_manager'
10
11
  require 'iruby/kernel'
11
12
  require 'iruby/backend'
12
13
  require 'iruby/ostream'
data/lib/iruby/backend.rb CHANGED
@@ -3,7 +3,7 @@ module IRuby
3
3
 
4
4
  module History
5
5
  def eval(code, store_history)
6
- b = TOPLEVEL_BINDING
6
+ b = eval_binding
7
7
 
8
8
  b.local_variable_set(:_ih, In) unless b.local_variable_defined?(:_ih)
9
9
  b.local_variable_set(:_oh, Out) unless b.local_variable_defined?(:_oh)
@@ -36,17 +36,27 @@ module IRuby
36
36
  prepend History
37
37
 
38
38
  def initialize
39
- require 'bond'
40
- Bond.start(debug: true)
41
- @eval_path = '(iruby)'
39
+ require 'irb'
40
+ require 'irb/completion'
41
+ IRB.setup(nil)
42
+ @main = TOPLEVEL_BINDING.eval("self").dup
43
+ @workspace = IRB::WorkSpace.new(@main)
44
+ @irb = IRB::Irb.new(@workspace)
45
+ @eval_path = @irb.context.irb_path
46
+ IRB.conf[:MAIN_CONTEXT] = @irb.context
47
+ end
48
+
49
+ def eval_binding
50
+ @workspace.binding
42
51
  end
43
52
 
44
53
  def eval(code, store_history)
45
- TOPLEVEL_BINDING.eval(code, @eval_path, 1)
54
+ @irb.context.evaluate(code, 0)
55
+ @irb.context.last_value
46
56
  end
47
57
 
48
58
  def complete(code)
49
- Bond.agent.call(code, code)
59
+ IRB::InputCompletor::CompletionProc.call(code)
50
60
  end
51
61
  end
52
62
 
@@ -64,6 +74,10 @@ module IRuby
64
74
  reset
65
75
  end
66
76
 
77
+ def eval_binding
78
+ TOPLEVEL_BINDING
79
+ end
80
+
67
81
  def eval(code, store_history)
68
82
  Pry.current_line = 1
69
83
  @pry.last_result = nil
@@ -96,7 +110,7 @@ module IRuby
96
110
  end
97
111
 
98
112
  def reset
99
- @pry = Pry.new(output: $stdout, target: TOPLEVEL_BINDING)
113
+ @pry = Pry.new(output: $stdout, target: eval_binding)
100
114
  end
101
115
  end
102
116
  end
data/lib/iruby/display.rb CHANGED
@@ -44,7 +44,18 @@ module IRuby
44
44
  private
45
45
 
46
46
  def protect(mime, data)
47
- MIME::Type.new(mime).ascii? ? data.to_s : [data.to_s].pack('m0')
47
+ ascii?(mime) ? data.to_s : [data.to_s].pack('m0')
48
+ end
49
+
50
+ def ascii?(mime)
51
+ case mime
52
+ when "application/javascript"
53
+ # Special case for application/javascript.
54
+ # This needs because mime-types tells us application/javascript a non-text type.
55
+ true
56
+ else
57
+ MIME::Type.new(mime).ascii?
58
+ end
48
59
  end
49
60
 
50
61
  def render(data, obj, exact_mime, fuzzy_mime)
@@ -0,0 +1,40 @@
1
+ module IRuby
2
+ class EventManager
3
+ def initialize(available_events)
4
+ @available_events = available_events.dup.freeze
5
+ @callbacks = available_events.map {|n| [n, []] }.to_h
6
+ end
7
+
8
+ attr_reader :available_events
9
+
10
+ def register(event, &block)
11
+ check_available_event(event)
12
+ @callbacks[event] << block unless block.nil?
13
+ block
14
+ end
15
+
16
+ def unregister(event, callback)
17
+ check_available_event(event)
18
+ val = @callbacks[event].delete(callback)
19
+ unless val
20
+ raise ArgumentError,
21
+ "Given callable object #{callback} is not registered as a #{event} callback"
22
+ end
23
+ val
24
+ end
25
+
26
+ def trigger(event, *args, **kwargs)
27
+ check_available_event(event)
28
+ @callbacks[event].each do |fn|
29
+ fn.call(*args, **kwargs)
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def check_available_event(event)
36
+ return if @callbacks.key?(event)
37
+ raise ArgumentError, "Unknown event name: #{event}", caller
38
+ end
39
+ end
40
+ end
data/lib/iruby/kernel.rb CHANGED
@@ -1,30 +1,47 @@
1
1
  module IRuby
2
+ ExecutionInfo = Struct.new(:raw_cell, :store_history, :silent)
3
+
2
4
  class Kernel
3
5
  RED = "\e[31m"
4
6
  RESET = "\e[0m"
5
7
 
6
- class<< self
8
+ @events = EventManager.new([:initialized])
9
+
10
+ class << self
11
+ attr_reader :events
7
12
  attr_accessor :instance
8
13
  end
9
14
 
10
15
  attr_reader :session
11
16
 
12
- def initialize(config_file)
17
+ EVENTS = [
18
+ :pre_execute,
19
+ :pre_run_cell,
20
+ :post_run_cell,
21
+ :post_execute
22
+ ].freeze
23
+
24
+ def initialize(config_file, session_adapter_name=nil)
13
25
  @config = MultiJson.load(File.read(config_file))
14
26
  IRuby.logger.debug("IRuby kernel start with config #{@config}")
15
27
  Kernel.instance = self
16
28
 
17
- @session = Session.new(@config)
29
+ @session = Session.new(@config, session_adapter_name)
18
30
  $stdout = OStream.new(@session, :stdout)
19
31
  $stderr = OStream.new(@session, :stderr)
20
32
 
21
33
  init_parent_process_poller
22
34
 
35
+ @events = EventManager.new(EVENTS)
23
36
  @execution_count = 0
24
37
  @backend = create_backend
25
38
  @running = true
39
+
40
+ self.class.events.trigger(:initialized, self)
26
41
  end
27
42
 
43
+ attr_reader :events
44
+
28
45
  def create_backend
29
46
  PryBackend.new
30
47
  rescue Exception => e
@@ -83,8 +100,20 @@ module IRuby
83
100
 
84
101
  def execute_request(msg)
85
102
  code = msg[:content]['code']
86
- @execution_count += 1 if msg[:content]['store_history']
87
- @session.send(:publish, :execute_input, code: code, execution_count: @execution_count)
103
+ store_history = msg[:content]['store_history']
104
+ silent = msg[:content]['silent']
105
+
106
+ @execution_count += 1 if store_history
107
+
108
+ unless silent
109
+ @session.send(:publish, :execute_input, code: code, execution_count: @execution_count)
110
+ end
111
+
112
+ events.trigger(:pre_execute)
113
+ unless silent
114
+ exec_info = ExecutionInfo.new(code, store_history, silent)
115
+ events.trigger(:pre_run_cell, exec_info)
116
+ end
88
117
 
89
118
  content = {
90
119
  status: :ok,
@@ -92,9 +121,10 @@ module IRuby
92
121
  user_expressions: {},
93
122
  execution_count: @execution_count
94
123
  }
124
+
95
125
  result = nil
96
126
  begin
97
- result = @backend.eval(code, msg[:content]['store_history'])
127
+ result = @backend.eval(code, store_history)
98
128
  rescue SystemExit
99
129
  content[:payload] << { source: :ask_exit }
100
130
  rescue Exception => e
@@ -103,6 +133,10 @@ module IRuby
103
133
  content[:status] = :error
104
134
  content[:execution_count] = @execution_count
105
135
  end
136
+
137
+ events.trigger(:post_execute)
138
+ events.trigger(:post_run_cell, result) unless silent
139
+
106
140
  @session.send(:reply, :execute_reply, content)
107
141
  @session.send(:publish, :execute_result,
108
142
  data: Display.display(result),
data/lib/iruby/ostream.rb CHANGED
@@ -46,6 +46,11 @@ module IRuby
46
46
  lines.each { |s| write(s) }
47
47
  end
48
48
 
49
+ # Called by irb
50
+ def set_encoding(extern, intern)
51
+ a = extern
52
+ end
53
+
49
54
  private
50
55
 
51
56
  def build_string
@@ -10,6 +10,10 @@ module IRuby
10
10
  false
11
11
  end
12
12
 
13
+ def self.load_requirements
14
+ # Do nothing
15
+ end
16
+
13
17
  def initialize(config)
14
18
  @config = config
15
19
  end
@@ -37,12 +41,14 @@ module IRuby
37
41
  require_relative 'session_adapter/ffirzmq_adapter'
38
42
  require_relative 'session_adapter/cztop_adapter'
39
43
  require_relative 'session_adapter/pyzmq_adapter'
44
+ require_relative 'session_adapter/test_adapter'
40
45
 
41
46
  def self.select_adapter_class(name=nil)
42
47
  classes = {
43
48
  'ffi-rzmq' => SessionAdapter::FfirzmqAdapter,
44
49
  'cztop' => SessionAdapter::CztopAdapter,
45
50
  # 'pyzmq' => SessionAdapter::PyzmqAdapter
51
+ 'test' => SessionAdapter::TestAdapter,
46
52
  }
47
53
  if (name ||= ENV.fetch('IRUBY_SESSION_ADAPTER', nil))
48
54
  cls = classes[name]
@@ -0,0 +1,49 @@
1
+ require 'iruby/session/mixin'
2
+
3
+ module IRuby
4
+ module SessionAdapter
5
+ class TestAdapter < BaseAdapter
6
+ include IRuby::SessionSerialize
7
+
8
+ DummySocket = Struct.new(:type, :protocol, :host, :port)
9
+
10
+ def initialize(config)
11
+ super
12
+
13
+ unless config['key'].empty? || config['signature_scheme'].empty?
14
+ unless config['signature_scheme'] =~ /\Ahmac-/
15
+ raise "Unknown signature_scheme: #{config['signature_scheme']}"
16
+ end
17
+ digest_algorithm = config['signature_scheme'][/\Ahmac-(.*)\Z/, 1]
18
+ @hmac = OpenSSL::HMAC.new(config['key'], OpenSSL::Digest.new(digest_algorithm))
19
+ end
20
+
21
+ @send_callback = nil
22
+ @recv_callback = nil
23
+ end
24
+
25
+ attr_accessor :send_callback, :recv_callback
26
+
27
+ def send(sock, data)
28
+ unless @send_callback.nil?
29
+ @send_callback.call(sock, unserialize(data))
30
+ end
31
+ end
32
+
33
+ def recv(sock)
34
+ unless @recv_callback.nil?
35
+ serialize(@recv_callback.call(sock))
36
+ end
37
+ end
38
+
39
+ def heartbeat_loop(sock)
40
+ end
41
+
42
+ private
43
+
44
+ def make_socket(type, protocol, host, port)
45
+ DummySocket.new(type, protocol, host, port)
46
+ end
47
+ end
48
+ end
49
+ end
data/lib/iruby/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module IRuby
2
- VERSION = '0.5.0'
2
+ VERSION = '0.6.0'
3
3
  end
data/test/helper.rb CHANGED
@@ -1,10 +1,53 @@
1
1
  require "iruby"
2
+ require "iruby/logger"
3
+ require "json"
4
+ require 'multi_json'
5
+ require "pathname"
2
6
  require "test/unit"
3
7
  require "test/unit/rr"
4
8
  require "tmpdir"
5
9
 
10
+
11
+ IRuby.logger = IRuby::MultiLogger.new(*Logger.new(STDERR, level: Logger::Severity::INFO))
12
+
6
13
  module IRubyTest
7
14
  class TestBase < Test::Unit::TestCase
15
+ def self.startup
16
+ @__config_dir = Dir.mktmpdir("iruby-test")
17
+ @__config_path = Pathname.new(@__config_dir) + "config.json"
18
+ File.write(@__config_path, {
19
+ control_port: 50160,
20
+ shell_port: 57503,
21
+ transport: "tcp",
22
+ signature_scheme: "hmac-sha256",
23
+ stdin_port: 52597,
24
+ hb_port: 42540,
25
+ ip: "127.0.0.1",
26
+ iopub_port: 40885,
27
+ key: "a0436f6c-1916-498b-8eb9-e81ab9368e84"
28
+ }.to_json)
29
+
30
+ @__original_kernel_instance = IRuby::Kernel.instance
31
+ end
32
+
33
+ def self.shutdown
34
+ FileUtils.remove_entry_secure(@__config_dir)
35
+ end
36
+
37
+ def self.test_config_filename
38
+ @__config_path.to_s
39
+ end
40
+
41
+ def teardown
42
+ IRuby::Kernel.instance = @__original_kernel_instance
43
+ end
44
+
45
+ def with_session_adapter(session_adapter_name)
46
+ IRuby::Kernel.new(self.class.test_config_filename, session_adapter_name)
47
+ $stdout = STDOUT
48
+ $stderr = STDERR
49
+ end
50
+
8
51
  def assert_output(stdout=nil, stderr=nil)
9
52
  flunk "assert_output requires a block to capture output." unless block_given?
10
53
 
@@ -0,0 +1,92 @@
1
+ module IRubyTest
2
+ class EventManagerTest < TestBase
3
+ def setup
4
+ @man = IRuby::EventManager.new([:foo, :bar])
5
+ end
6
+
7
+ def test_available_events
8
+ assert_equal([:foo, :bar],
9
+ @man.available_events)
10
+ end
11
+
12
+ sub_test_case("#register") do
13
+ sub_test_case("known event name") do
14
+ def test_register
15
+ fn = ->() {}
16
+ assert_equal(fn,
17
+ @man.register(:foo, &fn))
18
+ end
19
+ end
20
+
21
+ sub_test_case("unknown event name") do
22
+ def test_register
23
+ assert_raise_message("Unknown event name: baz") do
24
+ @man.register(:baz) {}
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ sub_test_case("#unregister") do
31
+ sub_test_case("no event is registered") do
32
+ def test_unregister
33
+ fn = ->() {}
34
+ assert_raise_message("Given callable object #{fn} is not registered as a foo callback") do
35
+ @man.unregister(:foo, fn)
36
+ end
37
+ end
38
+ end
39
+
40
+ sub_test_case("the registered callable is given") do
41
+ def test_unregister
42
+ results = { values: [] }
43
+ fn = ->(a) { values << a }
44
+
45
+ @man.register(:foo, &fn)
46
+
47
+ results[:retval] = @man.unregister(:foo, fn)
48
+
49
+ @man.trigger(:foo, 42)
50
+
51
+ assert_equal({
52
+ values: [],
53
+ retval: fn
54
+ },
55
+ results)
56
+ end
57
+ end
58
+ end
59
+
60
+ sub_test_case("#trigger") do
61
+ sub_test_case("no event is registered") do
62
+ def test_trigger
63
+ assert_nothing_raised do
64
+ @man.trigger(:foo)
65
+ end
66
+ end
67
+ end
68
+
69
+ sub_test_case("some events are registered") do
70
+ def test_trigger
71
+ values = []
72
+ @man.register(:foo) {|a| values << a }
73
+ @man.register(:foo) {|a| values << 10*a }
74
+ @man.register(:foo) {|a| values << 100+a }
75
+
76
+ @man.trigger(:foo, 5)
77
+
78
+ assert_equal([5, 50, 105],
79
+ values)
80
+ end
81
+ end
82
+
83
+ sub_test_case("unknown event name") do
84
+ def test_trigger
85
+ assert_raise_message("Unknown event name: baz") do
86
+ @man.trigger(:baz, 100)
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,153 @@
1
+ require "base64"
2
+
3
+ module IRubyTest
4
+ class KernelTest < TestBase
5
+ def setup
6
+ super
7
+ with_session_adapter("test")
8
+ @kernel = IRuby::Kernel.instance
9
+ end
10
+
11
+ sub_test_case("iruby_initialized event") do
12
+ def setup
13
+ super
14
+ @initialized_kernel = nil
15
+ @callback = IRuby::Kernel.events.register(:initialized) do |kernel|
16
+ @initialized_kernel = kernel
17
+ end
18
+ end
19
+
20
+ def teardown
21
+ IRuby::Kernel.events.unregister(:initialized, @callback)
22
+ end
23
+
24
+ def test_iruby_initialized_event
25
+ with_session_adapter("test")
26
+ assert_same(IRuby::Kernel.instance, @initialized_kernel)
27
+ end
28
+ end
29
+
30
+ def test_execute_request
31
+ obj = Object.new
32
+
33
+ class << obj
34
+ def to_html
35
+ "<b>HTML</b>"
36
+ end
37
+
38
+ def inspect
39
+ "!!! inspect !!!"
40
+ end
41
+ end
42
+
43
+ ::IRubyTest.define_singleton_method(:test_object) { obj }
44
+
45
+ msg_types = []
46
+ execute_reply = nil
47
+ execute_result = nil
48
+ @kernel.session.adapter.send_callback = ->(sock, msg) do
49
+ header = msg[:header]
50
+ content = msg[:content]
51
+ msg_types << header["msg_type"]
52
+ case header["msg_type"]
53
+ when "execute_reply"
54
+ execute_reply = content
55
+ when "execute_result"
56
+ execute_result = content
57
+ end
58
+ end
59
+
60
+ msg = {
61
+ content: {
62
+ "code" => "IRubyTest.test_object",
63
+ "silent" => false,
64
+ "store_history" => false,
65
+ "user_expressions" => {},
66
+ "allow_stdin" => false,
67
+ "stop_on_error" => true,
68
+ }
69
+ }
70
+ @kernel.execute_request(msg)
71
+
72
+ assert_equal({
73
+ msg_types: [ "execute_input", "execute_reply", "execute_result" ],
74
+ execute_reply: {
75
+ status: "ok",
76
+ user_expressions: {},
77
+ },
78
+ execute_result: {
79
+ data: {
80
+ "text/html" => "<b>HTML</b>",
81
+ "text/plain" => "!!! inspect !!!"
82
+ },
83
+ metadata: {},
84
+ }
85
+ },
86
+ {
87
+ msg_types: msg_types,
88
+ execute_reply: {
89
+ status: execute_reply["status"],
90
+ user_expressions: execute_reply["user_expressions"]
91
+ },
92
+ execute_result: {
93
+ data: execute_result["data"],
94
+ metadata: execute_result["metadata"]
95
+ }
96
+ })
97
+ end
98
+
99
+ def test_events_around_of_execute_request
100
+ event_history = []
101
+
102
+ @kernel.events.register(:pre_execute) do
103
+ event_history << :pre_execute
104
+ end
105
+
106
+ @kernel.events.register(:pre_run_cell) do |exec_info|
107
+ event_history << [:pre_run_cell, exec_info]
108
+ end
109
+
110
+ @kernel.events.register(:post_execute) do
111
+ event_history << :post_execute
112
+ end
113
+
114
+ @kernel.events.register(:post_run_cell) do |result|
115
+ event_history << [:post_run_cell, result]
116
+ end
117
+
118
+ msg = {
119
+ content: {
120
+ "code" => "true",
121
+ "silent" => false,
122
+ "store_history" => false,
123
+ "user_expressions" => {},
124
+ "allow_stdin" => false,
125
+ "stop_on_error" => true,
126
+ }
127
+ }
128
+ @kernel.execute_request(msg)
129
+
130
+ msg = {
131
+ content: {
132
+ "code" => "true",
133
+ "silent" => true,
134
+ "store_history" => false,
135
+ "user_expressions" => {},
136
+ "allow_stdin" => false,
137
+ "stop_on_error" => true,
138
+ }
139
+ }
140
+ @kernel.execute_request(msg)
141
+
142
+ assert_equal([
143
+ :pre_execute,
144
+ [:pre_run_cell, IRuby::ExecutionInfo.new("true", false, false)],
145
+ :post_execute,
146
+ [:post_run_cell, true],
147
+ :pre_execute,
148
+ :post_execute
149
+ ],
150
+ event_history)
151
+ end
152
+ end
153
+ end
@@ -1,14 +1,25 @@
1
1
  class IRubyTest::MimeTest < IRubyTest::TestBase
2
2
  sub_test_case("IRuby::Display") do
3
- def test_display_with_mime_type
4
- html = "<b>Bold Text</b>"
3
+ sub_test_case(".display") do
4
+ sub_test_case("with mime type") do
5
+ test("text/html") do
6
+ html = "<b>Bold Text</b>"
5
7
 
6
- obj = Object.new
7
- obj.define_singleton_method(:to_s) { html }
8
+ obj = Object.new
9
+ obj.define_singleton_method(:to_s) { html }
8
10
 
9
- res = IRuby::Display.display(obj, mime: "text/html")
10
- assert_equal({ plain: obj.inspect, html: html },
11
- { plain: res["text/plain"], html: res["text/html"] })
11
+ res = IRuby::Display.display(obj, mime: "text/html")
12
+ assert_equal({ plain: obj.inspect, html: html },
13
+ { plain: res["text/plain"], html: res["text/html"] })
14
+ end
15
+
16
+ test("application/javascript") do
17
+ data = "alert('Hello World!')"
18
+ res = IRuby::Display.display(data, mime: "application/javascript")
19
+ assert_equal(data,
20
+ res["application/javascript"])
21
+ end
22
+ end
12
23
  end
13
24
  end
14
25
 
@@ -38,6 +38,7 @@ module IRubyTest
38
38
  stub(IRuby::SessionAdapter::CztopAdapter).available? { false }
39
39
  stub(IRuby::SessionAdapter::FfirzmqAdapter).available? { false }
40
40
  stub(IRuby::SessionAdapter::PyzmqAdapter).available? { false }
41
+ stub(IRuby::SessionAdapter::TestAdapter).available? { false }
41
42
  assert_raises IRuby::SessionAdapterNotFound do
42
43
  IRuby::Session.new(@session_config)
43
44
  end
data/test/run-test.rb CHANGED
@@ -14,5 +14,6 @@ $LOAD_PATH.unshift(lib_dir.to_s)
14
14
  require_relative "helper"
15
15
 
16
16
  ENV["TEST_UNIT_MAX_DIFF_TARGET_STRING_SIZE"] ||= "10000"
17
+ ENV["IRUBY_TEST_SESSION_ADAPTER_NAME"] ||= "ffi-rzmq"
17
18
 
18
19
  exit Test::Unit::AutoRunner.run(true, test_dir)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Mendler
@@ -9,22 +9,8 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-03-25 00:00:00.000000000 Z
12
+ date: 2021-05-25 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: bond
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - "~>"
19
- - !ruby/object:Gem::Version
20
- version: '0.5'
21
- type: :runtime
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - "~>"
26
- - !ruby/object:Gem::Version
27
- version: '0.5'
28
14
  - !ruby/object:Gem::Dependency
29
15
  name: data_uri
30
16
  requirement: !ruby/object:Gem::Requirement
@@ -168,6 +154,7 @@ files:
168
154
  - lib/iruby/comm.rb
169
155
  - lib/iruby/command.rb
170
156
  - lib/iruby/display.rb
157
+ - lib/iruby/event_manager.rb
171
158
  - lib/iruby/formatter.rb
172
159
  - lib/iruby/input.rb
173
160
  - lib/iruby/input/README.ipynb
@@ -200,6 +187,7 @@ files:
200
187
  - lib/iruby/session_adapter/cztop_adapter.rb
201
188
  - lib/iruby/session_adapter/ffirzmq_adapter.rb
202
189
  - lib/iruby/session_adapter/pyzmq_adapter.rb
190
+ - lib/iruby/session_adapter/test_adapter.rb
203
191
  - lib/iruby/utils.rb
204
192
  - lib/iruby/version.rb
205
193
  - logo/logo-32x32.png
@@ -211,7 +199,9 @@ files:
211
199
  - test/integration_test.rb
212
200
  - test/iruby/backend_test.rb
213
201
  - test/iruby/command_test.rb
202
+ - test/iruby/event_manager_test.rb
214
203
  - test/iruby/jupyter_test.rb
204
+ - test/iruby/kernel_test.rb
215
205
  - test/iruby/mime_test.rb
216
206
  - test/iruby/multi_logger_test.rb
217
207
  - test/iruby/session_adapter/cztop_adapter_test.rb
@@ -248,7 +238,9 @@ test_files:
248
238
  - test/integration_test.rb
249
239
  - test/iruby/backend_test.rb
250
240
  - test/iruby/command_test.rb
241
+ - test/iruby/event_manager_test.rb
251
242
  - test/iruby/jupyter_test.rb
243
+ - test/iruby/kernel_test.rb
252
244
  - test/iruby/mime_test.rb
253
245
  - test/iruby/multi_logger_test.rb
254
246
  - test/iruby/session_adapter/cztop_adapter_test.rb