From 79881c857d200b4ed4512f040d13272d883db15f Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Wed, 10 Jan 2024 13:46:35 +1300 Subject: [PATCH 1/2] Add fifo tests. --- test/io/event/selector/fifo_io.rb | 70 +++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 test/io/event/selector/fifo_io.rb diff --git a/test/io/event/selector/fifo_io.rb b/test/io/event/selector/fifo_io.rb new file mode 100644 index 00000000..3c6e369a --- /dev/null +++ b/test/io/event/selector/fifo_io.rb @@ -0,0 +1,70 @@ +# frozen_string_literal: true + +# Released under the MIT License. +# Copyright, 2021-2023, by Samuel Williams. + +require 'io/event' +require 'io/event/selector' +require 'fileutils' +require 'tmpdir' + +FifoIO = Sus::Shared("fifo io") do + with 'a fifo' do + def around + @root = Dir.mktmpdir + super + ensure + FileUtils.rm_rf(@root) if @root + end + + let(:path) {File.join(@root, "fifo")} + + it 'can read and write' do + File.mkfifo(path) + input = File.open(path, "r+") + output = File.open(path, "w+") + + buffer = IO::Buffer.new(128) + + reader = Fiber.new do + @selector.io_wait(Fiber.current, input, IO::READABLE) + result = buffer.read(input, buffer.size) + buffer.resize(result) + end + + writer = Fiber.new do + output.puts("Hello World\n") + output.close + end + + reader.transfer + writer.transfer + + 2.times do + @selector.select(0) + end + + expect(buffer.get_string).to be == "Hello World\n" + end + end +end + +IO::Event::Selector.constants.each do |name| + klass = IO::Event::Selector.const_get(name) + + describe(klass, unique: name) do + def before + @loop = Fiber.current + @selector = subject.new(@loop) + end + + def after + @selector&.close + end + + attr :loop + attr :selector + + it_behaves_like FifoIO + end +end From a8dd87b363cd1b099f07df4065b454e46500db7f Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Wed, 10 Jan 2024 13:49:52 +1300 Subject: [PATCH 2/2] Bump patch version. --- lib/io/event/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/io/event/version.rb b/lib/io/event/version.rb index 09e1a36a..1f42dc3d 100644 --- a/lib/io/event/version.rb +++ b/lib/io/event/version.rb @@ -5,6 +5,6 @@ class IO module Event - VERSION = "1.4.0" + VERSION = "1.4.1" end end