[#67346] Future of test suites for Ruby — Charles Oliver Nutter <headius@...>

I'll try to be brief so we can discuss all this. tl;dr: RubySpec is

19 messages 2015/01/05

[ruby-core:67797] [ruby-trunk - Bug #10781] [Rejected] stdout flushing and loops

From: nobu@...
Date: 2015-01-24 22:53:11 UTC
List: ruby-core #67797
Issue #10781 has been updated by Nobuyoshi Nakada.

Description updated
Status changed from Open to Rejected

[doc of `IO#eof?`](http://www.rubydoc.info/stdlib/core/IO#eof%3F-instance_method):

> If _ios_ is a stream such as pipe or socket, `IO#eof?`
> blocks until the other end sends some data or closes it.

This is true for a console device, and

> Note that `IO#eof?` reads data to the input byte buffer. 

----------------------------------------
Bug #10781: stdout flushing and loops
https://bugs.ruby-lang.org/issues/10781#change-51208

* Author: Nolan Eakins
* Status: Rejected
* Priority: Normal
* Assignee: 
* ruby -v: 1.9.3p547
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
I'm making a little program that has a shell like command prompt. Something like:

~~~
$ cmd
Cmd out
$ more
More out
$
~~~

I tried the following code, but the second prompt does not get flushed to my terminal after entering an initial command:

~~~ruby
begin
  $stdout.write("$ ")
  $stdout.flush
 
  $stdout.puts($stdin.gets.inspect)
end until $stdin.closed? || $stdin.eof?
~~~

My output looks like:

~~~
$ input
"input\n"
more
$ "more\n"
~~~

But if I write my code like the following, my prompt works but I can't wrap my prompter in a method:

~~~ruby
  $stdout.print('$ ')
  $stdout.flush
 
  begin
    $stdout.puts($stdin.gets.inspect)
    $stdout.print('$ ')
    $stdout.flush
  end until $stdin.closed? || $stdin.eof?
end
~~~

What exactly is the problem here? I've tried a 1.8 and 1.9.3p547.



-- 
https://bugs.ruby-lang.org/

In This Thread

Prev Next