mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 5348a34504
			
		
	
	
		5348a34504
		
	
	
	
	
		
			
			This patch makes sure we only load relative code. Hence when coding or
testing rdoc, we'll be sure to always be using the correct code.
Discussion started at https://github.com/ruby/rdoc/pull/817.
Signed-off-by: Ulysse Buonomo <buonomo.ulysse@gmail.com>
aa41bd48eb
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
		
	
			
		
			
				
	
	
		
			290 lines
		
	
	
	
		
			7.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			290 lines
		
	
	
	
		
			7.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| require_relative 'xref_test_case'
 | |
| 
 | |
| class TestRDocTopLevel < XrefTestCase
 | |
| 
 | |
|   def setup
 | |
|     super
 | |
| 
 | |
|     @top_level = @store.add_file 'path/top_level.rb'
 | |
|     @top_level.parser = RDoc::Parser::Ruby
 | |
|   end
 | |
| 
 | |
|   def test_initialize
 | |
|     t = RDoc::TopLevel.new 'path/file.rb'
 | |
| 
 | |
|     assert_equal 'path/file.rb', t.absolute_name
 | |
|     assert_equal 'path/file.rb', t.relative_name
 | |
|   end
 | |
| 
 | |
|   def test_initialize_relative
 | |
|     t = RDoc::TopLevel.new 'path/file.rb', 'file.rb'
 | |
| 
 | |
|     assert_equal 'path/file.rb', t.absolute_name
 | |
|     assert_equal 'file.rb',      t.relative_name
 | |
|   end
 | |
| 
 | |
|   def test_add_alias
 | |
|     a = RDoc::Alias.new nil, 'old', 'new', nil
 | |
|     @top_level.add_alias a
 | |
| 
 | |
|     object = @store.find_class_named 'Object'
 | |
|     expected = { '#old' => [a] }
 | |
|     assert_equal expected, object.unmatched_alias_lists
 | |
|     assert_includes object.in_files, @top_level
 | |
|   end
 | |
| 
 | |
|   def test_add_alias_nodoc
 | |
|     @top_level.document_self = false
 | |
| 
 | |
|     a = RDoc::Alias.new nil, 'old', 'new', nil
 | |
|     @top_level.add_alias a
 | |
| 
 | |
|     object = @store.find_class_named('Object')
 | |
|     assert_empty object.unmatched_alias_lists
 | |
|     assert_includes object.in_files, @top_level
 | |
|   end
 | |
| 
 | |
|   def test_add_constant
 | |
|     const = RDoc::Constant.new 'C', nil, nil
 | |
|     @top_level.add_constant const
 | |
| 
 | |
|     object = @store.find_class_named 'Object'
 | |
|     assert_equal [const], object.constants
 | |
|     assert_includes object.in_files, @top_level
 | |
|   end
 | |
| 
 | |
|   def test_add_constant_nodoc
 | |
|     @top_level.document_self = false
 | |
| 
 | |
|     const = RDoc::Constant.new 'C', nil, nil
 | |
|     @top_level.add_constant const
 | |
| 
 | |
|     object = @store.find_class_named 'Object'
 | |
|     assert_empty object.constants
 | |
|     assert_includes object.in_files, @top_level
 | |
|   end
 | |
| 
 | |
|   def test_add_include
 | |
|     include = RDoc::Include.new 'C', nil
 | |
|     @top_level.add_include include
 | |
| 
 | |
|     object = @store.find_class_named 'Object'
 | |
|     assert_equal [include], object.includes
 | |
|     assert_includes object.in_files, @top_level
 | |
|   end
 | |
| 
 | |
|   def test_add_include_nodoc
 | |
|     @top_level.document_self = false
 | |
| 
 | |
|     include = RDoc::Include.new 'C', nil
 | |
|     @top_level.add_include include
 | |
| 
 | |
|     object = @store.find_class_named('Object')
 | |
|     assert_empty object.includes
 | |
|     assert_includes object.in_files, @top_level
 | |
|   end
 | |
| 
 | |
|   def test_add_method
 | |
|     method = RDoc::AnyMethod.new nil, 'm'
 | |
|     @top_level.add_method method
 | |
| 
 | |
|     object = @store.find_class_named 'Object'
 | |
|     assert_equal [@c10_method, @c11_method, method], object.method_list
 | |
|     assert_includes object.in_files, @top_level
 | |
|   end
 | |
| 
 | |
|   def test_add_method_stopdoc
 | |
|     @top_level.document_self = false
 | |
| 
 | |
|     method = RDoc::AnyMethod.new nil, 'm'
 | |
|     @top_level.add_method method
 | |
| 
 | |
|     object = @store.find_class_named('Object')
 | |
|     assert_equal [@c10_method, @c11_method], object.method_list
 | |
|     assert_includes object.in_files, @top_level
 | |
|   end
 | |
| 
 | |
|   def test_base_name
 | |
|     assert_equal 'top_level.rb', @top_level.base_name
 | |
|   end
 | |
| 
 | |
|   def test_display_eh
 | |
|     refute @top_level.display?
 | |
| 
 | |
|     page = @store.add_file 'README.txt'
 | |
|     page.parser = RDoc::Parser::Simple
 | |
| 
 | |
|     assert page.display?
 | |
|   end
 | |
| 
 | |
|   def test_eql_eh
 | |
|     top_level2 = @store.add_file 'path/top_level.rb'
 | |
|     other_level = @store.add_file 'path/other_level.rb'
 | |
| 
 | |
|     assert_operator @top_level, :eql?, top_level2
 | |
| 
 | |
|     refute_operator other_level, :eql?, @top_level
 | |
|   end
 | |
| 
 | |
|   def test_equals2
 | |
|     top_level2 = @store.add_file 'path/top_level.rb'
 | |
|     other_level = @store.add_file 'path/other_level.rb'
 | |
| 
 | |
|     assert_equal @top_level, top_level2
 | |
| 
 | |
|     refute_equal other_level, @top_level
 | |
|   end
 | |
| 
 | |
|   def test_find_class_or_module
 | |
|     assert_equal @c1,    @xref_data.find_class_or_module('C1')
 | |
|     assert_equal @c2_c3, @xref_data.find_class_or_module('C2::C3')
 | |
|     assert_equal @c4,    @xref_data.find_class_or_module('C4')
 | |
|     assert_equal @m1_m2, @xref_data.find_class_or_module('M1::M2')
 | |
|   end
 | |
| 
 | |
|   def test_full_name
 | |
|     assert_equal 'path/top_level.rb', @top_level.full_name
 | |
|   end
 | |
| 
 | |
|   def test_hash
 | |
|     tl2 = @store.add_file 'path/top_level.rb'
 | |
|     tl3 = @store.add_file 'other/top_level.rb'
 | |
| 
 | |
|     assert_equal @top_level.hash, tl2.hash
 | |
|     refute_equal @top_level.hash, tl3.hash
 | |
|   end
 | |
| 
 | |
|   def test_http_url
 | |
|     assert_equal 'prefix/path/top_level_rb.html', @top_level.http_url('prefix')
 | |
| 
 | |
|     other_level = @store.add_file 'path.other/level.rb'
 | |
|     assert_equal 'prefix/path_other/level_rb.html', other_level.http_url('prefix')
 | |
|   end
 | |
| 
 | |
|   def test_last_modified
 | |
|     assert_nil @top_level.last_modified
 | |
|     stat = Object.new
 | |
|     def stat.mtime() 0 end
 | |
|     @top_level.file_stat = stat
 | |
|     assert_equal 0, @top_level.last_modified
 | |
|   end
 | |
| 
 | |
|   def test_marshal_dump
 | |
|     page = @store.add_file 'README.txt'
 | |
|     page.parser = RDoc::Parser::Simple
 | |
|     page.comment = RDoc::Comment.new 'This is a page', page
 | |
| 
 | |
|     loaded = Marshal.load Marshal.dump page
 | |
| 
 | |
|     comment = RDoc::Markup::Document.new(
 | |
|                 RDoc::Markup::Paragraph.new('This is a page'))
 | |
|     comment.file = loaded
 | |
| 
 | |
|     assert_equal page, loaded
 | |
| 
 | |
