diff --git a/CHANGELOG b/CHANGELOG index c1531cb2ff275..3e858ed0ca495 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -13,6 +13,7 @@ v 7.3.0 - Keyboard shortcuts for productivity (Robert Schilling) - API: filter issues by state (Julien Bianchi) - Add system hook for ssh key changes + - Add blob permalink link (Ciro Santilli) v 7.2.0 - Explore page diff --git a/app/views/projects/blob/_actions.html.haml b/app/views/projects/blob/_actions.html.haml index cabef3c19fe66..8587dc4bc6d5d 100644 --- a/app/views/projects/blob/_actions.html.haml +++ b/app/views/projects/blob/_actions.html.haml @@ -13,6 +13,9 @@ - else = link_to "blame", project_blame_path(@project, @id), class: "btn btn-small" unless @blob.empty? = link_to "history", project_commits_path(@project, @id), class: "btn btn-small" + - if @ref != @commit.sha + = link_to 'permalink', project_blob_path(@project, + tree_join(@commit.sha, @path)), class: 'btn btn-small' - if allowed_tree_edit? = link_to '#modal-remove-blob', class: "remove-blob btn btn-small btn-remove", "data-toggle" => "modal" do diff --git a/features/project/source/browse_files.feature b/features/project/source/browse_files.feature index f8934da8de5ab..a674800ccb8a5 100644 --- a/features/project/source/browse_files.feature +++ b/features/project/source/browse_files.feature @@ -51,3 +51,15 @@ Feature: Project Browse files Scenario: I can browse code with Browse Code Given I click on history link Then I see Browse code link + + # Permalink + + Scenario: I click on the permalink link from a branch ref + Given I click on ".gitignore" file in repo + And I click on permalink + Then I am redirected to the permalink URL + + Scenario: I don't see the permalink link from a SHA ref + Given I visit project source page for "6d394385cf567f80a8fd85055db1ab4c5295806f" + And I click on ".gitignore" file in repo + Then I don't see the permalink link diff --git a/features/steps/project/browse_files.rb b/features/steps/project/browse_files.rb index 6fd0c2c2ded5f..bd395a0d26e3d 100644 --- a/features/steps/project/browse_files.rb +++ b/features/steps/project/browse_files.rb @@ -90,4 +90,17 @@ class ProjectBrowseFiles < Spinach::FeatureSteps page.should_not have_link 'Browse File »' page.should_not have_link 'Browse Dir »' end + + step 'I click on permalink' do + click_link 'permalink' + end + + step 'I am redirected to the permalink URL' do + expect(current_path).to eq(project_blob_path( + @project, @project.repository.commit.sha + '/.gitignore')) + end + + step "I don't see the permalink link" do + expect(page).not_to have_link('permalink') + end end diff --git a/features/steps/shared/paths.rb b/features/steps/shared/paths.rb index 0d06383509f08..276947dc0609e 100644 --- a/features/steps/shared/paths.rb +++ b/features/steps/shared/paths.rb @@ -269,6 +269,12 @@ module SharedPaths visit project_tree_path(@project, "6d39438") end + step 'I visit project source page for' \ + ' "6d394385cf567f80a8fd85055db1ab4c5295806f"' do + visit project_tree_path(@project, + '6d394385cf567f80a8fd85055db1ab4c5295806f') + end + step 'I visit project tags page' do visit project_tags_path(@project) end