[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ruby-core
Subject:    [ruby-core:104450] [Ruby master Misc#17662] The heredoc pattern used in tests does not syntax highli
From:       nobu () ruby-lang ! org
Date:       2021-06-30 12:54:47
Message-ID: redmine.journal-92703.20210630125435.772 () ruby-lang ! org
[Download RAW message or body]

Issue #17662 has been updated by nobu (Nobuyoshi Nakada).


Eregon (Benoit Daloze) wrote in #note-12:
> and if possible one that does not involve twice the number of heredocs than needed.

It is intentional to indent inside here-docs and separate interpolation-enabled and \
-disabled parts.




----------------------------------------
Misc #17662: The heredoc pattern used in tests does not syntax highlight correctly in \
many editors https://bugs.ruby-lang.org/issues/17662#change-92703

* Author: Eregon (Benoit Daloze)
* Status: Assigned
* Priority: Normal
* Assignee: nobu (Nobuyoshi Nakada)
----------------------------------------
This heredoc pattern
```ruby
    assert_ruby_status([], "#{<<-"begin;"}\n#{<<-'end;'}", bug)
    begin;
      exit("1" == Thread.start(1, &:to_s).value)
    end;
```

completely breaks syntax highlighting in at least:
* GitHub: [there](https://github.com/ruby/ruby/blob/36dde35e029c7a6607e6c674062ce6fc7a51c0bd/test/ruby/test_string.rb#L697) \
[are](https://github.com/ruby/ruby/blob/36dde35e029c7a6607e6c674062ce6fc7a51c0bd/test/ruby/test_process.rb#L1545) \
[many](https://github.com/ruby/ruby/blob/565aeb81e0886c835888a425e5d05ed99fb03238/test/ruby/test_thread.rb#L201) \
[examples](https://github.com/ruby/ruby/blob/36dde35e029c7a6607e6c674062ce6fc7a51c0bd/test/ruby/test_require.rb#L21)
                
* Atom
* RubyMine (and IntelliJ)
* Likely many more editors based on TextMate grammars

Could another pattern be used in tests inside the ruby/ruby repository (at least for \
`test/ruby`)?

Due to this issue, it is very annoying and inconvenient to look at/read/investigate \
many tests.

I think this pattern is also very complicated to understand (and using `;` is quite \
weird for this). I suggest to replace it with this obvious and simple pattern many \
people use: ```ruby
    assert_ruby_status([], <<~'RUBY', bug)
      exit("1" == Thread.start(1, &:to_s).value)
    RUBY
```
This syntax highlights correctly in most (all?) editors, and as an added bonus the \
code inside the heredoc is also highlighted in some editors (due to the label being \
`RUBY`).



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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic