Skip to content
Snippets Groups Projects
Commit a8ea8d98 authored by Robert Speicher's avatar Robert Speicher
Browse files

Update RefExtractor to handle atom feeds

parent 398ba6f1
No related branches found
No related tags found
1 merge request!1568Routing overhaul
# Controller for viewing a repository's file structure
class TreeController < ApplicationController
# Thrown when given an invalid path
class InvalidPathError < StandardError; end
include RefExtractor
 
layout "project"
Loading
Loading
# Module providing an extract_ref method for controllers working with Git
# tree-ish + path params
module RefExtractor
# Thrown when given an invalid path
# Raised when given an invalid path
class InvalidPathError < StandardError; end
 
# Given a string containing both a Git ref - such as a branch or tag - and a
Loading
Loading
@@ -81,6 +81,12 @@ module RefExtractor
# Automatically renders `not_found!` if a valid tree could not be resolved
# (e.g., when a user inserts an invalid path or ref).
def assign_ref_vars
# Handle formats embedded in the id
if params[:id].ends_with?('.atom')
params[:id].gsub!(/\.atom$/, '')
request.format = :atom
end
@ref, @path = extract_ref(params[:id])
 
@id = File.join(@ref, @path)
Loading
Loading
Loading
Loading
@@ -293,11 +293,7 @@ end
# patch_project_commit GET /:project_id/commits/:id/patch(.:format) commits#patch
# project_commits GET /:project_id/commits(.:format) commits#index
# POST /:project_id/commits(.:format) commits#create
# new_project_commit GET /:project_id/commits/new(.:format) commits#new
# edit_project_commit GET /:project_id/commits/:id/edit(.:format) commits#edit
# project_commit GET /:project_id/commits/:id(.:format) commits#show
# PUT /:project_id/commits/:id(.:format) commits#update
# DELETE /:project_id/commits/:id(.:format) commits#destroy
describe CommitsController, "routing" do
it "to #compare" do
get("/gitlabhq/commits/compare").should route_to('commits#compare', project_id: 'gitlabhq')
Loading
Loading
@@ -307,6 +303,10 @@ describe CommitsController, "routing" do
get("/gitlabhq/commits/1/patch").should route_to('commits#patch', project_id: 'gitlabhq', id: '1')
end
 
it "does something with atom feeds" do
get("/gitlabhq/commits/master.atom").should route_to('commits#show', project_id: 'gitlabhq', id: 'master.atom')
end
it_behaves_like "RESTful project resources" do
let(:actions) { [:index, :show] }
let(:controller) { 'commits' }
Loading
Loading
@@ -425,6 +425,7 @@ end
# /:project_id/commits/*path
# /gitlabhq/commits/master/app/contexts/base_context.rb
# /gitlabhq/commits/test/branch/name/app/contexts/base_context.rb
# /gitlabhq/commits/master.atom
#
# /:project_id/raw/*path
# /gitlabhq/raw/master/app/contexts/base_context.rb
Loading
Loading
@@ -436,13 +437,6 @@ end
describe "pending routing" do
before { pending }
 
describe "/:project_id/commit/:id" do
it "routes to a specific commit" do
get("/gitlabhq/commit/f4b1449").should route_to('commit#show', project_id: 'gitlabhq', id: 'f4b1449')
get("/gitlabhq/commit/f4b14494ef6abf3d144c28e4af0c20143383e062").should route_to('commit#show', project_id: 'gitlabhq', id: 'f4b14494ef6abf3d144c28e4af0c20143383e062')
end
end
describe "/:project_id/raw/:id" do
it "routes to a ref with a path" do
get("/gitlabhq/raw/master/app/models/project.rb").should route_to('raw#show', project_id: 'gitlabhq', id: 'master/app/models/project.rb')
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment