Commit graph

258 commits

Author SHA1 Message Date
aycabta
77e1b47729 [ruby/rdoc] Add an alias for test-unit with older versions of RubyGems
b8d68fdd87
2021-06-02 11:35:45 +09:00
aycabta
c9ab8fe2b1 The test for command injection on Unix platforms should be omitted on Windows 2021-05-31 23:34:40 +09:00
aycabta
c264d30261 Use YAML.safe_load to use the permitted_classes option 2021-05-21 21:45:03 +09:00
Nobuyoshi Nakada
59b327aa58
[ruby/rdoc] Drop support for Ruby 2.4
f480b970cc
2021-05-21 15:53:34 +09:00
Nobuyoshi Nakada
f18a0b7654
[ruby/rdoc] Follow-up rubygems
Use test-unit assertions instead of minitest.

d6a6209d7f
2021-05-21 15:53:34 +09:00
Nobuyoshi Nakada
10e63f3f56
[ruby/rdoc] Vertical-bar is disallowed in path names on Windows
No risk of remote code execution, when the file cannot be created.

2565343916 (step):5:58
```
Error: test_remove_unparseable_CVE_2021_31799(TestRDocRDoc): Errno::EINVAL: Invalid argument @ utime_failed - | touch evil.txt && echo tags
D:/rubyinstaller-head-x64/lib/ruby/3.1.0/fileutils.rb:1142:in `utime'
D:/rubyinstaller-head-x64/lib/ruby/3.1.0/fileutils.rb:1142:in `block in touch'
D:/rubyinstaller-head-x64/lib/ruby/3.1.0/fileutils.rb:1139:in `each'
D:/rubyinstaller-head-x64/lib/ruby/3.1.0/fileutils.rb:1139:in `touch'
D:/a/rdoc/rdoc/test/rdoc/test_rdoc_rdoc.rb:463:in `block (2 levels) in test_remove_unparseable_CVE_2021_31799'
     460:     temp_dir do
     461:       file_list = ['| touch evil.txt && echo tags']
     462:       file_list.each do |f|
  => 463:         FileUtils.touch f
     464:       end
     465:
     466:       assert_equal file_list, @rdoc.remove_unparseable(file_list)
```

a7df7dc8fa
2021-05-21 15:53:34 +09:00
Nobuyoshi Nakada
a298bdf860
[ruby/rdoc] Dir.children is 2.5+
RDoc seems still supporting outdated 2.4.

2565344070 (step):5:64
```
Error: test_remove_unparseable_CVE_2021_31799(TestRDocRDoc): NoMethodError: undefined method `children' for Dir:Class
/home/runner/work/rdoc/rdoc/test/rdoc/test_rdoc_rdoc.rb:467:in `block in test_remove_unparseable_CVE_2021_31799'
     464:       end
     465:
     466:       assert_equal file_list, @rdoc.remove_unparseable(file_list)
  => 467:       assert_equal file_list, Dir.children('.')
     468:     end
     469:   end
     470:
```

5a4a64dc0f
2021-05-21 15:53:34 +09:00
aycabta
b1c73f239f [ruby/rdoc] Use File.open to fix the OS Command Injection vulnerability in CVE-2021-31799
a7f5d6ab88
2021-05-21 13:42:24 +09:00
Yusuke Endoh
ffdf0232ef lib/rdoc/rdoc.rb: Allow only RDoc::Options in .rdoc_options
Follow-up of d8fd92f620. Instead of using
unsafe_load blindly, RDoc::Options is only supposed to be allowed.
2021-05-17 12:53:42 +09:00
Hiroshi SHIBATA
d8fd92f620
Workaround with fbb4e3f96c in rdoc 2021-05-17 12:04:40 +09:00
Hiroshi SHIBATA
81720b947a Use assert_raise instead of assert_raises 2021-05-12 17:24:43 +09:00
Nobuyoshi Nakada
64b991b0cd [ruby/rdoc] Links to document texts without "rdoc-ref:" prefix
While links to generated HTML from RDoc file needs to be prefixed
by "rdoc-ref:" currently, in case of explicit references this
seems just redundant.

Also GitHub RDoc support does not work with this prefix.

This patch lets links to such document texts (".rb", ".rdoc" and
".md" now) refer URLs generated by `RDoc::TopLevel#http_url`
without the prefix.

f18b27b69d
2021-04-03 01:22:09 +09:00
Nobuyoshi Nakada
a6948329f8 [ruby/rdoc] Clarify that dots in URL are replaced
The dots in all path components from the document root are
replaced with underscores, not only in the basename.

7a3417ea4c
2021-04-03 01:22:00 +09:00
aycabta
61e1cf23ac [ruby/rdoc] Treat emphasis tags as excluding other notations
And exclusive notations don't exclude other exclusive notations.

b8baa9a435
2021-04-03 01:21:50 +09:00
aycabta
e84d275fe6 [ruby/rdoc] Treat other tags as word boundaries
8222f85a17
2021-04-03 01:21:38 +09:00
aycabta
54aa11efa8 [ruby/rdoc] Disable other notations in <code> tags
0cd3b55210
2021-04-03 01:21:12 +09:00
aycabta
61a29a41e1 [ruby/rdoc] Allow empty .rdoc_options
0c8cb25b50
2021-03-16 15:47:27 +09:00
aycabta
971a0cd246 [ruby/rdoc] Allow partial default values to be overridden with .rdoc_options
e14800891f
2021-03-16 15:47:27 +09:00
Nobuyoshi Nakada
de8e6218a3 [ruby/rdoc] Fixed CodeFence without blank lines
Currently a fenced code block needs a preceding blank line, it
should not be required, as:
https://github.github.com/gfm/#fenced-code-blocks
> A fenced code block may interrupt a paragraph, and does not
> require a blank line either before or after.

Just recommended:
https://docs.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks
> We recommend placing a blank line before and after code blocks
> to make the raw formatting easier to read.

0e1776caf3
2021-03-16 15:47:27 +09:00
Nobuyoshi Nakada
3651f678a7 [ruby/rdoc] Support GFM table
9dc933df16
2021-03-16 15:47:27 +09:00
Nobuyoshi Nakada
19e6d27126 [ruby/rdoc] Support iso-strict format in git-log
2a6c22da63
2021-01-25 18:33:33 +09:00
Nobuyoshi Nakada
7fe22152fc [ruby/rdoc] Support other date formats in git-log
ad8cf37d72
2021-01-25 18:33:31 +09:00
Nobuyoshi Nakada
52ebaf718e [ruby/rdoc] Skip non-date logs by git-log
`RDoc::Parser::ChangeLog` mis-parses ChangeLog generated by
git-log, because of too heuristic `Time.parse`.

For instance, "commit 8187228de0"
results in "8187-08-16", that is, day 228 in the year 8187.

9711e6f6d9
2021-01-24 16:46:27 +09:00
Nobuyoshi Nakada
d5d1c41728 [ruby/rdoc] Sort by CommitDate if available
455715e930
2021-01-24 16:46:25 +09:00
Nobuyoshi Nakada
fa048a0f85 [ruby/rdoc] Add links to the commits
1821628076
2021-01-24 16:46:23 +09:00
Nobuyoshi Nakada
f3f1a666c7 [ruby/rdoc] Shorten commit hashes
5d3e153963
2021-01-24 16:46:21 +09:00
Nobuyoshi Nakada
127f735c1e [ruby/rdoc] Tweak log entry markdown
* add 3 levels to headings
* prefix commit log to labels to make unique IDs

5074c13209
2021-01-24 16:46:19 +09:00
Nobuyoshi Nakada
b88d1e6b44 [ruby/rdoc] Make each commit entries h3
11eefb2ae9
2021-01-24 16:46:17 +09:00
Nobuyoshi Nakada
bb570ce6d8 [ruby/rdoc] Support ChangeLog generated by git log
5e0a123ca1
2021-01-24 16:46:15 +09:00
Hiroshi SHIBATA
391343e828 [ruby/rdoc] Guard for WEBrick
b1e7129e05
2020-12-21 16:21:46 +09:00
Nobuyoshi Nakada
e23f0f29da [ruby/rdoc] update all files if any file is newer
Cross references need parse all files which define the subject
names.  This commit makes `--force-update` option enforce to parse
all files if any file is newer than the previous parse, not only
updated files.

13e9a44896
2020-09-18 14:57:58 +09:00
aycabta
b5db9b8a31 [ruby/rdoc] Support full filename to make a link for a text file
41db49c485
2020-09-18 14:57:57 +09:00
Benoit Daloze
d7492a0be8 Revert changes to rdoc & rubygems regarding Tempfile.open(&block)
* They likely want to support older Ruby/tempfile versions
* Reverts part of e8c3872555
2020-08-29 12:49:20 +02:00
Benoit Daloze
e8c3872555 Simplify Tempfile.open calls with a block as they now unlink the file automatically 2020-08-29 12:23:23 +02:00
Kazuhiro NISHIYAMA
946cd6c534
Use https instead of http 2020-07-28 19:51:54 +09:00
aycabta
c6c023317c [ruby/rdoc] Check uninitialized instance variable in test
3dcd5ddbb6
2020-05-24 23:47:24 +09:00
aycabta
f52a4690f8 [ruby/rdoc] Process crossref before tidylink
The crossref must be linked before tidylink because Klass.method[:sym] will be
processed as a tidylink first and will be broken.

0f47baf6d2
2020-05-24 23:47:24 +09:00
Nate Matykiewicz
c79f9ea606 [ruby/rdoc] Escape method names in HTML
The following is invalid HTML:
<a href="Array.html#method-i-3C-3C"><code><<</code></a></p>

Incorrect:
<code><<</code>

Correct:
<code>&lt;&lt;</code>

Fixes #761

b120d087f6
2020-05-24 23:47:24 +09:00
Kazuhiro NISHIYAMA
36ed700711
Fix failures of test/rdoc/test_rdoc_ri_paths.rb
yield `home_dir` when HOMEDIR is not falsy only.
d0f41aa238/lib/rdoc/ri/paths.rb (L43)
```
    yield home_dir,    :home   if home and HOMEDIR
```

