spec/filesystem_spec.rb in libuv-2.0.12 vs spec/filesystem_spec.rb in libuv-3.0.0
- old
+ new
@@ -5,171 +5,152 @@
describe Libuv::Filesystem do
before :each do
@log = []
@general_failure = []
- @loop = Libuv::Loop.default
- @filesystem = @loop.filesystem
- @timeout = @loop.timer do
- @loop.stop
+ @reactor = Libuv::Reactor.default
+ @filesystem = @reactor.filesystem
+ @timeout = @reactor.timer do
+ @reactor.stop
@general_failure << "test timed out"
end
@timeout.start(4000)
- @logger = proc { |level, errorid, error|
+ @reactor.notifier do |error, context|
begin
- @general_failure << "Log called: #{level}: #{errorid}\n#{error.message}\n#{error.backtrace.join("\n")}\n"
- rescue Exception
- @general_failure << 'error in logger'
+ @general_failure << "Log called: #{context}\n#{error.message}\n#{error.backtrace.join("\n") if error.backtrace}\n"
+ rescue Exception => e
+ @general_failure << "error in logger #{e.inspect}"
end
- }
+ end
@thefile = "test-file.txt"
- @loop.all(@filesystem, @timeout).catch do |reason|
+ @reactor.all(@filesystem, @timeout).catch do |reason|
@general_failure << reason.inspect
end
end
describe 'directory navigation' do
it "should list the contents of a folder" do
- @loop.run { |logger|
- logger.progress &@logger
-
+ @reactor.run { |reactor|
currentDir = Dir.pwd
- listing = @filesystem.readdir(currentDir)
+ listing = @filesystem.readdir(currentDir, wait: false)
listing.then do |result|
@log = result
end
listing.catch do |error|
@general_failure << error
end
listing.finally do
@timeout.close
- @loop.stop
+ @reactor.stop
end
}
expect(@general_failure).to eq([])
expect((@log.length > 0)).to eq(true)
end
end
describe 'file manipulation' do
it "should create and write to a file" do
- @loop.run { |logger|
- logger.progress &@logger
-
- file = @loop.file(@thefile, File::CREAT|File::WRONLY)
- file.progress do
- file.write('write some data to a file').then do
- file.chmod(777).then do
- file.close
- @timeout.close
- @loop.stop
- @log = :success
- end
- end
- end
- file.catch do |error|
+ @reactor.run { |reactor|
+ file = @reactor.file(@thefile, File::CREAT|File::WRONLY)
+ begin
+ file.write('write some data to a file')
+ file.chmod(777)
+ @timeout.close
+ @reactor.stop
+ @log = :success
+ rescue => error
@general_failure << error
@timeout.close
+ @reactor.stop
+ ensure
file.close
- @loop.stop
end
}
expect(@general_failure).to eq([])
expect(@log).to eq(:success)
end
it "should return stats on the file" do
- @loop.run { |logger|
- logger.progress &@logger
-
- file = @loop.file(@thefile, File::RDONLY)
- file.progress do
- file.stat.then do |stats|
- file.close
- @timeout.close
- @loop.stop
- @log << stats[:st_mtim][:tv_sec]
- end
- end
- file.catch do |error|
+ @reactor.run { |reactor|
+ file = @reactor.file(@thefile, File::RDONLY)
+ begin
+ stats = file.stat
+ @timeout.close
+ @reactor.stop
+ @log << stats[:st_mtim][:tv_sec]
+ rescue => error
@general_failure << error
@timeout.close
+ @reactor.stop
+ ensure
file.close
- @loop.stop
end
}
expect(@general_failure).to eq([])
expect(@log[0]).to be_kind_of(Integer)
expect(@log.length).to eql(1)
end
it "should read from a file" do
- @loop.run { |logger|
- logger.progress &@logger
-
- file = @loop.file(@thefile, File::RDONLY)
- file.progress do
- file.read(100).then do |result|
- file.close
- @timeout.close
- @loop.stop
- @log = result
- end
- end
- file.catch do |error|
+ @reactor.run { |reactor|
+ file = @reactor.file(@thefile, File::RDONLY)
+ begin
+ result = file.read(100)
+ @timeout.close
+ @reactor.stop
+ @log = result
+ rescue => error
@general_failure << error
@timeout.close
file.close
- @loop.stop
+ @reactor.stop
+ ensure
+ file.close
end
}
expect(@general_failure).to eq([])
expect(@log).to eq('write some data to a file')
end
it "should delete a file" do
- @loop.run { |logger|
- logger.progress &@logger
-
- op = @loop.filesystem.unlink(@thefile)
+ @reactor.run { |reactor|
+ op = @reactor.filesystem.unlink(@thefile, wait: false)
op.then do
@timeout.close
- @loop.stop
+ @reactor.stop
@log = :success
end
op.catch do |error|
@general_failure << error
@timeout.close
- @loop.stop
+ @reactor.stop
end
}
expect(@general_failure).to eq([])
expect(@log).to eq(:success)
end
end
describe 'file streaming' do
it "should send a file over a stream", :network => true do
- @loop.run { |logger|
- logger.progress &@logger
+ @reactor.run { |reactor|
+ @server = @reactor.tcp
+ @client = @reactor.tcp
- @server = @loop.tcp
- @client = @loop.tcp
-
@server.bind('127.0.0.1', 34570) do |client|
client.progress do |data|
- file = @loop.file('.rspec', File::RDONLY)
- file.progress do
- file.send_file(client).then(proc {
+ file = @reactor.file('.rspec', File::RDONLY) do
+ file.send_file(client, wait: false).then(proc {
file.close
client.close
}, proc { |error|
@general_failure << error
})
@@ -182,17 +163,17 @@
end
client.start_read
client.finally do
@timeout.close
@server.close
- @loop.stop
+ @reactor.stop
end
end
# catch errors
@server.catch do |reason|
@general_failure << reason.inspect
- @loop.stop
+ @reactor.stop
end
# start listening
@server.listen(5)
@@ -207,11 +188,11 @@
end
# catch errors
@client.catch do |reason|
@general_failure << reason.inspect
@server.close
- @loop.stop
+ @reactor.stop
end
}
expect(@general_failure).to eq([])
# Windows GIT adds the carriage return
@@ -221,21 +202,18 @@
expect(@log).to eq(["--format progress\n"])
end
end
it "should send a file as a HTTP chunked response", :network => true do
- @loop.run { |logger|
- logger.progress &@logger
+ @reactor.run { |reactor|
+ @server = @reactor.tcp
+ @client = @reactor.tcp
- @server = @loop.tcp
- @client = @loop.tcp
-
@server.bind('127.0.0.1', 34568) do |client|
client.progress do |data|
- file = @loop.file('.rspec', File::RDONLY)
- file.progress do
- file.send_file(client, :http).then(proc {
+ file = @reactor.file('.rspec', File::RDONLY) do
+ file.send_file(client, using: :http, wait: false).then(proc {
file.close
client.close
}, proc { |error|
@general_failure << error
})
@@ -248,17 +226,17 @@
end
client.start_read
client.finally do
@timeout.close
@server.close
- @loop.stop
+ @reactor.stop
end
end
# catch errors
@server.catch do |reason|
@general_failure << reason.inspect
- @loop.stop
+ @reactor.stop
end
# start listening
@server.listen(5)
@@ -273,10 +251,10 @@
end
# catch errors
@client.catch do |reason|
@general_failure << reason.inspect
@server.close
- @loop.stop
+ @reactor.stop
end
}
expect(@general_failure).to eq([])