BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
e33cbb9b
Commit
e33cbb9b
authored
Sep 17, 2012
by
Robert Speicher
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add TreeController and spec
parent
884eb732
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
100 additions
and
3 deletions
+100
-3
tree_controller.rb
app/controllers/tree_controller.rb
+49
-0
tree.rb
app/models/tree.rb
+7
-3
tree_controller_spec.rb
spec/controllers/tree_controller_spec.rb
+43
-0
spec_helper.rb
spec/spec_helper.rb
+1
-0
No files found.
app/controllers/tree_controller.rb
0 → 100644
View file @
e33cbb9b
# 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"
before_filter
:project
# Authorize
before_filter
:add_project_abilities
before_filter
:authorize_read_project!
before_filter
:authorize_code_access!
before_filter
:require_non_empty_project
before_filter
:define_tree_vars
def
show
respond_to
do
|
format
|
format
.
html
# Disable cache so browser history works
format
.
js
{
no_cache_headers
}
end
end
private
def
define_tree_vars
@ref
,
@path
=
extract_ref
(
params
[
:id
])
@id
=
File
.
join
(
@ref
,
@path
)
@repo
=
@project
.
repo
@commit
=
CommitDecorator
.
decorate
(
@project
.
commit
(
@ref
))
@tree
=
Tree
.
new
(
@commit
.
tree
,
@project
,
@ref
,
@path
.
gsub
(
/^\//
,
''
))
@tree
=
TreeDecorator
.
new
(
@tree
)
raise
InvalidPathError
if
@tree
.
invalid?
@hex_path
=
Digest
::
SHA1
.
hexdigest
(
@path
)
@history_path
=
project_tree_path
(
@project
,
@id
)
@logs_path
=
logs_file_project_ref_path
(
@project
,
@ref
,
@path
)
rescue
NoMethodError
,
InvalidPathError
not_found!
end
end
app/models/tree.rb
View file @
e33cbb9b
class
Tree
include
Linguist
::
BlobHelper
include
Linguist
::
BlobHelper
attr_accessor
:path
,
:tree
,
:project
,
:ref
delegate
:contents
,
...
...
@@ -14,8 +14,8 @@ class Tree
to: :tree
def
initialize
(
raw_tree
,
project
,
ref
=
nil
,
path
=
nil
)
@project
,
@ref
,
@path
=
project
,
ref
,
path
,
@tree
=
if
path
@project
,
@ref
,
@path
=
project
,
ref
,
path
@tree
=
if
path
.
present?
raw_tree
/
path
.
dup
.
force_encoding
(
'ascii-8bit'
)
else
raw_tree
...
...
@@ -26,6 +26,10 @@ class Tree
tree
.
is_a?
(
Grit
::
Blob
)
end
def
invalid?
tree
.
nil?
end
def
empty?
data
.
blank?
end
...
...
spec/controllers/tree_controller_spec.rb
0 → 100644
View file @
e33cbb9b
require
'spec_helper'
describe
TreeController
do
let
(
:project
)
{
create
(
:project
)
}
let
(
:user
)
{
create
(
:user
)
}
before
do
sign_in
(
user
)
project
.
add_access
(
user
,
:read
,
:admin
)
project
.
stub
(
:branches
).
and_return
([
'master'
,
'foo/bar/baz'
])
project
.
stub
(
:tags
).
and_return
([
'v1.0.0'
,
'v2.0.0'
])
controller
.
instance_variable_set
(
:@project
,
project
)
end
describe
"GET show"
do
# Make sure any errors accessing the tree in our views bubble up to this spec
render_views
before
{
get
:show
,
project_id:
project
.
code
,
id:
id
}
context
"valid branch, no path"
do
let
(
:id
)
{
'master'
}
it
{
should
respond_with
(
:success
)
}
end
context
"valid branch, valid path"
do
let
(
:id
)
{
'master/README.md'
}
it
{
should
respond_with
(
:success
)
}
end
context
"valid branch, invalid path"
do
let
(
:id
)
{
'master/invalid-path.rb'
}
it
{
should
respond_with
(
:not_found
)
}
end
context
"invalid branch, valid path"
do
let
(
:id
)
{
'invalid-branch/README.md'
}
it
{
should
respond_with
(
:not_found
)
}
end
end
end
spec/spec_helper.rb
View file @
e33cbb9b
...
...
@@ -28,6 +28,7 @@ RSpec.configure do |config|
config
.
include
LoginHelpers
,
type: :request
config
.
include
GitoliteStub
config
.
include
FactoryGirl
::
Syntax
::
Methods
config
.
include
Devise
::
TestHelpers
,
type: :controller
# If you're not using ActiveRecord, or you'd prefer not to run each of your
# examples within a transaction, remove the following line or assign false
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment