Skip to content

Commit cb021d1

Browse files
committed
Fix page links returning 404 in server mode
`TopLevel#parser=` was calling `update_parser_of_file` with `absolute_name`, but `@files_hash` is keyed by `relative_name`. The lookup always failed, so `@text_files_hash` was never populated and `find_text_page` always returned nil.
1 parent b5bcd84 commit cb021d1

3 files changed

Lines changed: 12 additions & 5 deletions

File tree

lib/rdoc/code_object/top_level.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def initialize(absolute_name, relative_name = absolute_name)
6666

6767
def parser=(val)
6868
@parser = val
69-
@store.update_parser_of_file(absolute_name, val) if @store
69+
@store.update_parser_of_file(relative_name, val) if @store
7070
@parser
7171
end
7272

lib/rdoc/store.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -321,11 +321,11 @@ def resolve_c_superclasses
321321
end
322322

323323
##
324-
# Sets the parser of +absolute_name+, unless it from a source code file.
324+
# Sets the parser of +relative_name+, unless it from a source code file.
325325

326-
def update_parser_of_file(absolute_name, parser)
327-
if top_level = @files_hash[absolute_name] then
328-
@text_files_hash[absolute_name] = top_level if top_level.text?
326+
def update_parser_of_file(relative_name, parser)
327+
if top_level = @files_hash[relative_name] then
328+
@text_files_hash[relative_name] = top_level if top_level.text?
329329
end
330330
end
331331

test/rdoc/rdoc_store_test.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,13 @@ def test_find_text_page
348348
assert_equal page, @store.find_text_page('PAGE.txt')
349349
end
350350

351+
def test_find_text_page_when_parser_set_after_add_file
352+
page = @store.add_file '/absolute/path/to/PAGE.md', relative_name: 'PAGE.md'
353+
page.parser = RDoc::Parser::Simple
354+
355+
assert_equal page, @store.find_text_page('PAGE.md')
356+
end
357+
351358
def test_friendly_path
352359
@orig_xdg_data_home = ENV.delete('XDG_DATA_HOME')
353360

0 commit comments

Comments
 (0)