Issue #13858 has been reported by iefoaix (Michael Wang).

----------------------------------------
Bug #13858: getoptlong cannot process multiple line argument with equal sign (=) version
https://bugs.ruby-lang.org/issues/13858

* Author: iefoaix (Michael Wang)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu]
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
Here is the test case:

# more getopt.rb 

require 'getoptlong'

a=GetoptLong.new(
   [ '--user',             '-u', GetoptLong::REQUIRED_ARGUMENT ],
   [ '--statement',        '-s', GetoptLong::REQUIRED_ARGUMENT ],
)

a.each { |x, y|
p x
p y
}

Here is the problem:

# ruby getopt.rb --user me --statement="
> select now() from dual
> "

"--user"
"me"
"--statement"
""

Please note the statement is empty while it is not. On contrary, without "=" sign it works fine:

# ruby getopt.rb --user me --statement "
select now() from dual
"                        

"--user"
"me"
"--statement"
"\nselect now() from dual\n"

It is believed this bug is due to the regex that `GetoptLong` uses to parse the argument for long opts. Please investigate and fix, thanks!



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

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>