Update RefExtractor to handle atom feeds
This commit is contained in:
parent
398ba6f1bb
commit
a8ea8d98a4
3 changed files with 12 additions and 15 deletions
|
@ -1,8 +1,5 @@
|
|||
# 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"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# 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
|
||||
|
@ -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)
|
||||
|
|
|
@ -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')
|
||||
|
@ -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' }
|
||||
|
@ -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
|
||||
|
@ -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…
Reference in a new issue