20200426T033503Z.fail.html.gz
```
  1) Failure:
TestRDocRIPaths#test_class_each [/home/chkbuild/build/20200426T033503Z/ruby/test/rdoc/test_rdoc_ri_paths.rb:54]:
<nil> expected but was
<"/home/naruse/chkbuild/tmp/build/20200426T033503Z/tmp/test_rdoc_ri_paths_1033468/doc/nodoc-1.0/ri">.

  2) Failure:
TestRDocRIPaths#test_class_raw_path [/home/chkbuild/build/20200426T033503Z/ruby/test/rdoc/test_rdoc_ri_paths.rb:131]:
<nil> expected but was
<"/home/naruse/chkbuild/tmp/build/20200426T033503Z/tmp/test_rdoc_ri_paths_1033468/doc/rake-10.0.1/ri">.

  3) Failure:
TestRDocRIPaths#test_class_raw_path_extra_dirs [/home/chkbuild/build/20200426T033503Z/ruby/test/rdoc/test_rdoc_ri_paths.rb:141]:
<nil> expected but was
<"/home/naruse/chkbuild/tmp/build/20200426T033503Z/tmp/test_rdoc_ri_paths_1033468/doc/rake-10.0.1/ri">.
```
2020-04-26 16:14:14 +09:00
Kazuhiro NISHIYAMA
63fe3739dd
Fix errors when RDoc::RI::Paths::HOMEDIR is nil
20200425T175405Z.fail.html.gz
```
  4) Error:
TestRDocServlet#test_asset:
NoMethodError: undefined method `replace' for nil:NilClass
    /home/chkbuild/build/20200425T175405Z/ruby/test/rdoc/test_rdoc_servlet.rb:48:in `setup'

  5) Error:
TestRDocServlet#test_asset:
NoMethodError: undefined method `replace' for nil:NilClass
    /home/chkbuild/build/20200425T175405Z/ruby/test/rdoc/test_rdoc_servlet.rb:63:in `teardown'
```
...
```
 74) Error:
TestRDocServlet#test_store_for_site:
NoMethodError: undefined method `replace' for nil:NilClass
    /home/chkbuild/build/20200425T175405Z/ruby/test/rdoc/test_rdoc_servlet.rb:48:in `setup'

 75) Error:
TestRDocServlet#test_store_for_site:
NoMethodError: undefined method `replace' for nil:NilClass
    /home/chkbuild/build/20200425T175405Z/ruby/test/rdoc/test_rdoc_servlet.rb:63:in `teardown'
```
2020-04-26 11:07:42 +09:00
Nobuyoshi Nakada
cc8f55e9e3 [ruby/rdoc] HOME is preserved by RDoc::TestCase
6c4801d1f6
2020-04-25 02:49:37 +09:00
Nobuyoshi Nakada
ae235db25d [ruby/rdoc] Should teardown in reverse order of setup
00fb4dd2a3
2020-04-25 02:49:35 +09:00
Hiroshi SHIBATA
c5b17b0354
Remove and Restore the original HOME dir (#3057) 2020-04-24 21:22:05 +09:00
Hiroshi SHIBATA
5c6269c459
Support XDG_* (#2174)
* Support XDG_CONFIG_HOME for gemrc.

* Support XDG_DATA_HOME for .gem

* Added test for XDG_DATA_HOME

* Do not reuse environmental variable.

* Unify .rdoc path to RDoc.home.

* Support XDG_DATA_HOME for .rdoc

* Ignore exists?

* Extracted config_home path

* Use XDG_CONFIG_HOME for default credential path

* Fixed inconsistency location.

* Fixed the broken tests.

* Support XDG_CONFIG_HOME for irbrc

* Introduce Gem.cache_home as XDG_CACHE_HOME

* Use Gem.cache_home instead of Gem.config_home for the credential file of RubyGems.

* Initialized the old configurations

* Fixed test failure related the configuration initialization

* restore XDG_DATA_HOME

* Fixed the broken examples of bundler with XDG_*

* Do not modify environmental variable on test file

* Use XDG_DATA_HOME insted of XDG_CACHE_HOME for credential file

* stub out Gem.data_home

* Move dir accessor to defaults.rb file

* Use XDG_DATA_HOME for signed gem features

* Use XDG_DATA_HOME for spec cache

* Do not rely on Gem.user_home

* Gem.user_home is always exists. Don't need to use FileUitls.mkdir_p

* Bump support version to RubyGems 3.2.0+

* Removed the needless fallback configuration

* Fixed the inconsistency methods that are find_config_file and config_file

* Use Gem.configuration.credentials_path instead of hard-coded path

* gem_path is always provided

* Removed the duplicated code of find_home

* Also removed the duplicated code of user_home

* use Gem::UNTAINT instead of untaint for surpressing the warnings

* Use File.directory

* Restore XDG_DATA_HOME

* Use File.write
2020-04-23 19:16:06 +09:00
Nobuyoshi Nakada
f5abcf767e [ruby/rdoc] Removed RDoc::Context::Section#sequence
It has been deprecated since 2011.

5c2aa0f77d
2020-02-20 18:06:19 +09:00
aycabta
adc9b3ca7f [ruby/rdoc] Support newline in the middle of constant definition
74d3984324
2019-12-24 07:58:53 +09:00
aycabta
e50e552693 [ruby/rdoc] Treat Proc#call syntax sugar for constant correctly
957d041ae0
2019-12-24 07:58:53 +09:00
Nobuyoshi Nakada
e68999c82c
Fixed misspellings
Fixed misspellings reported at [Bug #16437], for default gems.
2019-12-20 12:19:45 +09:00
aycabta
2d0a1a1869 Fix ghost method line no 2019-11-28 08:19:05 +09:00
Yusuke Endoh
79a7fd9120 Revert "Revert "[ruby/rdoc] Use omit of test-unit instead of skip of minitest""
This reverts commit ca5812fe45.

Now tool/lib/minitest provides "omit", so it should work.
2019-10-29 13:16:31 +09:00