iruby 0.7.4 → 0.8.1
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 +4 -4
- data/.github/workflows/ci.yml +102 -86
- data/CHANGES.md +31 -1
- data/Gemfile +5 -0
- data/README.md +19 -9
- data/Rakefile +2 -1
- data/exe/iruby +7 -0
- data/iruby.gemspec +3 -1
- data/lib/iruby/application.rb +380 -0
- data/lib/iruby/backend.rb +24 -3
- data/lib/iruby/comm.rb +6 -6
- data/lib/iruby/display.rb +2 -3
- data/lib/iruby/error.rb +12 -0
- data/lib/iruby/formatter.rb +1 -1
- data/lib/iruby/jupyter.rb +4 -1
- data/lib/iruby/kernel.rb +4 -2
- data/lib/iruby/kernel_app.rb +108 -0
- data/lib/iruby/logger.rb +12 -2
- data/lib/iruby/ostream.rb +1 -1
- data/lib/iruby/session/mixin.rb +2 -2
- data/lib/iruby/session.rb +4 -2
- data/lib/iruby/version.rb +1 -1
- data/test/helper.rb +22 -3
- data/test/integration_test.rb +7 -1
- data/test/iruby/application/application_test.rb +32 -0
- data/test/iruby/application/console_test.rb +97 -0
- data/test/iruby/application/helper.rb +38 -0
- data/test/iruby/application/kernel_test.rb +93 -0
- data/test/iruby/application/register_test.rb +139 -0
- data/test/iruby/application/unregister_test.rb +77 -0
- data/test/iruby/jupyter_test.rb +27 -15
- data/test/iruby/kernel_test.rb +0 -2
- data/test/iruby/multi_logger_test.rb +13 -0
- data/test/run-test.rb +1 -0
- metadata +34 -11
- data/bin/iruby +0 -5
- data/lib/iruby/command.rb +0 -190
- data/test/iruby/command_test.rb +0 -207
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Mendler
|
8
8
|
- The SciRuby developers
|
9
|
-
|
10
|
-
bindir: bin
|
9
|
+
bindir: exe
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2025-02-16 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: data_uri
|
@@ -53,6 +52,20 @@ dependencies:
|
|
53
52
|
- - ">="
|
54
53
|
- !ruby/object:Gem::Version
|
55
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: logger
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
56
69
|
- !ruby/object:Gem::Dependency
|
57
70
|
name: mime-types
|
58
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -167,23 +180,24 @@ files:
|
|
167
180
|
- LICENSE
|
168
181
|
- README.md
|
169
182
|
- Rakefile
|
170
|
-
- bin/iruby
|
171
183
|
- ci/Dockerfile.base.erb
|
172
184
|
- ci/Dockerfile.main.erb
|
173
185
|
- ci/requirements.txt
|
174
186
|
- docker/setup.sh
|
175
187
|
- docker/test.sh
|
188
|
+
- exe/iruby
|
176
189
|
- ext/Rakefile
|
177
190
|
- iruby.gemspec
|
178
191
|
- lib/iruby.rb
|
192
|
+
- lib/iruby/application.rb
|
179
193
|
- lib/iruby/assets/kernel.css
|
180
194
|
- lib/iruby/assets/kernel.js
|
181
195
|
- lib/iruby/assets/logo-32x32.png
|
182
196
|
- lib/iruby/assets/logo-64x64.png
|
183
197
|
- lib/iruby/backend.rb
|
184
198
|
- lib/iruby/comm.rb
|
185
|
-
- lib/iruby/command.rb
|
186
199
|
- lib/iruby/display.rb
|
200
|
+
- lib/iruby/error.rb
|
187
201
|
- lib/iruby/event_manager.rb
|
188
202
|
- lib/iruby/formatter.rb
|
189
203
|
- lib/iruby/input.rb
|
@@ -207,6 +221,7 @@ files:
|
|
207
221
|
- lib/iruby/input/widget.rb
|
208
222
|
- lib/iruby/jupyter.rb
|
209
223
|
- lib/iruby/kernel.rb
|
224
|
+
- lib/iruby/kernel_app.rb
|
210
225
|
- lib/iruby/logger.rb
|
211
226
|
- lib/iruby/ostream.rb
|
212
227
|
- lib/iruby/session.rb
|
@@ -226,8 +241,13 @@ files:
|
|
226
241
|
- tasks/ci.rake
|
227
242
|
- test/helper.rb
|
228
243
|
- test/integration_test.rb
|
244
|
+
- test/iruby/application/application_test.rb
|
245
|
+
- test/iruby/application/console_test.rb
|
246
|
+
- test/iruby/application/helper.rb
|
247
|
+
- test/iruby/application/kernel_test.rb
|
248
|
+
- test/iruby/application/register_test.rb
|
249
|
+
- test/iruby/application/unregister_test.rb
|
229
250
|
- test/iruby/backend_test.rb
|
230
|
-
- test/iruby/command_test.rb
|
231
251
|
- test/iruby/display_test.rb
|
232
252
|
- test/iruby/event_manager_test.rb
|
233
253
|
- test/iruby/jupyter_test.rb
|
@@ -246,7 +266,6 @@ licenses:
|
|
246
266
|
- MIT
|
247
267
|
metadata:
|
248
268
|
msys2_mingw_dependencies: zeromq
|
249
|
-
post_install_message:
|
250
269
|
rdoc_options: []
|
251
270
|
require_paths:
|
252
271
|
- lib
|
@@ -261,15 +280,19 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
261
280
|
- !ruby/object:Gem::Version
|
262
281
|
version: '0'
|
263
282
|
requirements: []
|
264
|
-
rubygems_version: 3.2
|
265
|
-
signing_key:
|
283
|
+
rubygems_version: 3.6.2
|
266
284
|
specification_version: 4
|
267
285
|
summary: Ruby Kernel for Jupyter
|
268
286
|
test_files:
|
269
287
|
- test/helper.rb
|
270
288
|
- test/integration_test.rb
|
289
|
+
- test/iruby/application/application_test.rb
|
290
|
+
- test/iruby/application/console_test.rb
|
291
|
+
- test/iruby/application/helper.rb
|
292
|
+
- test/iruby/application/kernel_test.rb
|
293
|
+
- test/iruby/application/register_test.rb
|
294
|
+
- test/iruby/application/unregister_test.rb
|
271
295
|
- test/iruby/backend_test.rb
|
272
|
-
- test/iruby/command_test.rb
|
273
296
|
- test/iruby/display_test.rb
|
274
297
|
- test/iruby/event_manager_test.rb
|
275
298
|
- test/iruby/jupyter_test.rb
|
data/bin/iruby
DELETED
data/lib/iruby/command.rb
DELETED
@@ -1,190 +0,0 @@
|
|
1
|
-
require 'iruby'
|
2
|
-
|
3
|
-
module IRuby
|
4
|
-
class Command
|
5
|
-
def initialize(args)
|
6
|
-
@args = args
|
7
|
-
|
8
|
-
@ipython_dir = File.expand_path("~/.ipython")
|
9
|
-
@kernel_dir = resolve_kernelspec_dir.freeze
|
10
|
-
@kernel_file = File.join(@kernel_dir, 'kernel.json').freeze
|
11
|
-
@iruby_path = File.expand_path $0
|
12
|
-
end
|
13
|
-
|
14
|
-
attr_reader :ipython_dir, :kernel_dir, :kernel_file
|
15
|
-
|
16
|
-
def ipython_kernel_dir
|
17
|
-
File.join(File.expand_path(@ipython_dir), 'kernels', 'ruby')
|
18
|
-
end
|
19
|
-
|
20
|
-
def run
|
21
|
-
case @args.first
|
22
|
-
when 'version', '-v', '--version'
|
23
|
-
require 'iruby/version'
|
24
|
-
puts "IRuby #{IRuby::VERSION}, Ruby #{RUBY_VERSION}"
|
25
|
-
when 'help', '-h', '--help'
|
26
|
-
print_help
|
27
|
-
when 'register'
|
28
|
-
force_p = @args.include?('--force')
|
29
|
-
if registered_iruby_path && !force_p
|
30
|
-
STDERR.puts "#{@kernel_file} already exists!\nUse --force to force a register."
|
31
|
-
exit 1
|
32
|
-
end
|
33
|
-
register_kernel(force_p)
|
34
|
-
when 'unregister'
|
35
|
-
unregister_kernel
|
36
|
-
when 'kernel'
|
37
|
-
run_kernel
|
38
|
-
else
|
39
|
-
run_ipython
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
private
|
44
|
-
|
45
|
-
def resolve_kernelspec_dir
|
46
|
-
if ENV.has_key?('JUPYTER_DATA_DIR')
|
47
|
-
if ENV.has_key?('IPYTHONDIR')
|
48
|
-
warn 'both JUPYTER_DATA_DIR and IPYTHONDIR are supplied; IPYTHONDIR is ignored.'
|
49
|
-
end
|
50
|
-
if @args.find {|x| /\A--ipython-dir=/ =~ x }
|
51
|
-
warn 'both JUPYTER_DATA_DIR and --ipython-dir are supplied; --ipython-dir is ignored.'
|
52
|
-
end
|
53
|
-
jupyter_data_dir = ENV['JUPYTER_DATA_DIR']
|
54
|
-
return File.join(jupyter_data_dir, 'kernels', 'ruby')
|
55
|
-
end
|
56
|
-
|
57
|
-
if ENV.has_key?('IPYTHONDIR')
|
58
|
-
warn 'IPYTHONDIR is deprecated. Use JUPYTER_DATA_DIR instead.'
|
59
|
-
ipython_dir = ENV['IPYTHONDIR']
|
60
|
-
end
|
61
|
-
|
62
|
-
@args.each do |arg|
|
63
|
-
next unless /\A--ipython-dir=(.*)\Z/ =~ arg
|
64
|
-
ipython_dir = Regexp.last_match[1]
|
65
|
-
warn '--ipython-dir is deprecated. Use JUPYTER_DATA_DIR environment variable instead.'
|
66
|
-
break
|
67
|
-
end
|
68
|
-
|
69
|
-
if ipython_dir
|
70
|
-
@ipython_dir = ipython_dir
|
71
|
-
ipython_kernel_dir
|
72
|
-
else
|
73
|
-
File.join(Jupyter.kernelspec_dir, 'ruby')
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def print_help
|
78
|
-
puts %{
|
79
|
-
Usage:
|
80
|
-
iruby register Register IRuby kernel in #{@kernel_file}.
|
81
|
-
iruby unregister Unregister IRuby kernel.
|
82
|
-
iruby console Launch the IRuby terminal-based console.
|
83
|
-
iruby notebook Launch the IRuby HTML notebook server.
|
84
|
-
... Same as IPython.
|
85
|
-
|
86
|
-
Please note that IRuby accepts the same parameters as IPython.
|
87
|
-
Try `ipython help` for more information.
|
88
|
-
}
|
89
|
-
end
|
90
|
-
|
91
|
-
def run_kernel
|
92
|
-
IRuby.logger = MultiLogger.new(*Logger.new(STDOUT))
|
93
|
-
STDOUT.sync = true # FIXME: This can make the integration test.
|
94
|
-
|
95
|
-
@args.reject! {|arg| arg =~ /\A--log=(.*)\Z/ && IRuby.logger.loggers << Logger.new($1) }
|
96
|
-
IRuby.logger.level = @args.delete('--debug') ? Logger::DEBUG : Logger::INFO
|
97
|
-
|
98
|
-
raise(ArgumentError, 'Not enough arguments to the kernel') if @args.size < 2 || @args.size > 4
|
99
|
-
config_file, boot_file, working_dir = @args[1..-1]
|
100
|
-
Dir.chdir(working_dir) if working_dir
|
101
|
-
|
102
|
-
require boot_file if boot_file
|
103
|
-
check_bundler {|e| IRuby.logger.warn "Could not load bundler: #{e.message}" }
|
104
|
-
|
105
|
-
require 'iruby'
|
106
|
-
Kernel.new(config_file).run
|
107
|
-
rescue Exception => e
|
108
|
-
IRuby.logger.fatal "Kernel died: #{e.message}\n#{e.backtrace.join("\n")}"
|
109
|
-
raise
|
110
|
-
end
|
111
|
-
|
112
|
-
def check_version
|
113
|
-
required = '3.0.0'
|
114
|
-
version = `ipython --version`.chomp
|
115
|
-
if version < required
|
116
|
-
STDERR.puts "Your IPython version #{version} is too old, at least #{required} is required"
|
117
|
-
exit 1
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
def run_ipython
|
122
|
-
# If no command is given, we use the console to launch the whole 0MQ-client-server stack
|
123
|
-
@args = %w(console) + @args if @args.first.to_s !~ /\A\w/
|
124
|
-
@args += %w(--kernel ruby) if %w(console qtconsole).include? @args.first
|
125
|
-
|
126
|
-
check_version
|
127
|
-
check_registered_kernel
|
128
|
-
check_bundler {|e| STDERR.puts "Could not load bundler: #{e.message}" }
|
129
|
-
|
130
|
-
Process.exec('ipython', *@args)
|
131
|
-
end
|
132
|
-
|
133
|
-
def check_registered_kernel
|
134
|
-
if (kernel = registered_iruby_path)
|
135
|
-
STDERR.puts "#{@iruby_path} differs from registered path #{registered_iruby_path}.
|
136
|
-
This might not work. Run 'iruby register --force' to fix it." if @iruby_path != kernel
|
137
|
-
else
|
138
|
-
register_kernel
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
def check_bundler
|
143
|
-
require 'bundler'
|
144
|
-
raise %q{iruby is missing from Gemfile. This might not work.
|
145
|
-
Add `gem 'iruby'` to your Gemfile to fix it.} unless Bundler.definition.specs.any? {|s| s.name == 'iruby' }
|
146
|
-
Bundler.setup
|
147
|
-
rescue LoadError
|
148
|
-
rescue Exception => e
|
149
|
-
yield(e)
|
150
|
-
end
|
151
|
-
|
152
|
-
def register_kernel(force_p=false)
|
153
|
-
if force_p
|
154
|
-
unregister_kernel_in_ipython_dir
|
155
|
-
else
|
156
|
-
return unless check_existing_kernel_in_ipython_dir
|
157
|
-
end
|
158
|
-
FileUtils.mkpath(@kernel_dir)
|
159
|
-
unless RUBY_PLATFORM =~ /mswin(?!ce)|mingw|cygwin/
|
160
|
-
File.write(@kernel_file, MultiJson.dump(argv: [ @iruby_path, 'kernel', '{connection_file}' ],
|
161
|
-
display_name: "Ruby #{RUBY_VERSION}", language: 'ruby'))
|
162
|
-
else
|
163
|
-
ruby_path, iruby_path = [RbConfig.ruby, @iruby_path].map{|path| path.gsub('/', '\\\\')}
|
164
|
-
File.write(@kernel_file, MultiJson.dump(argv: [ ruby_path, iruby_path, 'kernel', '{connection_file}' ],
|
165
|
-
display_name: "Ruby #{RUBY_VERSION}", language: 'ruby'))
|
166
|
-
end
|
167
|
-
|
168
|
-
FileUtils.copy(Dir[File.join(__dir__, 'assets', '*')], @kernel_dir) rescue nil
|
169
|
-
end
|
170
|
-
|
171
|
-
def check_existing_kernel_in_ipython_dir
|
172
|
-
return true unless File.file?(File.join(ipython_kernel_dir, 'kernel.json'))
|
173
|
-
warn "IRuby kernel file already exists in the deprecated IPython's data directory."
|
174
|
-
warn "Using --force, you can replace the old kernel file with the new one in Jupyter's data directory."
|
175
|
-
false
|
176
|
-
end
|
177
|
-
|
178
|
-
def registered_iruby_path
|
179
|
-
File.exist?(@kernel_file) && MultiJson.load(File.read(@kernel_file))['argv'].first
|
180
|
-
end
|
181
|
-
|
182
|
-
def unregister_kernel
|
183
|
-
FileUtils.rm_rf(@kernel_dir)
|
184
|
-
end
|
185
|
-
|
186
|
-
def unregister_kernel_in_ipython_dir
|
187
|
-
FileUtils.rm_rf(ipython_kernel_dir)
|
188
|
-
end
|
189
|
-
end
|
190
|
-
end
|
data/test/iruby/command_test.rb
DELETED
@@ -1,207 +0,0 @@
|
|
1
|
-
require 'iruby/command'
|
2
|
-
|
3
|
-
module IRubyTest
|
4
|
-
class CommandTest < TestBase
|
5
|
-
def test_with_empty_argv
|
6
|
-
with_env('JUPYTER_DATA_DIR' => nil,
|
7
|
-
'IPYTHONDIR' => nil) do
|
8
|
-
assert_output(nil, /\A\z/) do
|
9
|
-
@command = IRuby::Command.new([])
|
10
|
-
kernel_dir = File.join(IRuby::Jupyter.kernelspec_dir, 'ruby')
|
11
|
-
assert_equal(kernel_dir, @command.kernel_dir)
|
12
|
-
assert_equal(File.join(kernel_dir, 'kernel.json'), @command.kernel_file)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_with_JUPYTER_DATA_DIR
|
18
|
-
Dir.mktmpdir do |tmpdir|
|
19
|
-
with_env('JUPYTER_DATA_DIR' => tmpdir,
|
20
|
-
'IPYTHONDIR' => nil) do
|
21
|
-
assert_output(nil, /\A\z/) do
|
22
|
-
@command = IRuby::Command.new([])
|
23
|
-
kernel_dir = File.join(tmpdir, 'kernels', 'ruby')
|
24
|
-
assert_equal(kernel_dir, @command.kernel_dir)
|
25
|
-
assert_equal(File.join(kernel_dir, 'kernel.json'), @command.kernel_file)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_with_IPYTHONDIR
|
32
|
-
Dir.mktmpdir do |tmpdir|
|
33
|
-
with_env('JUPYTER_DATA_DIR' => nil,
|
34
|
-
'IPYTHONDIR' => tmpdir) do
|
35
|
-
assert_output(nil, /IPYTHONDIR is deprecated\. Use JUPYTER_DATA_DIR instead\./) do
|
36
|
-
@command = IRuby::Command.new([])
|
37
|
-
kernel_dir = File.join(tmpdir, 'kernels', 'ruby')
|
38
|
-
assert_equal(kernel_dir, @command.kernel_dir)
|
39
|
-
assert_equal(File.join(kernel_dir, 'kernel.json'), @command.kernel_file)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_with_JUPYTER_DATA_DIR_and_IPYTHONDIR
|
46
|
-
Dir.mktmpdir do |tmpdir|
|
47
|
-
Dir.mktmpdir do |tmpdir2|
|
48
|
-
with_env('JUPYTER_DATA_DIR' => tmpdir,
|
49
|
-
'IPYTHONDIR' => tmpdir2) do
|
50
|
-
assert_output(nil, /both JUPYTER_DATA_DIR and IPYTHONDIR are supplied; IPYTHONDIR is ignored\./) do
|
51
|
-
@command = IRuby::Command.new([])
|
52
|
-
kernel_dir = File.join(tmpdir, 'kernels', 'ruby')
|
53
|
-
assert_equal(kernel_dir, @command.kernel_dir)
|
54
|
-
assert_equal(File.join(kernel_dir, 'kernel.json'), @command.kernel_file)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_with_ipython_dir_option
|
62
|
-
Dir.mktmpdir do |tmpdir|
|
63
|
-
with_env('JUPYTER_DATA_DIR' => nil,
|
64
|
-
'IPYTHONDIR' => nil) do
|
65
|
-
assert_output(nil, /--ipython-dir is deprecated\. Use JUPYTER_DATA_DIR environment variable instead\./) do
|
66
|
-
@command = IRuby::Command.new(%W[--ipython-dir=#{tmpdir}])
|
67
|
-
kernel_dir = File.join(tmpdir, 'kernels', 'ruby')
|
68
|
-
assert_equal(kernel_dir, @command.kernel_dir)
|
69
|
-
assert_equal(File.join(kernel_dir, 'kernel.json'), @command.kernel_file)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
def test_with_JUPYTER_DATA_DIR_and_ipython_dir_option
|
76
|
-
Dir.mktmpdir do |tmpdir|
|
77
|
-
Dir.mktmpdir do |tmpdir2|
|
78
|
-
with_env('JUPYTER_DATA_DIR' => tmpdir,
|
79
|
-
'IPYTHONDIR' => nil) do
|
80
|
-
assert_output(nil, /both JUPYTER_DATA_DIR and --ipython-dir are supplied; --ipython-dir is ignored\./) do
|
81
|
-
@command = IRuby::Command.new(%W[--ipython-dir=#{tmpdir2}])
|
82
|
-
kernel_dir = File.join(tmpdir, 'kernels', 'ruby')
|
83
|
-
assert_equal(kernel_dir, @command.kernel_dir)
|
84
|
-
assert_equal(File.join(kernel_dir, 'kernel.json'), @command.kernel_file)
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_register_when_there_is_kernel_in_ipython_dir
|
92
|
-
Dir.mktmpdir do |tmpdir|
|
93
|
-
Dir.mktmpdir do |tmpdir2|
|
94
|
-
with_env('JUPYTER_DATA_DIR' => nil,
|
95
|
-
'IPYTHONDIR' => nil,
|
96
|
-
'HOME' => tmpdir2) do
|
97
|
-
ignore_warning do
|
98
|
-
@command = IRuby::Command.new(["register", "--ipython-dir=~/.ipython"])
|
99
|
-
assert_equal("#{tmpdir2}/.ipython/kernels/ruby/kernel.json", @command.kernel_file)
|
100
|
-
@command.run
|
101
|
-
assert(File.file?("#{tmpdir2}/.ipython/kernels/ruby/kernel.json"))
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
with_env('JUPYTER_DATA_DIR' => nil,
|
106
|
-
'IPYTHONDIR' => nil,
|
107
|
-
'HOME' => tmpdir2) do
|
108
|
-
@command = IRuby::Command.new(["register"])
|
109
|
-
assert_output(nil, /IRuby kernel file already exists in the deprecated IPython's data directory\.\nUsing --force, you can replace the old kernel file with the new one in Jupyter's data directory\./) do
|
110
|
-
@command.run
|
111
|
-
end
|
112
|
-
assert(File.file?(File.join(@command.ipython_kernel_dir, 'kernel.json')))
|
113
|
-
refute(File.file?(@command.kernel_file))
|
114
|
-
|
115
|
-
@command = IRuby::Command.new(["register", "--force"])
|
116
|
-
assert_output(nil, nil) do
|
117
|
-
@command.run
|
118
|
-
end
|
119
|
-
refute(File.exist?(@command.ipython_kernel_dir))
|
120
|
-
assert(File.file?(@command.kernel_file))
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
def test_register_and_unregister_with_JUPYTER_DATA_DIR
|
127
|
-
Dir.mktmpdir do |tmpdir|
|
128
|
-
Dir.mktmpdir do |tmpdir2|
|
129
|
-
with_env('JUPYTER_DATA_DIR' => tmpdir,
|
130
|
-
'IPYTHONDIR' => nil,
|
131
|
-
'HOME' => tmpdir2) do
|
132
|
-
assert_output(nil, nil) do
|
133
|
-
@command = IRuby::Command.new(['register'])
|
134
|
-
kernel_dir = File.join(tmpdir, 'kernels', 'ruby')
|
135
|
-
kernel_file = File.join(kernel_dir, 'kernel.json')
|
136
|
-
assert(!File.file?(kernel_file))
|
137
|
-
|
138
|
-
@command.run
|
139
|
-
assert(File.file?(kernel_file))
|
140
|
-
|
141
|
-
@command = IRuby::Command.new(['unregister'])
|
142
|
-
@command.run
|
143
|
-
assert(!File.file?(kernel_file))
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
def test_register_and_unregister_with_JUPYTER_DATA_DIR_when_there_is_kernel_in_ipython_dir
|
151
|
-
Dir.mktmpdir do |tmpdir|
|
152
|
-
Dir.mktmpdir do |tmpdir2|
|
153
|
-
with_env('HOME' => tmpdir2) do
|
154
|
-
ignore_warning do
|
155
|
-
@command = IRuby::Command.new(["register", "--ipython-dir=~/.ipython"])
|
156
|
-
assert_equal("#{tmpdir2}/.ipython/kernels/ruby/kernel.json", @command.kernel_file)
|
157
|
-
@command.run
|
158
|
-
assert(File.file?("#{tmpdir2}/.ipython/kernels/ruby/kernel.json"))
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
with_env('JUPYTER_DATA_DIR' => tmpdir,
|
163
|
-
'IPYTHONDIR' => nil,
|
164
|
-
'HOME' => tmpdir2) do
|
165
|
-
@command = IRuby::Command.new(["register"])
|
166
|
-
assert_output(nil, /IRuby kernel file already exists in the deprecated IPython's data directory\.\nUsing --force, you can replace the old kernel file with the new one in Jupyter's data directory\./) do
|
167
|
-
@command.run
|
168
|
-
end
|
169
|
-
assert(File.file?(File.join(@command.ipython_kernel_dir, 'kernel.json')))
|
170
|
-
refute(File.file?(@command.kernel_file))
|
171
|
-
|
172
|
-
@command = IRuby::Command.new(["register", "--force"])
|
173
|
-
assert_output(nil, nil) do
|
174
|
-
@command.run
|
175
|
-
end
|
176
|
-
refute(File.file?(File.join(@command.ipython_kernel_dir, 'kernel.json')))
|
177
|
-
assert(File.file?(@command.kernel_file))
|
178
|
-
end
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
183
|
-
def test_register_and_unregister_with_IPYTHONDIR
|
184
|
-
Dir.mktmpdir do |tmpdir|
|
185
|
-
Dir.mktmpdir do |tmpdir2|
|
186
|
-
with_env('JUPYTER_DATA_DIR' => nil,
|
187
|
-
'IPYTHONDIR' => tmpdir,
|
188
|
-
'HOME' => tmpdir2) do
|
189
|
-
ignore_warning do
|
190
|
-
@command = IRuby::Command.new(['register'])
|
191
|
-
kernel_dir = File.join(tmpdir, 'kernels', 'ruby')
|
192
|
-
kernel_file = File.join(kernel_dir, 'kernel.json')
|
193
|
-
assert(!File.file?(kernel_file))
|
194
|
-
|
195
|
-
@command.run
|
196
|
-
assert(File.file?(kernel_file))
|
197
|
-
|
198
|
-
@command = IRuby::Command.new(['unregister'])
|
199
|
-
@command.run
|
200
|
-
assert(!File.file?(kernel_file))
|
201
|
-
end
|
202
|
-
end
|
203
|
-
end
|
204
|
-
end
|
205
|
-
end
|
206
|
-
end
|
207
|
-
end
|