Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
require 'rake/testtask'
require "bundler/gem_helper"

begin
require 'bundler/gem_tasks'
rescue Exception
end
base_dir = File.join(File.dirname(__FILE__))

helper = Bundler::GemHelper.new(base_dir)
helper.install

FileList['tasks/**.rake'].each {|f| load f }

Rake::TestTask.new('test') do |t|
t.libs << 'lib'
t.libs << 'test'
t.test_files = FileList['test/**/*_test.rb']
t.verbose = true
desc "Run tests"
task :test do
cd(base_dir) do
ruby("test/run-test.rb")
end
end

task default: 'test'
Expand Down
3 changes: 2 additions & 1 deletion iruby.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ Gem::Specification.new do |s|
s.add_dependency 'mimemagic', '~> 0.3'
s.add_dependency 'multi_json', '~> 1.11'

s.add_development_dependency 'minitest'
s.add_development_dependency 'pycall', '>= 1.2.1'
s.add_development_dependency 'rake'
s.add_development_dependency 'test-unit'
s.add_development_dependency 'test-unit-rr'
end
90 changes: 90 additions & 0 deletions test/helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
require "iruby"
require "test/unit"
require "test/unit/rr"
require "tmpdir"

module IRubyTest
class TestBase < Test::Unit::TestCase
def assert_output(stdout=nil, stderr=nil)
flunk "assert_output requires a block to capture output." unless block_given?

out, err = capture_io do
yield
end

y = check_assert_output_result(stderr, err, "stderr")
x = check_assert_output_result(stdout, out, "stdout")

(!stdout || x) && (!stderr || y)
end

private

def capture_io
captured_stdout = StringIO.new
captured_stderr = StringIO.new

orig_stdout, $stdout = $stdout, captured_stdout
orig_stderr, $stderr = $stderr, captured_stderr

yield

return captured_stdout.string, captured_stderr.string
ensure
$stdout = orig_stdout
$stderr = orig_stderr
end

def check_assert_output_result(expected, actual, name)
if expected
message = "In #{name}"
case expected
when Regexp
assert_match(expected, actual, message)
else
assert_equal(expected, actual, message)
end
end
end

def ignore_warning
saved, $VERBOSE = $VERBOSE , nil
yield
ensure
$VERBOSE = saved
end

def with_env(env)
keys = env.keys
saved_values = ENV.values_at(*keys)
ENV.update(env)
yield
ensure
if keys && saved_values
keys.zip(saved_values) do |k, v|
ENV[k] = v
end
end
end

def windows_only
omit('windows only test') unless windows?
end

def apple_only
omit('apple only test') unless windows?
end

def unix_only
omit('unix only test') if windows? || apple?
end

def windows?
/mingw|mswin/ =~ RUBY_PLATFORM
end

def apple?
/darwin/ =~ RUBY_PLATFORM
end
end
end
3 changes: 1 addition & 2 deletions test/integration_test.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
require 'test_helper'
require 'pty'
require 'expect'

Expand Down Expand Up @@ -33,7 +32,7 @@ def wait_prompt
end

def test_interaction
skip "This test too much unstable"
omit("This test too much unstable")

write '"Hello, world!"'
expect '"Hello, world!"'
Expand Down
2 changes: 0 additions & 2 deletions test/iruby/backend_test.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
require 'test_helper'

module IRubyTest
class PlainBackendTest < IRubyTest::TestBase
def setup
Expand Down
1 change: 0 additions & 1 deletion test/iruby/command_test.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
require 'test_helper'
require 'iruby/command'

module IRubyTest
Expand Down
1 change: 0 additions & 1 deletion test/iruby/jupyter_test.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
require 'test_helper'
require 'iruby/jupyter'

module IRubyTest
Expand Down
1 change: 0 additions & 1 deletion test/iruby/multi_logger_test.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
require 'stringio'
require 'test_helper'
require 'iruby/logger'

class IRubyTest::MultiLoggerTest < IRubyTest::TestBase
Expand Down
2 changes: 1 addition & 1 deletion test/iruby/session_adapter/cztop_adapter_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def test_send
end

def test_recv
skip
omit
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion test/iruby/session_adapter/ffirzmq_adapter_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def test_send
end

def test_recv
skip
omit
end
end
end
Expand Down
4 changes: 1 addition & 3 deletions test/iruby/session_adapter/session_adapter_test_base.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
require 'test_helper'

module IRubyTest
class SessionAdapterTestBase < TestBase
# https://jupyter-client.readthedocs.io/en/stable/kernels.html#connection-files
Expand All @@ -22,7 +20,7 @@ def setup
@session_adapter = adapter_class.new(@config)

unless adapter_class.available?
skip "#{@session_adapter.name} is unavailable"
omit("#{@session_adapter.name} is unavailable")
end
end
end
Expand Down
58 changes: 30 additions & 28 deletions test/iruby/session_adapter_test.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
require 'test_helper'

module IRubyTest
class SessionAdapterTest < TestBase
def test_available_p_return_false_when_load_error
Expand All @@ -13,58 +11,62 @@ def load_requirements
end

def test_select_adapter_class_with_cztop
IRuby::SessionAdapter::CztopAdapter.stub :available?, true do
IRuby::SessionAdapter::FfirzmqAdapter.stub :available?, false do
IRuby::SessionAdapter::PyzmqAdapter.stub :available?, false do
cls = IRuby::SessionAdapter.select_adapter_class
assert_equal IRuby::SessionAdapter::CztopAdapter, cls
end
end
assert_rr do
stub(IRuby::SessionAdapter::CztopAdapter).available? { true }
stub(IRuby::SessionAdapter::FfirzmqAdapter).available? { false }
stub(IRuby::SessionAdapter::PyzmqAdapter).available? { false }

