diff --git a/app/helpers/gitlab_markdown_helper.rb b/app/helpers/gitlab_markdown_helper.rb index 0210bea..b34f703 100644 --- a/app/helpers/gitlab_markdown_helper.rb +++ b/app/helpers/gitlab_markdown_helper.rb @@ -129,11 +129,18 @@ module GitlabMarkdownHelper # Covering a special case, when the link is referencing file in the same directory eg: # If we are at doc/api/README.md and the README.md contains relative links like [Users](users.md) # this takes the request path(doc/api/README.md), and replaces the README.md with users.md so the path looks like doc/api/users.md + # If we are at doc/api and the README.md shown in below the tree view + # this takes the rquest path(doc/api) and adds users.md so the path looks like doc/api/users.md def build_nested_path(path, request_path) return path unless request_path - base = request_path.split("/") - base.pop - (base + [path]).join("/") + if local_path(request_path) == "tree" + base = request_path.split("/").push(path) + base.join("/") + else + base = request_path.split("/") + base.pop + base.push(path).join("/") + end end def file_exists?(path) diff --git a/features/project/source/markdown_render.feature b/features/project/source/markdown_render.feature index a7a9cee..8b4b89e 100644 --- a/features/project/source/markdown_render.feature +++ b/features/project/source/markdown_render.feature @@ -72,4 +72,9 @@ Feature: Project markdown render Scenario: I visit the help page with markdown Given I visit to the help page And I select a page with markdown - Then I should see a help page with markdown \ No newline at end of file + Then I should see a help page with markdown + + Scenario: Tree view should have correct links in README + Given I go directory which contains README file + And I click on a relative link in README + Then I should see the correct markdown diff --git a/features/steps/project/project_markdown_render.rb b/features/steps/project/project_markdown_render.rb index 951c831..95d73c9 100644 --- a/features/steps/project/project_markdown_render.rb +++ b/features/steps/project/project_markdown_render.rb @@ -162,4 +162,18 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps Then 'I should see a help page with markdown' do page.should have_content "GitLab provides some specific rake tasks to enable special features or perform maintenance tasks" end -end \ No newline at end of file + + Given 'I go directory which contains README file' do + visit project_tree_path(@project, "master/doc/api") + current_path.should == project_tree_path(@project, "master/doc/api") + end + + And 'I click on a relative link in README' do + click_link "Users" + end + + Then 'I should see the correct markdown' do + current_path.should == project_blob_path(@project, "master/doc/api/users.md") + page.should have_content "List users" + end +end -- libgit2 0.21.2