diff --git a/lib/gollum/app.rb b/lib/gollum/app.rb index e2bcb1f0..a7de7750 100644 --- a/lib/gollum/app.rb +++ b/lib/gollum/app.rb @@ -402,6 +402,8 @@ module Precious @content = page.formatted_data @version = version mustache :page + elsif file = wikip.wiki.file("#{file_path}", version, true) + show_file(file) else halt 404 end @@ -472,18 +474,23 @@ module Precious mustache :page elsif file = wiki.file(fullpath, wiki.ref, true) - if file.on_disk? - send_file file.on_disk_path, :disposition => 'inline' - else - content_type file.mime_type - file.raw_data - end + show_file(file) else page_path = [path, name].compact.join('/') redirect to("/create/#{clean_url(encodeURIComponent(page_path))}") end end + def show_file(file) + return unless file + if file.on_disk? + send_file file.on_disk_path, :disposition => 'inline' + else + content_type file.mime_type + file.raw_data + end + end + def update_wiki_page(wiki, page, content, commit, name = nil, format = nil) return if !page || ((!content || page.raw_data == content) && page.format == format) diff --git a/test/helper.rb b/test/helper.rb index fd4bf782..91f09d06 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -87,3 +87,14 @@ def context(*args, &block) end $contexts = [] + +# Commit file to wiki, overwriting previous versions of that file +def commit_test_file(wiki, dir, filename, ext, content) + committer = Gollum::Committer.new(wiki, :message => "Added testfile", :parent => wiki.repo.head.commit) + committer.add_to_index(dir, filename, ext, content, true) + committer.after_commit do |committer, sha| + wiki.clear_cache + committer.update_working_dir(dir, filename, ext) + end + committer.commit +end diff --git a/test/test_app.rb b/test/test_app.rb index ef0fc318..ffd0e7b3 100644 --- a/test/test_app.rb +++ b/test/test_app.rb @@ -542,6 +542,19 @@ context "Frontend" do assert_match /meta name="robots" content="noindex, nofollow"/, last_response.body end + test "show revision of specific file" do + shas = {} + ["First revision of testfile", "Second revision of testfile"].each do |content| + new_commit = commit_test_file(@wiki, "revisions", "testfile", "log", content) + shas[new_commit] = content + end + shas.each do |sha, content| + get "revisions/testfile.log/#{sha}" + assert last_response.ok? + assert_match /#{content}/, last_response.body + end + end + def app Precious::App end