cls = IRuby::SessionAdapter.select_adapter_class
assert_equal IRuby::SessionAdapter::CztopAdapter, cls
end
end

def test_select_adapter_class_with_ffirzmq
IRuby::SessionAdapter::FfirzmqAdapter.stub :available?, true do
IRuby::SessionAdapter::CztopAdapter.stub :available?, false do
IRuby::SessionAdapter::PyzmqAdapter.stub :available?, false do
cls = IRuby::SessionAdapter.select_adapter_class
assert_equal IRuby::SessionAdapter::FfirzmqAdapter, cls
end
end
assert_rr do
stub(IRuby::SessionAdapter::FfirzmqAdapter).available? { true }
stub(IRuby::SessionAdapter::CztopAdapter).available? { false }
stub(IRuby::SessionAdapter::PyzmqAdapter).available? { false }

cls = IRuby::SessionAdapter.select_adapter_class
assert_equal IRuby::SessionAdapter::FfirzmqAdapter, cls
end
end

def test_select_adapter_class_with_pyzmq
skip "pyzmq adapter is disabled"
IRuby::SessionAdapter::PyzmqAdapter.stub :available?, true do
IRuby::SessionAdapter::CztopAdapter.stub :available?, false do
IRuby::SessionAdapter::FfirzmqAdapter.stub :available?, false do
cls = IRuby::SessionAdapter.select_adapter_class
assert_equal IRuby::SessionAdapter::PyzmqAdapter, cls
end
end
omit("pyzmq adapter is disabled")
assert_rr do
stub(IRuby::SessionAdapter::PyzmqAdapter).available? { true }
stub(IRuby::SessionAdapter::FfirzmqAdapter).available? { false }
stub(IRuby::SessionAdapter::CztopAdapter).available? { false }

cls = IRuby::SessionAdapter.select_adapter_class
assert_equal IRuby::SessionAdapter::PyzmqAdapter, cls
end
end

def test_select_adapter_class_with_env
with_env('IRUBY_SESSION_ADAPTER' => 'cztop') do
IRuby::SessionAdapter::CztopAdapter.stub :available?, true do
assert_rr do
stub(IRuby::SessionAdapter::CztopAdapter).available? { true }
assert_equal IRuby::SessionAdapter::CztopAdapter, IRuby::SessionAdapter.select_adapter_class
end

IRuby::SessionAdapter::CztopAdapter.stub :available?, false do
assert_rr do
stub(IRuby::SessionAdapter::CztopAdapter).available? { false }
assert_raises IRuby::SessionAdapterNotFound do
IRuby::SessionAdapter.select_adapter_class
end
end
end

with_env('IRUBY_SESSION_ADAPTER' => 'ffi-rzmq') do
IRuby::SessionAdapter::FfirzmqAdapter.stub :available?, true do
assert_rr do
stub(IRuby::SessionAdapter::FfirzmqAdapter).available? { true }
assert_equal IRuby::SessionAdapter::FfirzmqAdapter, IRuby::SessionAdapter.select_adapter_class
end

IRuby::SessionAdapter::FfirzmqAdapter.stub :available?, false do
assert_rr do
stub(IRuby::SessionAdapter::FfirzmqAdapter).available? { false }
assert_raises IRuby::SessionAdapterNotFound do
IRuby::SessionAdapter.select_adapter_class
end
Expand Down
19 changes: 8 additions & 11 deletions test/iruby/session_test.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
require 'test_helper'

module IRubyTest
class SessionAdapterSelectionTest < TestBase
def setup
Expand All @@ -25,24 +23,23 @@ def test_new_with_session_adapter
when 'ffi-rzmq'
IRuby::SessionAdapter::FfirzmqAdapter
when 'pyzmq'
skip "pyzmq adapter is disabled"
omit("pyzmq adapter is disabled")
# IRuby::SessionAdapter::PyzmqAdapter
else
flunk "Unknown session adapter: #{adapter_name}"
flunk "Unknown session adapter: #{adapter_name.inspect}"
end

session = IRuby::Session.new(@session_config, adapter_name)
assert_kind_of(adapter_class, session.adapter)
end

def test_without_any_session_adapter
IRuby::SessionAdapter::CztopAdapter.stub :available?, false do
IRuby::SessionAdapter::FfirzmqAdapter.stub :available?, false do
IRuby::SessionAdapter::PyzmqAdapter.stub :available?, false do
assert_raises IRuby::SessionAdapterNotFound do
IRuby::Session.new(@session_config)
end
end
assert_rr do
stub(IRuby::SessionAdapter::CztopAdapter).available? { false }
stub(IRuby::SessionAdapter::FfirzmqAdapter).available? { false }
stub(IRuby::SessionAdapter::PyzmqAdapter).available? { false }
assert_raises IRuby::SessionAdapterNotFound do
IRuby::Session.new(@session_config)
end
end
end
Expand Down
18 changes: 18 additions & 0 deletions test/run-test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/usr/bin/env ruby

$VERBOSE = true

require "pathname"

base_dir = Pathname.new(__dir__).parent.expand_path

lib_dir = base_dir + "lib"
test_dir = base_dir + "test"

$LOAD_PATH.unshift(lib_dir.to_s)

require_relative "helper"

ENV["TEST_UNIT_MAX_DIFF_TARGET_STRING_SIZE"] ||= "10000"

exit Test::Unit::AutoRunner.run(true, test_dir)
48 changes: 0 additions & 48 deletions test/test_helper.rb

This file was deleted.