|     assert_equal 'README.txt', loaded.absolute_name
 | |
|     assert_equal 'README.txt', loaded.relative_name
 | |
| 
 | |
|     assert_equal RDoc::Parser::Simple, loaded.parser
 | |
| 
 | |
|     assert_equal comment, loaded.comment
 | |
|   end
 | |
| 
 | |
|   def test_marshal_load_version_0
 | |
|     loaded = Marshal.load "\x04\bU:\x13RDoc::TopLevel" +
 | |
|                           "[\ti\x00I\"\x0FREADME.txt\x06:\x06EF" +
 | |
|                           "c\x19RDoc::Parser::Simple" +
 | |
|                           "o:\eRDoc::Markup::Document\a:\v@parts" +
 | |
|                           "[\x06o:\x1CRDoc::Markup::Paragraph\x06;\b" +
 | |
|                           "[\x06I\"\x13This is a page\x06;\x06F:\n@file@\a"
 | |
| 
 | |
|     comment = RDoc::Markup::Document.new(
 | |
|                 RDoc::Markup::Paragraph.new('This is a page'))
 | |
|     comment.file = loaded
 | |
| 
 | |
|     assert_equal 'README.txt', loaded.absolute_name
 | |
|     assert_equal 'README.txt', loaded.relative_name
 | |
| 
 | |
|     assert_equal RDoc::Parser::Simple, loaded.parser
 | |
| 
 | |
|     assert_equal comment, loaded.comment
 | |
| 
 | |
|     assert loaded.display?
 | |
|   end
 | |
| 
 | |
|   def test_name
 | |
|     assert_equal 'top_level.rb', @top_level.name
 | |
|   end
 | |
| 
 | |
|   def test_page_name
 | |
|     assert_equal 'top_level', @top_level.page_name
 | |
| 
 | |
|     tl = @store.add_file 'README.ja'
 | |
| 
 | |
|     assert_equal 'README.ja', tl.page_name
 | |
| 
 | |
|     tl = @store.add_file 'Rakefile'
 | |
| 
 | |
|     assert_equal 'Rakefile', tl.page_name
 | |
|   end
 | |
| 
 | |
|   def test_page_name_trim_extension
 | |
|     tl = @store.add_file 'README.ja.rdoc'
 | |
| 
 | |
|     assert_equal 'README.ja', tl.page_name
 | |
| 
 | |
|     tl = @store.add_file 'README.ja.md'
 | |
| 
 | |
|     assert_equal 'README.ja', tl.page_name
 | |
| 
 | |
|     tl = @store.add_file 'README.txt'
 | |
| 
 | |
|     assert_equal 'README', tl.page_name
 | |
|   end
 | |
| 
 | |
|   def test_search_record
 | |
|     assert_nil @xref_data.search_record
 | |
|   end
 | |
| 
 | |
|   def test_search_record_page
 | |
|     page = @store.add_file 'README.txt'
 | |
|     page.parser = RDoc::Parser::Simple
 | |
|     page.comment = 'This is a comment.'
 | |
| 
 | |
|     expected = [
 | |
|       'README',
 | |
|       '',
 | |
|       'README',
 | |
|       '',
 | |
|       'README_txt.html',
 | |
|       '',
 | |
|       "<p>This is a comment.\n",
 | |
|     ]
 | |
| 
 | |
|     assert_equal expected, page.search_record
 | |
|   end
 | |
| 
 | |
|   def test_text_eh
 | |
|     refute @xref_data.text?
 | |
| 
 | |
|     rd = @store.add_file 'rd_format.rd'
 | |
|     rd.parser = RDoc::Parser::RD
 | |
| 
 | |
|     assert rd.text?
 | |
| 
 | |
|     simple = @store.add_file 'simple.txt'
 | |
|     simple.parser = RDoc::Parser::Simple
 | |
| 
 | |
|     assert simple.text?
 | |
|   end
 | |
| 
 | |
|   def test_text_eh_no_parser
 | |
|     refute @xref_data.text?
 | |
| 
 | |
|     rd = @store.add_file 'rd_format.rd'
 | |
| 
 | |
|     refute rd.text?
 | |
|   end
 | |
| 
 | |
| end
 |