[#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:67795] [ruby-trunk - Bug #10781] stdout flushing and loops

From: nolan@...
Date: 2015-01-24 20:35:32 UTC
List: ruby-core #67795
Issue #10781 has been updated by Nolan Eakins.


Removing the `$stdin.eof?` call fixed my problem. IDK why as yet. I finally did find a page with a similar issue after seeing it was #eof? related at http://computer-programming-forum.com/39-ruby/0ce7591347ab1e27.htm 

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

* Author: Nolan Eakins
* Status: Open
* 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:

~~~
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:

~~~
  $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