Defect #31141 » fix-31141.patch
| app/controllers/repositories_controller.rb | ||
|---|---|---|
| 257 | 257 |
Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}-#{current_language}")
|
| 258 | 258 |
unless read_fragment(@cache_key) |
| 259 | 259 |
@diff = @repository.diff(@path, @rev, @rev_to) |
| 260 |
show_error_not_found unless @diff
|
|
| 260 |
(show_error_not_found; return) unless @diff
|
|
| 261 | 261 |
end |
| 262 | 262 | |
| 263 | 263 |
@changeset = @repository.find_changeset_by_name(@rev) |
| 264 | 264 |
@changeset_to = @rev_to ? @repository.find_changeset_by_name(@rev_to) : nil |
| 265 | 265 |
@diff_format_revisions = @repository.diff_format_revisions(@changeset, @changeset_to) |
| 266 |
render :diff, :formats => :html |
|
| 266 | 267 |
end |
| 267 | 268 |
end |
| 268 | 269 | |
| config/routes.rb | ||
|---|---|---|
| 249 | 249 |
post 'projects/:id/repository/:repository_id/revisions/:rev/issues', :to => 'repositories#add_related_issue' |
| 250 | 250 |
delete 'projects/:id/repository/:repository_id/revisions/:rev/issues/:issue_id', :to => 'repositories#remove_related_issue' |
| 251 | 251 |
get 'projects/:id/repository/:repository_id/revisions', :to => 'repositories#revisions' |
| 252 |
%w(browse show entry raw annotate diff).each do |action|
|
|
| 252 |
%w(browse show entry raw annotate).each do |action| |
|
| 253 | 253 |
get "projects/:id/repository/:repository_id/revisions/:rev/#{action}(/*path)",
|
| 254 | 254 |
:controller => 'repositories', |
| 255 | 255 |
:action => action, |
| 256 |
:format => false,
|
|
| 256 |
:format => 'html',
|
|
| 257 | 257 |
:constraints => {:rev => /[a-z0-9\.\-_]+/, :path => /.*/}
|
| 258 | 258 |
end |
| 259 | 259 | |
| 260 |
%w(browse entry raw changes annotate diff).each do |action|
|
|
| 260 |
%w(browse entry raw changes annotate).each do |action| |
|
| 261 | 261 |
get "projects/:id/repository/:repository_id/#{action}(/*path)",
|
| 262 | 262 |
:controller => 'repositories', |
| 263 | 263 |
:action => action, |
| 264 |
:format => false,
|
|
| 264 |
:format => 'html',
|
|
| 265 | 265 |
:constraints => {:path => /.*/}
|
| 266 | 266 |
end |
| 267 | 267 | |
| 268 |
get "projects/:id/repository/:repository_id/revisions/:rev/diff(/*path)", |
|
| 269 |
:to => 'repositories#diff', |
|
| 270 |
:format => false, |
|
| 271 |
:constraints => {:rev => /[a-z0-9\.\-_]+/, :path => /.*/}
|
|
| 272 |
get "projects/:id/repository/:repository_id/diff(/*path)", |
|
| 273 |
:to => 'repositories#diff', |
|
| 274 |
:format => false, |
|
| 275 |
:constraints => {:path => /.*/}
|
|
| 276 | ||
| 268 | 277 |
get 'projects/:id/repository/:repository_id/show/*path', :to => 'repositories#show', :format => 'html', :constraints => {:path => /.*/}
|
| 269 | 278 | |
| 270 | 279 |
get 'projects/:id/repository/:repository_id', :to => 'repositories#show', :path => nil |
| test/integration/repositories_git_test.rb | ||
|---|---|---|
| 78 | 78 |
assert_match /\Acommit deff712f05a90d96edbd70facc47d944be5897e3/, response.body |
| 79 | 79 |
end |
| 80 | 80 | |
| 81 |
def test_get_diff_with_format_text_should_return_html |
|
| 82 |
@repository.fetch_changesets |
|
| 83 |
assert_equal NUM_REV, @repository.changesets.count |
|
| 84 | ||
| 85 |
get "/projects/subproject1/repository/#{@repository.id}/revisions/deff712f05a90d96edbd70facc47d944be5897e3/diff/sources/watchers_controller.rb", :params => { :format => 'txt' }
|
|
| 86 |
assert_response :success |
|
| 87 | ||
| 88 |
assert a = css_select("a.diff").first
|
|
| 89 |
assert_equal 'Unified diff', a.text |
|
| 90 |
get a['href'] |
|
| 91 |
assert_response :success |
|
| 92 |
assert_match /\Acommit deff712f05a90d96edbd70facc47d944be5897e3/, response.body |
|
| 93 |
end |
|
| 94 | ||
| 81 | 95 |
else |
| 82 | 96 |
puts "Git test repository NOT FOUND. Skipping integration tests !!!" |
| 83 | 97 |
def test_fake; assert true end |
| test/integration/routing/repositories_test.rb | ||
|---|---|---|
| 53 | 53 |
should_route 'GET /projects/foo/repository/foo/revisions.atom' => 'repositories#revisions', :id => 'foo', :repository_id => 'foo', :format => 'atom' |
| 54 | 54 | |
| 55 | 55 |
should_route 'GET /projects/foo/repository/foo/revisions/2457' => 'repositories#revision', :id => 'foo', :repository_id => 'foo', :rev => '2457' |
| 56 |
should_route 'GET /projects/foo/repository/foo/revisions/2457/show' => 'repositories#show', :id => 'foo', :repository_id => 'foo', :rev => '2457' |
|
| 56 |
should_route 'GET /projects/foo/repository/foo/revisions/2457/show' => 'repositories#show', :id => 'foo', :repository_id => 'foo', :rev => '2457', :format => 'html'
|
|
| 57 | 57 |
should_route 'GET /projects/foo/repository/foo/revisions/2457/diff' => 'repositories#diff', :id => 'foo', :repository_id => 'foo', :rev => '2457' |
| 58 | 58 | |
| 59 |
%w(show diff entry raw annotate).each do |action|
|
|
| 59 |
%w(show entry raw annotate).each do |action| |
|
| 60 | 60 |
@paths.each do |path| |
| 61 | 61 |
should_route "GET /projects/foo/repository/foo/revisions/2457/#{action}/#{path}" => "repositories##{action}",
|
| 62 |
:id => 'foo', :repository_id => 'foo', :rev => '2457', :path => path |
|
| 62 |
:id => 'foo', :repository_id => 'foo', :rev => '2457', :path => path, :format => 'html'
|
|
| 63 | 63 |
end |
| 64 | 64 |
end |
| 65 |
@paths.each do |path| |
|
| 66 |
should_route "GET /projects/foo/repository/foo/revisions/2457/diff/#{path}" => "repositories#diff",
|
|
| 67 |
:id => 'foo', :repository_id => 'foo', :rev => '2457', :path => path |
|
| 68 |
end |
|
| 65 | 69 |
end |
| 66 | 70 | |
| 67 | 71 |
def test_repositories_non_revisions_path_with_repository_id |
| 68 |
should_route 'GET /projects/foo/repository/svn/changes' => 'repositories#changes', :id => 'foo', :repository_id => 'svn' |
|
| 72 |
should_route 'GET /projects/foo/repository/svn/changes' => 'repositories#changes', :id => 'foo', :repository_id => 'svn', :format => 'html'
|
|
| 69 | 73 | |
| 70 |
%w(changes diff browse entry raw annotate).each do |action|
|
|
| 74 |
%w(changes browse entry raw annotate).each do |action| |
|
| 71 | 75 |
@paths.each do |path| |
| 72 | 76 |
should_route "GET /projects/foo/repository/svn/#{action}/#{path}" => "repositories##{action}",
|
| 73 |
:id => 'foo', :repository_id => 'svn', :path => path |
|
| 77 |
:id => 'foo', :repository_id => 'svn', :path => path, :format => 'html'
|
|
| 74 | 78 |
end |
| 75 | 79 |
end |
| 80 |
@paths.each do |path| |
|
| 81 |
should_route "GET /projects/foo/repository/svn/diff/#{path}" => "repositories#diff",
|
|
| 82 |
:id => 'foo', :repository_id => 'svn', :path => path |
|
| 83 |
end |
|
| 76 | 84 |
end |
| 77 | 85 | |
| 78 | 86 |
def test_repositories_related_issues_with_repository_id |