parent
499a118590
commit
90bdcac6b1
7 changed files with 118 additions and 15 deletions
|
@ -21,6 +21,7 @@ v 6.6.0
|
||||||
- Restyle Issue#show page and MR#show page
|
- Restyle Issue#show page and MR#show page
|
||||||
- Ability to filter by multiple labels for Issues page
|
- Ability to filter by multiple labels for Issues page
|
||||||
- Rails version to 4.0.3
|
- Rails version to 4.0.3
|
||||||
|
- Blob and tree gfm links to anchors work
|
||||||
|
|
||||||
v 6.5.1
|
v 6.5.1
|
||||||
- Fix branch selectbox when create merge request from fork
|
- Fix branch selectbox when create merge request from fork
|
||||||
|
|
|
@ -124,12 +124,14 @@ module GitlabMarkdownHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def rebuild_path(path_with_namespace, path, requested_path, ref)
|
def rebuild_path(path_with_namespace, path, requested_path, ref)
|
||||||
|
path.gsub!(/(#.*)/, "")
|
||||||
|
id = $1 || ""
|
||||||
file_path = relative_file_path(path, requested_path)
|
file_path = relative_file_path(path, requested_path)
|
||||||
[
|
[
|
||||||
path_with_namespace,
|
path_with_namespace,
|
||||||
path_with_ref(file_path, ref),
|
path_with_ref(file_path, ref),
|
||||||
file_path
|
file_path
|
||||||
].compact.join("/")
|
].compact.join("/").gsub(/\/*$/, '') + id
|
||||||
end
|
end
|
||||||
|
|
||||||
# Checks if the path exists in the repo
|
# Checks if the path exists in the repo
|
||||||
|
@ -154,6 +156,7 @@ module GitlabMarkdownHelper
|
||||||
# If we are at doc/api and the README.md shown in below the tree view
|
# 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
|
# 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)
|
def build_nested_path(path, request_path)
|
||||||
|
return request_path if path == ""
|
||||||
return path unless request_path
|
return path unless request_path
|
||||||
if local_path(request_path) == "tree"
|
if local_path(request_path) == "tree"
|
||||||
base = request_path.split("/").push(path)
|
base = request_path.split("/").push(path)
|
||||||
|
@ -166,7 +169,7 @@ module GitlabMarkdownHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def file_exists?(path)
|
def file_exists?(path)
|
||||||
return false if path.nil? || path.empty?
|
return false if path.nil?
|
||||||
return @repository.blob_at(current_sha, path).present? || @repository.tree(current_sha, path).entries.any?
|
return @repository.blob_at(current_sha, path).present? || @repository.tree(current_sha, path).entries.any?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,7 @@ Feature: Project markdown render
|
||||||
And I own project "Delta"
|
And I own project "Delta"
|
||||||
Given I visit project source page
|
Given I visit project source page
|
||||||
|
|
||||||
# -------------------------------------------
|
# Tree README
|
||||||
# README
|
|
||||||
# -------------------------------------------
|
|
||||||
|
|
||||||
Scenario: Tree view should have correct links in README
|
Scenario: Tree view should have correct links in README
|
||||||
Given I go directory which contains README file
|
Given I go directory which contains README file
|
||||||
|
@ -41,9 +39,7 @@ Feature: Project markdown render
|
||||||
Then I should see rendered README which contains correct links
|
Then I should see rendered README which contains correct links
|
||||||
And Header "Application details" should have correct id and link
|
And Header "Application details" should have correct id and link
|
||||||
|
|
||||||
# -------------------------------------------
|
# Blob
|
||||||
# File content
|
|
||||||
# -------------------------------------------
|
|
||||||
|
|
||||||
Scenario: I navigate to doc directory to view documentation in master
|
Scenario: I navigate to doc directory to view documentation in master
|
||||||
And I navigate to the doc/api/README
|
And I navigate to the doc/api/README
|
||||||
|
@ -61,9 +57,7 @@ Feature: Project markdown render
|
||||||
And I navigate to the doc/api/README
|
And I navigate to the doc/api/README
|
||||||
And Header "GitLab API" should have correct id and link
|
And Header "GitLab API" should have correct id and link
|
||||||
|
|
||||||
# -------------------------------------------
|
# Markdown branch
|
||||||
# Markdown branch README
|
|
||||||
# -------------------------------------------
|
|
||||||
|
|
||||||
Scenario: I browse files from markdown branch
|
Scenario: I browse files from markdown branch
|
||||||
When I visit markdown branch
|
When I visit markdown branch
|
||||||
|
@ -93,9 +87,31 @@ Feature: Project markdown render
|
||||||
And I click on raketasks in doc/api/README
|
And I click on raketasks in doc/api/README
|
||||||
Then I should see correct directory rendered for markdown branch
|
Then I should see correct directory rendered for markdown branch
|
||||||
|
|
||||||
# -------------------------------------------
|
Scenario: Tree markdown links view empty urls should have correct urls
|
||||||
|
When I visit markdown branch
|
||||||
|
Then The link with text "empty" should have url "tree/markdown"
|
||||||
|
When I visit markdown branch "README.md" blob
|
||||||
|
Then The link with text "empty" should have url "blob/markdown/README.md"
|
||||||
|
When I visit markdown branch "d" tree
|
||||||
|
Then The link with text "empty" should have url "tree/markdown/d"
|
||||||
|
When I visit markdown branch "d/README.md" blob
|
||||||
|
Then The link with text "empty" should have url "blob/markdown/d/README.md"
|
||||||
|
|
||||||
|
# "ID" means "#id" on the tests below, because we are unable to escape the hash sign.
|
||||||
|
# which Spinach interprets as the start of a comment.
|
||||||
|
Scenario: All markdown links with ids should have correct urls
|
||||||
|
When I visit markdown branch
|
||||||
|
Then The link with text "ID" should have url "tree/markdownID"
|
||||||
|
Then The link with text "/ID" should have url "tree/markdownID"
|
||||||
|
Then The link with text "README.mdID" should have url "blob/markdown/README.mdID"
|
||||||
|
Then The link with text "d/README.mdID" should have url "blob/markdown/d/README.mdID"
|
||||||
|
When I visit markdown branch "README.md" blob
|
||||||
|
Then The link with text "ID" should have url "blob/markdown/README.mdID"
|
||||||
|
Then The link with text "/ID" should have url "blob/markdown/README.mdID"
|
||||||
|
Then The link with text "README.mdID" should have url "blob/markdown/README.mdID"
|
||||||
|
Then The link with text "d/README.mdID" should have url "blob/markdown/d/README.mdID"
|
||||||
|
|
||||||
# Wiki
|
# Wiki
|
||||||
# -------------------------------------------
|
|
||||||
|
|
||||||
Scenario: I create a wiki page with different links
|
Scenario: I create a wiki page with different links
|
||||||
Given I go to wiki page
|
Given I go to wiki page
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
# If you need to modify the existing seed repository for your tests,
|
||||||
|
# it is recommended that you make the changes on the `markdown` branch of the seed project repository,
|
||||||
|
# which should only be used by tests in this file. See `/spec/factories.rb#project` for more info.
|
||||||
class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
|
class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
|
||||||
include SharedAuthentication
|
include SharedAuthentication
|
||||||
include SharedPaths
|
include SharedPaths
|
||||||
|
@ -50,7 +53,7 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
|
||||||
end
|
end
|
||||||
|
|
||||||
Then 'I should see correct doc/api directory rendered' do
|
Then 'I should see correct doc/api directory rendered' do
|
||||||
current_path.should == project_tree_path(@project, "master/doc/api/")
|
current_path.should == project_tree_path(@project, "master/doc/api")
|
||||||
page.should have_content "README.md"
|
page.should have_content "README.md"
|
||||||
page.should have_content "users.md"
|
page.should have_content "users.md"
|
||||||
end
|
end
|
||||||
|
@ -64,6 +67,18 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
|
||||||
page.should have_content "bundle exec rake gitlab:env:info RAILS_ENV=production"
|
page.should have_content "bundle exec rake gitlab:env:info RAILS_ENV=production"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
And 'I click on link "empty" in the README' do
|
||||||
|
within('.readme-holder') do
|
||||||
|
click_link "empty"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
And 'I click on link "id" in the README' do
|
||||||
|
within('.readme-holder') do
|
||||||
|
click_link "#id"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
And 'I navigate to the doc/api/README' do
|
And 'I navigate to the doc/api/README' do
|
||||||
click_link "doc"
|
click_link "doc"
|
||||||
click_link "api"
|
click_link "api"
|
||||||
|
@ -90,10 +105,24 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
|
||||||
click_link "Rake tasks"
|
click_link "Rake tasks"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Markdown branch
|
||||||
|
|
||||||
When 'I visit markdown branch' do
|
When 'I visit markdown branch' do
|
||||||
visit project_tree_path(@project, "markdown")
|
visit project_tree_path(@project, "markdown")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
When 'I visit markdown branch "README.md" blob' do
|
||||||
|
visit project_blob_path(@project, "markdown/README.md")
|
||||||
|
end
|
||||||
|
|
||||||
|
When 'I visit markdown branch "d" tree' do
|
||||||
|
visit project_tree_path(@project, "markdown/d")
|
||||||
|
end
|
||||||
|
|
||||||
|
When 'I visit markdown branch "d/README.md" blob' do
|
||||||
|
visit project_blob_path(@project, "markdown/d/README.md")
|
||||||
|
end
|
||||||
|
|
||||||
Then 'I should see files from repository in markdown branch' do
|
Then 'I should see files from repository in markdown branch' do
|
||||||
current_path.should == project_tree_path(@project, "markdown")
|
current_path.should == project_tree_path(@project, "markdown")
|
||||||
page.should have_content "Gemfile"
|
page.should have_content "Gemfile"
|
||||||
|
@ -124,6 +153,50 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
|
||||||
page.should have_content "Get a list of users."
|
page.should have_content "Get a list of users."
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Expected link contents
|
||||||
|
|
||||||
|
Then 'The link with text "empty" should have url "tree/markdown"' do
|
||||||
|
find('a', text: /^empty$/)['href'] == current_host + project_tree_path(@project, "markdown")
|
||||||
|
end
|
||||||
|
|
||||||
|
Then 'The link with text "empty" should have url "blob/markdown/README.md"' do
|
||||||
|
find('a', text: /^empty$/)['href'] == current_host + project_blob_path(@project, "markdown/README.md")
|
||||||
|
end
|
||||||
|
|
||||||
|
Then 'The link with text "empty" should have url "tree/markdown/d"' do
|
||||||
|
find('a', text: /^empty$/)['href'] == current_host + project_tree_path(@project, "markdown/d")
|
||||||
|
end
|
||||||
|
|
||||||
|
Then 'The link with text "empty" should have url "blob/markdown/d/README.md"' do
|
||||||
|
find('a', text: /^empty$/)['href'] == current_host + project_blob_path(@project, "markdown/d/README.md")
|
||||||
|
end
|
||||||
|
|
||||||
|
Then 'The link with text "ID" should have url "tree/markdownID"' do
|
||||||
|
find('a', text: /^#id$/)['href'] == current_host + project_tree_path(@project, "markdown") + '#id'
|
||||||
|
end
|
||||||
|
|
||||||
|
Then 'The link with text "/ID" should have url "tree/markdownID"' do
|
||||||
|
find('a', text: /^\/#id$/)['href'] == current_host + project_tree_path(@project, "markdown") + '#id'
|
||||||
|
end
|
||||||
|
|
||||||
|
Then 'The link with text "README.mdID" should have url "blob/markdown/README.mdID"' do
|
||||||
|
find('a', text: /^README.md#id$/)['href'] == current_host + project_blob_path(@project, "markdown/README.md") + '#id'
|
||||||
|
end
|
||||||
|
|
||||||
|
Then 'The link with text "d/README.mdID" should have url "blob/markdown/d/README.mdID"' do
|
||||||
|
find('a', text: /^d\/README.md#id$/)['href'] == current_host + project_blob_path(@project, "d/markdown/README.md") + '#id'
|
||||||
|
end
|
||||||
|
|
||||||
|
Then 'The link with text "ID" should have url "blob/markdown/README.mdID"' do
|
||||||
|
find('a', text: /^#id$/)['href'] == current_host + project_blob_path(@project, "markdown/README.md") + '#id'
|
||||||
|
end
|
||||||
|
|
||||||
|
Then 'The link with text "/ID" should have url "blob/markdown/README.mdID"' do
|
||||||
|
find('a', text: /^\/#id$/)['href'] == current_host + project_blob_path(@project, "markdown/README.md") + '#id'
|
||||||
|
end
|
||||||
|
|
||||||
|
# Wiki
|
||||||
|
|
||||||
Given 'I go to wiki page' do
|
Given 'I go to wiki page' do
|
||||||
click_link "Wiki"
|
click_link "Wiki"
|
||||||
current_path.should == project_wiki_path(@project, "home")
|
current_path.should == project_wiki_path(@project, "home")
|
||||||
|
|
|
@ -34,6 +34,16 @@ FactoryGirl.define do
|
||||||
creator
|
creator
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Generates a test repository from the repository stored under `spec/seed_project.tar.gz`.
|
||||||
|
# Once you run `rake gitlab:setup`, you can see what the repository looks like under `tmp/repositories/gitlabhq`.
|
||||||
|
# In order to modify files in the repository, you must untar the seed, modify and remake the tar.
|
||||||
|
# Before recompressing, do not forget to `git checkout master`.
|
||||||
|
# After recompressing, you need to run `RAILS_ENV=test bundle exec rake gitlab:setup` to regenerate the seeds under tmp.
|
||||||
|
#
|
||||||
|
# If you want to modify the repository only for an specific type of tests, e.g., markdown tests,
|
||||||
|
# consider using a feature branch to reduce the chances of collision with other tests.
|
||||||
|
# Create a new commit, and use the same commit message that you will use for the change in the main repo.
|
||||||
|
# Changing the commig message and SHA of branch `master` may break tests.
|
||||||
factory :project, parent: :empty_project do
|
factory :project, parent: :empty_project do
|
||||||
path { 'gitlabhq' }
|
path { 'gitlabhq' }
|
||||||
|
|
||||||
|
|
|
@ -454,7 +454,7 @@ describe GitlabMarkdownHelper do
|
||||||
|
|
||||||
it "should handle relative urls in reference links for a directory in master" do
|
it "should handle relative urls in reference links for a directory in master" do
|
||||||
actual = "[GitLab API doc directory][GitLab readmes]\n [GitLab readmes]: doc/api/\n"
|
actual = "[GitLab API doc directory][GitLab readmes]\n [GitLab readmes]: doc/api/\n"
|
||||||
expected = "<p><a href=\"/#{project.path_with_namespace}/tree/master/doc/api/\">GitLab API doc directory</a></p>\n"
|
expected = "<p><a href=\"/#{project.path_with_namespace}/tree/master/doc/api\">GitLab API doc directory</a></p>\n"
|
||||||
markdown(actual).should match(expected)
|
markdown(actual).should match(expected)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Binary file not shown.
Loading…
Reference in a new issue