summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-08-21 04:11:52 -0700
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-08-21 04:11:52 -0700
commite67574fe77dfb2ed4f6c9ed8ee96ddeef647f2ff (patch)
treeff4e39ec7a917a535675b71135826fc2ce1e1f0c
parentfede36f08995790d0aed89fdc3eeaacd94e98dc5 (diff)
parent1101ceb3f4dfb8983f5876215378331a2d9bcc88 (diff)
downloadgitlab-ce-e67574fe77dfb2ed4f6c9ed8ee96ddeef647f2ff.tar.gz
Merge pull request #4829 from hiroponz/render-not-found-when-failing-to-look-for-commit
Render not found when failing to look for commit
-rw-r--r--app/controllers/projects/network_controller.rb4
-rw-r--r--app/views/projects/network/_head.html.haml6
-rw-r--r--features/project/network.feature4
-rw-r--r--features/steps/project/project_network_graph.rb9
-rw-r--r--features/steps/shared/project.rb4
-rw-r--r--lib/extracts_path.rb16
6 files changed, 29 insertions, 14 deletions
diff --git a/app/controllers/projects/network_controller.rb b/app/controllers/projects/network_controller.rb
index e4a84f80787..9832495c64f 100644
--- a/app/controllers/projects/network_controller.rb
+++ b/app/controllers/projects/network_controller.rb
@@ -8,10 +8,6 @@ class Projects::NetworkController < Projects::ApplicationController
before_filter :require_non_empty_project
def show
- if @options[:q]
- @commit = @project.repository.commit(@options[:q]) || @commit
- end
-
respond_to do |format|
format.html
diff --git a/app/views/projects/network/_head.html.haml b/app/views/projects/network/_head.html.haml
index ed9fcaace25..2790ed6f594 100644
--- a/app/views/projects/network/_head.html.haml
+++ b/app/views/projects/network/_head.html.haml
@@ -4,7 +4,7 @@
.pull-left
= form_tag project_network_path(@project, @id), method: :get do |f|
.control-group
- = label_tag :filter_ref, "Show only selected ref", class: 'control-label light'
+ = label_tag :filter_ref, "Begin with the selected commit", class: 'control-label light'
.controls
= check_box_tag :filter_ref, 1, @options[:filter_ref]
- @options.each do |key, value|
@@ -15,9 +15,9 @@
.control-group
= label_tag :search , "Looking for commit:", class: 'control-label light'
.controls
- = text_field_tag :q, @options[:q], placeholder: "Input SHA", class: "search-input input-xlarge"
+ = text_field_tag :extended_sha1, @options[:extended_sha1], placeholder: "Input an extended SHA1 syntax", class: "search-input input-xlarge"
= button_tag type: 'submit', class: 'btn vtop' do
%i.icon-search
- @options.each do |key, value|
- = hidden_field_tag(key, value, id: nil) unless key == "q"
+ = hidden_field_tag(key, value, id: nil) unless key == "extended_sha1"
diff --git a/features/project/network.feature b/features/project/network.feature
index f98e19b60d3..ceae08c1074 100644
--- a/features/project/network.feature
+++ b/features/project/network.feature
@@ -34,3 +34,7 @@ Feature: Project Network Graph
Then page should not have content not cotaining "v2.1.0"
When click "Show only selected branch" checkbox
Then page should have content not cotaining "v2.1.0"
+
+ Scenario: I should fail to look for a commit
+ When I look for a commit by ";"
+ Then page status code should be 404
diff --git a/features/steps/project/project_network_graph.rb b/features/steps/project/project_network_graph.rb
index c883479ffd3..57015f76626 100644
--- a/features/steps/project/project_network_graph.rb
+++ b/features/steps/project/project_network_graph.rb
@@ -76,7 +76,7 @@ class ProjectNetworkGraph < Spinach::FeatureSteps
When 'I looking for a commit by SHA of "v2.1.0"' do
within ".content .search" do
- fill_in 'q', with: '98d6492'
+ fill_in 'extended_sha1', with: '98d6492'
find('button').click
end
sleep 2
@@ -87,4 +87,11 @@ class ProjectNetworkGraph < Spinach::FeatureSteps
page.should have_content 'v2.1.0'
end
end
+
+ When 'I look for a commit by ";"' do
+ within ".content .search" do
+ fill_in 'extended_sha1', with: ';'
+ find('button').click
+ end
+ end
end
diff --git a/features/steps/shared/project.rb b/features/steps/shared/project.rb
index 66553e1e089..c5d8b62bfe7 100644
--- a/features/steps/shared/project.rb
+++ b/features/steps/shared/project.rb
@@ -51,6 +51,10 @@ module SharedProject
page.should have_content("Features:")
end
+ Then 'page status code should be 404' do
+ page.status_code.should == 404
+ end
+
def current_project
@project ||= Project.first
end
diff --git a/lib/extracts_path.rb b/lib/extracts_path.rb
index d1035240cb6..53bc079296a 100644
--- a/lib/extracts_path.rb
+++ b/lib/extracts_path.rb
@@ -94,19 +94,23 @@ module ExtractsPath
# Automatically renders `not_found!` if a valid tree path could not be
# resolved (e.g., when a user inserts an invalid path or ref).
def assign_ref_vars
+ # assign allowed options
+ allowed_options = ["filter_ref", "extended_sha1"]
+ @options = params.select {|key, value| allowed_options.include?(key) && !value.blank? }
+ @options = HashWithIndifferentAccess.new(@options)
+
@id = get_id
@ref, @path = extract_ref(@id)
@repo = @project.repository
- @commit = @repo.commit(@ref)
+ if @options[:extended_sha1].blank?
+ @commit = @repo.commit(@ref)
+ else
+ @commit = @repo.commit(@options[:extended_sha1])
+ end
@tree = Tree.new(@repo, @commit.id, @ref, @path)
@hex_path = Digest::SHA1.hexdigest(@path)
@logs_path = logs_file_project_ref_path(@project, @ref, @path)
- # assign allowed options
- allowed_options = ["filter_ref", "q"]
- @options = params.select {|key, value| allowed_options.include?(key) && !value.blank? }
- @options = HashWithIndifferentAccess.new(@options)
-
raise InvalidPathError unless @tree.exists?
rescue RuntimeError, NoMethodError, InvalidPathError
not_found!