228 Commits

Author SHA1 Message Date
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.

https://github.com/ruby/rdoc/commit/13e9a44896
2020-09-18 14:57:58 +09:00
aycabta
b5db9b8a31 [ruby/rdoc] Support full filename to make a link for a text file
https://github.com/ruby/rdoc/commit/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 e8c3872555fc85640505974e6b1c39d315572689
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
https://github.com/ruby/rdoc/commit/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.

https://github.com/ruby/rdoc/commit/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

https://github.com/ruby/rdoc/commit/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
```

https://rubyci.org/logs/rubyci.s3.amazonaws.com/archlinux/ruby-master/log/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
https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-ad7f67/ruby-master/log/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
https://github.com/ruby/rdoc/commit/6c4801d1f6
2020-04-25 02:49:37 +09:00
Nobuyoshi Nakada
ae235db25d [ruby/rdoc] Should teardown in reverse order of setup
https://github.com/ruby/rdoc/commit/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.

https://github.com/ruby/rdoc/commit/5c2aa0f77d
2020-02-20 18:06:19 +09:00
aycabta
adc9b3ca7f [ruby/rdoc] Support newline in the middle of constant definition
https://github.com/ruby/rdoc/commit/74d3984324
2019-12-24 07:58:53 +09:00
aycabta
e50e552693 [ruby/rdoc] Treat Proc#call syntax sugar for constant correctly
https://github.com/ruby/rdoc/commit/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 ca5812fe4516a10cc687281f9e47e1a08449f1ab.

Now tool/lib/minitest provides "omit", so it should work.
2019-10-29 13:16:31 +09:00
Yusuke Endoh
ca5812fe45 Revert "[ruby/rdoc] Use omit of test-unit instead of skip of minitest"
This reverts commit b4da6fc1c277190bbd10e795ebf3be45772038e8.

`make test-all` uses minitest, which led to "undefined method `omit'"
2019-10-29 12:57:31 +09:00
aycabta
9525541d02 [ruby/rdoc] Use Dir.glob to convert short path of Dir.tmpdir to long path
https://github.com/ruby/rdoc/commit/ba16e44572
2019-10-29 12:34:44 +09:00
aycabta
c8ce37d427 [ruby/rdoc] Support different drive latters in include paths
https://github.com/ruby/rdoc/commit/946d2592e2
2019-10-29 12:34:44 +09:00
aycabta
b4da6fc1c2 [ruby/rdoc] Use omit of test-unit instead of skip of minitest
https://github.com/ruby/rdoc/commit/1c5bf2ae1d
2019-10-29 12:34:44 +09:00
Nobuyoshi Nakada
d70fdeedf0 Make (#methodname) a link 2019-10-26 15:48:11 +09:00
Nobuyoshi Nakada
d70855c725
Added test for rdoc --force-update option 2019-10-16 15:16:55 +09:00
Nobuyoshi Nakada
17ee01e3f6
Removed an unused assignment 2019-10-16 15:16:54 +09:00
Nobuyoshi Nakada
b29c68e687
Restore ENV, rubygems always sets SOURCE_DATE_EPOCH now 2019-09-26 22:57:25 +09:00
aycabta
15da2aad76 Remove Travis CI workaround 2019-08-17 20:20:04 +09:00
Hiroshi SHIBATA
79fe84edf5 Removed test_case files from lib directory. 2019-08-17 20:20:04 +09:00
Nobuyoshi Nakada
03f4a0b18e [ruby/rdoc] Use assert_raise
https://github.com/ruby/rdoc/commit/f2c63549f7
2019-08-16 17:28:40 +09:00
aycabta
a458317b91 Use assert_raise and skip for test/unit 2019-08-16 06:45:36 +09:00
Yusuke Endoh
f71bd7477e RDoc::Parser::C: Integrate do_classes and do_modules by one regexp match
The full scan of the C source code (`@content.scan`) is very slow.
The old code invokes the scan six times in `do_classes` and
`do_modules`.

This change integrates the six scans into one by merging the regexps.
The integrated regexp is a bit hard to maintain, but the speed up is
significant: approx. 30 sec -> 20 sec in Ruby's `make rdoc`.

In addition, this change omits `do_boot_defclass` unless the file name
is `class.c`.  `boot_defclass` is too specific to Ruby's source code, so
RDoc should handle it as a special case.

Before this change:

     TOTAL    (pct)     SAMPLES    (pct)     FRAME
       858  (13.6%)         858  (13.6%)     (garbage collection)
       292   (4.6%)         264   (4.2%)     RDoc::Parser::C#do_define_class
       263   (4.2%)         250   (3.9%)     RDoc::Parser::C#do_define_module
       275   (4.3%)         241   (3.8%)     RDoc::Parser::C#do_define_class_under
       248   (3.9%)         237   (3.7%)     RDoc::Parser::C#do_define_module_under
       234   (3.7%)         234   (3.7%)     RDoc::Parser::C#gen_body_table
       219   (3.5%)         219   (3.5%)     Ripper::Lexer#state_obj
       217   (3.4%)         216   (3.4%)     RDoc::Parser::C#do_struct_define_without_accessor
       205   (3.2%)         205   (3.2%)     RDoc::Parser::C#do_boot_defclass
       205   (3.2%)         205   (3.2%)     RDoc::Parser::C#do_singleton_class

The six methods take approx. 22.2%.
`do_define_class` (4.2%) + `do_define_class_under` (3.8%) +
`do_define_module` (3,9$) + `do_define_module_under` (3.7%) +
`do_struct_define_without_accessor` (3.4%) + `do_singleton_class` (3.2%)

After this change, the methods are integrated to `do_classes_and_modules`
which takes only 5.8%.

     TOTAL    (pct)     SAMPLES    (pct)     FRAME
       812  (16.7%)         812  (16.7%)     (garbage collection)
       355   (7.3%)         284   (5.8%)     RDoc::Parser::C#do_classes_and_modules
       225   (4.6%)         225   (4.6%)     RDoc::Parser::C#gen_body_table
       429   (8.8%)         210   (4.3%)     RDoc::Parser::RubyTools#get_tk
       208   (4.3%)         208   (4.3%)     RDoc::TokenStream#add_tokens
2019-08-16 06:07:11 +09:00
aycabta
b64911f4e2 Parser was replaced 2019-08-16 06:07:11 +09:00
Hiroshi SHIBATA
bad937b00b Gem::TestCase is based on Minitest 2019-08-16 06:07:11 +09:00
Hiroshi SHIBATA
daf5ce3ba1 Use omit instead of skip for test-unit. 2019-08-16 06:07:11 +09:00
Hiroshi SHIBATA
e87e10e5e7 Use test/unit instead of test-unit. Because test-unit is only provided standalone gem. 2019-08-16 06:07:11 +09:00
Hiroshi SHIBATA
2066dae991 Cleanup commented-out code. 2019-08-16 06:07:11 +09:00
Hiroshi SHIBATA
9218655660 Removed needless alias for capture_io. 2019-08-16 06:07:11 +09:00
Nobuyoshi Nakada
71fd26b195 Fallback for older Rubygems 2019-08-16 06:07:11 +09:00
Nobuyoshi Nakada
787b437a2a Use Gem.default_specifications_dir
Gem::Specification.default_specifications_dir is deprecated.
2019-08-16 06:07:11 +09:00
Nobuyoshi Nakada
5555e3ef57 Renamed minitest_helper.rb as helper.rb 2019-08-16 06:07:11 +09:00
Nobuyoshi Nakada
8045ebbf78 Use locale directory for the tests 2019-08-16 06:07:11 +09:00
Nobuyoshi Nakada
1a5304228a Use test-unit instead of minitest
Minitest 6 will err `assert_equal` with `nil`.
https://github.com/seattlerb/minitest/issues/779
2019-08-16 06:07:11 +09:00
aycabta
64f9f512c5 Treat linking to Markdown label correctly 2019-08-16 06:02:45 +09:00
Yusuke Endoh
723a37d038 Separate RDoc::TokenStream#add_tokens and #add_token
The old version of `add_tokens` accepts an array of tokens, and
multiple arguments of tokens by using `Array#flatten`.
And `add_token` was an alias to `add_tokens`.

I think it is unnecessarily flexible; in fact, all callsites of
`add_tokens` (except test) passes only an array of tokens.
And the code created a lot of temporal arrays.

This change makes `add_tokens` accept only one array of tokens,
and does `add_token` accept one token.  It is a bit faster (about
1 second in Ruby's `make rdoc`), and it ls also cleaner in my point of
view.
2019-08-16 06:02:45 +09:00
Yusuke Endoh
0a0760aa63 Refactor and improve performance of RDoc::Markup::Parser
This change introduces a wrapper of StringScanner that is aware of the
current position (column and lineno).
It has two advantages: faster and more modular.

The old code frequently runs `@input.byteslice(0, byte_offset).length`
to get the current position, but it was painfully slow.  This change
keeps track of the position at each scan, which reduces about half of
time of "Generating RI format into ..." in Ruby's `make rdoc`
(5.5 sec -> 3.0 sec).

And the old code used four instance variables (`@input`, `@line`,
`@line_pos`, and `@s`) to track the position.  This change factors them
out into MyStringScanner, so now only one variable (`@s`) is needed.
2019-08-16 06:02:45 +09:00
Hiroshi SHIBATA
2990c2cc3e
Use capture_output instead of capture_io.
It's preparation for migrating test-unit on upstream.
2019-08-11 06:14:01 +09:00
Yusuke Endoh
1d02832bcf test/rdoc/test_rdoc_rubygems_hook.rb: suppress deprecation warning 2019-07-31 11:46:56 +09:00
Nobuyoshi Nakada
630eb04bc4
[ruby/rdoc] Removed unused variable 2019-07-29 13:29:35 +09:00