spec/async/io/protocol/line_spec.rb in async-io-1.25.0 vs spec/async/io/protocol/line_spec.rb in async-io-1.26.0

- old
+ new

@@ -17,36 +17,42 @@ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. require 'async/io/protocol/line' +require 'async/io/socket' RSpec.describe Async::IO::Protocol::Line do - let(:io) {StringIO.new} - let(:stream) {Async::IO::Stream.new(io)} - subject {described_class.new(stream, "\n")} + include_context Async::RSpec::Reactor + let(:pipe) {@pipe = Async::IO::Socket.pair(Socket::AF_UNIX, Socket::SOCK_STREAM)} + let(:remote) {pipe.first} + subject {described_class.new(Async::IO::Stream.new(pipe.last, deferred: true), "\n")} + + after(:each) {@pipe&.each(&:close)} + context "default line ending" do - subject {described_class.new(stream)} + subject {described_class.new(nil)} it "should have default eol terminator" do expect(subject.eol).to_not be_nil end end describe '#write_lines' do it "should write line" do subject.write_lines "Hello World" + subject.close - expect(io.string).to be == "Hello World\n" + expect(remote.read).to be == "Hello World\n" end end describe '#read_line' do before(:each) do - io.puts "Hello World" - io.seek(0) + remote.write "Hello World\n" + remote.close end it "should read one line" do expect(subject.read_line).to be == "Hello World" end @@ -56,11 +62,11 @@ end end describe '#read_lines' do before(:each) do - io << "Hello\nWorld\n" - io.seek(0) + remote.write "Hello\nWorld\n" + remote.close end it "should read multiple lines" do expect(subject.read_lines).to be == ["Hello", "World"] end