iruby 0.5.0 → 0.6.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: 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