summaryrefslogtreecommitdiffstats
path: root/test/functional
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2008-04-06 10:35:55 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2008-04-06 10:35:55 +0000
commit154f60edd353c2215b9e1622a2e47bdcc5f70101 (patch)
treed12b75e28a5a719b6da5b4102f2651da6702ad3f /test/functional
parentc37abb64151e18461cb739ed4658d912a7c752e8 (diff)
downloadredmine-154f60edd353c2215b9e1622a2e47bdcc5f70101.tar.gz
redmine-154f60edd353c2215b9e1622a2e47bdcc5f70101.zip
Fix repository browsing at given revision for various scm and add tests for this.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1329 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'test/functional')
-rw-r--r--test/functional/repositories_bazaar_controller_test.rb129
-rw-r--r--test/functional/repositories_cvs_controller_test.rb17
-rw-r--r--test/functional/repositories_darcs_controller_test.rb11
-rw-r--r--test/functional/repositories_git_controller_test.rb12
-rw-r--r--test/functional/repositories_mercurial_controller_test.rb12
-rw-r--r--test/functional/repositories_subversion_controller_test.rb13
6 files changed, 184 insertions, 10 deletions
diff --git a/test/functional/repositories_bazaar_controller_test.rb b/test/functional/repositories_bazaar_controller_test.rb
new file mode 100644
index 000000000..5a473bab3
--- /dev/null
+++ b/test/functional/repositories_bazaar_controller_test.rb
@@ -0,0 +1,129 @@
+# redMine - project management software
+# Copyright (C) 2006-2008 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+require File.dirname(__FILE__) + '/../test_helper'
+require 'repositories_controller'
+
+# Re-raise errors caught by the controller.
+class RepositoriesController; def rescue_action(e) raise e end; end
+
+class RepositoriesBazaarControllerTest < Test::Unit::TestCase
+ fixtures :projects, :users, :roles, :members, :repositories, :enabled_modules
+
+ # No '..' in the repository path
+ REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/bazaar_repository'
+
+ def setup
+ @controller = RepositoriesController.new
+ @request = ActionController::TestRequest.new
+ @response = ActionController::TestResponse.new
+ User.current = nil
+ Repository::Bazaar.create(:project => Project.find(3), :url => REPOSITORY_PATH)
+ end
+
+ if File.directory?(REPOSITORY_PATH)
+ def test_show
+ get :show, :id => 3
+ assert_response :success
+ assert_template 'show'
+ assert_not_nil assigns(:entries)
+ assert_not_nil assigns(:changesets)
+ end
+
+ def test_browse_root
+ get :browse, :id => 3
+ assert_response :success
+ assert_template 'browse'
+ assert_not_nil assigns(:entries)
+ assert_equal 2, assigns(:entries).size
+ assert assigns(:entries).detect {|e| e.name == 'directory' && e.kind == 'dir'}
+ assert assigns(:entries).detect {|e| e.name == 'doc-mkdir.txt' && e.kind == 'file'}
+ end
+
+ def test_browse_directory
+ get :browse, :id => 3, :path => ['directory']
+ assert_response :success
+ assert_template 'browse'
+ assert_not_nil assigns(:entries)
+ assert_equal ['doc-ls.txt', 'document.txt', 'edit.png'], assigns(:entries).collect(&:name)
+ entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
+ assert_not_nil entry
+ assert_equal 'file', entry.kind
+ assert_equal 'directory/edit.png', entry.path
+ end
+
+ def test_browse_at_given_revision
+ get :browse, :id => 3, :path => [], :rev => 3
+ assert_response :success
+ assert_template 'browse'
+ assert_not_nil assigns(:entries)
+ assert_equal ['directory', 'doc-deleted.txt', 'doc-ls.txt', 'doc-mkdir.txt'], assigns(:entries).collect(&:name)
+ end
+
+ def test_changes
+ get :changes, :id => 3, :path => ['doc-mkdir.txt']
+ assert_response :success
+ assert_template 'changes'
+ assert_tag :tag => 'h2', :content => 'doc-mkdir.txt'
+ end
+
+ def test_entry_show
+ get :entry, :id => 3, :path => ['directory', 'doc-ls.txt']
+ assert_response :success
+ assert_template 'entry'
+ # Line 19
+ assert_tag :tag => 'th',
+ :content => /29/,
+ :attributes => { :class => /line-num/ },
+ :sibling => { :tag => 'td', :content => /Show help message/ }
+ end
+
+ def test_entry_download
+ get :entry, :id => 3, :path => ['directory', 'doc-ls.txt'], :format => 'raw'
+ assert_response :success
+ # File content
+ assert @response.body.include?('Show help message')
+ end
+
+ def test_diff
+ # Full diff of changeset 3
+ get :diff, :id => 3, :rev => 3
+ assert_response :success
+ assert_template 'diff'
+ # Line 22 removed
+ assert_tag :tag => 'th',
+ :content => /2/,
+ :sibling => { :tag => 'td',
+ :attributes => { :class => /diff_in/ },
+ :content => /Main purpose/ }
+ end
+
+ def test_annotate
+ get :annotate, :id => 3, :path => ['doc-mkdir.txt']
+ assert_response :success
+ assert_template 'annotate'
+ # Line 2, revision 3
+ assert_tag :tag => 'th', :content => /2/,
+ :sibling => { :tag => 'td', :child => { :tag => 'a', :content => /3/ } },
+ :sibling => { :tag => 'td', :content => /jsmith/ },
+ :sibling => { :tag => 'td', :content => /Main purpose/ }
+ end
+ else
+ puts "Bazaar test repository NOT FOUND. Skipping functional tests !!!"
+ def test_fake; assert true end
+ end
+end
diff --git a/test/functional/repositories_cvs_controller_test.rb b/test/functional/repositories_cvs_controller_test.rb
index 1e101f59a..d6181ad36 100644
--- a/test/functional/repositories_cvs_controller_test.rb
+++ b/test/functional/repositories_cvs_controller_test.rb
@@ -65,13 +65,24 @@ class RepositoriesCvsControllerTest < Test::Unit::TestCase
end
def test_browse_directory
- get :browse, :id => 1, :path => ['sources']
+ get :browse, :id => 1, :path => ['images']
assert_response :success
assert_template 'browse'
assert_not_nil assigns(:entries)
- entry = assigns(:entries).detect {|e| e.name == 'watchers_controller.rb'}
+ assert_equal ['add.png', 'delete.png', 'edit.png'], assigns(:entries).collect(&:name)
+ entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
+ assert_not_nil entry
assert_equal 'file', entry.kind
- assert_equal 'sources/watchers_controller.rb', entry.path
+ assert_equal 'images/edit.png', entry.path
+ end
+
+ def test_browse_at_given_revision
+ Project.find(1).repository.fetch_changesets
+ get :browse, :id => 1, :path => ['images'], :rev => 1
+ assert_response :success
+ assert_template 'browse'
+ assert_not_nil assigns(:entries)
+ assert_equal ['delete.png', 'edit.png'], assigns(:entries).collect(&:name)
end
def test_entry
diff --git a/test/functional/repositories_darcs_controller_test.rb b/test/functional/repositories_darcs_controller_test.rb
index fc77b8747..43c715924 100644
--- a/test/functional/repositories_darcs_controller_test.rb
+++ b/test/functional/repositories_darcs_controller_test.rb
@@ -60,13 +60,22 @@ class RepositoriesDarcsControllerTest < Test::Unit::TestCase
assert_response :success
assert_template 'browse'
assert_not_nil assigns(:entries)
- assert_equal 2, assigns(:entries).size
+ assert_equal ['delete.png', 'edit.png'], assigns(:entries).collect(&:name)
entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
assert_not_nil entry
assert_equal 'file', entry.kind
assert_equal 'images/edit.png', entry.path
end
+ def test_browse_at_given_revision
+ Project.find(3).repository.fetch_changesets
+ get :browse, :id => 3, :path => ['images'], :rev => 1
+ assert_response :success
+ assert_template 'browse'
+ assert_not_nil assigns(:entries)
+ assert_equal ['delete.png'], assigns(:entries).collect(&:name)
+ end
+
def test_changes
get :changes, :id => 3, :path => ['images', 'edit.png']
assert_response :success
diff --git a/test/functional/repositories_git_controller_test.rb b/test/functional/repositories_git_controller_test.rb
index f8b3cb2bb..10a4950f3 100644
--- a/test/functional/repositories_git_controller_test.rb
+++ b/test/functional/repositories_git_controller_test.rb
@@ -1,5 +1,5 @@
# redMine - project management software
-# Copyright (C) 2006-2007 Jean-Philippe Lang
+# Copyright (C) 2006-2008 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -61,13 +61,21 @@ class RepositoriesGitControllerTest < Test::Unit::TestCase
assert_response :success
assert_template 'browse'
assert_not_nil assigns(:entries)
- assert_equal 2, assigns(:entries).size
+ assert_equal ['delete.png', 'edit.png'], assigns(:entries).collect(&:name)
entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
assert_not_nil entry
assert_equal 'file', entry.kind
assert_equal 'images/edit.png', entry.path
end
+ def test_browse_at_given_revision
+ get :browse, :id => 3, :path => ['images'], :rev => '7234cb2750b63f47bff735edc50a1c0a433c2518'
+ assert_response :success
+ assert_template 'browse'
+ assert_not_nil assigns(:entries)
+ assert_equal ['delete.png'], assigns(:entries).collect(&:name)
+ end
+
def test_changes
get :changes, :id => 3, :path => ['images', 'edit.png']
assert_response :success
diff --git a/test/functional/repositories_mercurial_controller_test.rb b/test/functional/repositories_mercurial_controller_test.rb
index 736e38c83..b09265d13 100644
--- a/test/functional/repositories_mercurial_controller_test.rb
+++ b/test/functional/repositories_mercurial_controller_test.rb
@@ -1,5 +1,5 @@
# redMine - project management software
-# Copyright (C) 2006-2007 Jean-Philippe Lang
+# Copyright (C) 2006-2008 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -60,13 +60,21 @@ class RepositoriesMercurialControllerTest < Test::Unit::TestCase
assert_response :success
assert_template 'browse'
assert_not_nil assigns(:entries)
- assert_equal 2, assigns(:entries).size
+ assert_equal ['delete.png', 'edit.png'], assigns(:entries).collect(&:name)
entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
assert_not_nil entry
assert_equal 'file', entry.kind
assert_equal 'images/edit.png', entry.path
end
+ def test_browse_at_given_revision
+ get :browse, :id => 3, :path => ['images'], :rev => 0
+ assert_response :success
+ assert_template 'browse'
+ assert_not_nil assigns(:entries)
+ assert_equal ['delete.png'], assigns(:entries).collect(&:name)
+ end
+
def test_changes
get :changes, :id => 3, :path => ['images', 'edit.png']
assert_response :success
diff --git a/test/functional/repositories_subversion_controller_test.rb b/test/functional/repositories_subversion_controller_test.rb
index 9b21a13e8..adb69c8e9 100644
--- a/test/functional/repositories_subversion_controller_test.rb
+++ b/test/functional/repositories_subversion_controller_test.rb
@@ -1,5 +1,5 @@
# redMine - project management software
-# Copyright (C) 2006-2007 Jean-Philippe Lang
+# Copyright (C) 2006-2008 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -58,11 +58,20 @@ class RepositoriesSubversionControllerTest < Test::Unit::TestCase
assert_response :success
assert_template 'browse'
assert_not_nil assigns(:entries)
+ assert_equal ['folder', '.project', 'helloworld.c', 'textfile.txt'], assigns(:entries).collect(&:name)
entry = assigns(:entries).detect {|e| e.name == 'helloworld.c'}
assert_equal 'file', entry.kind
assert_equal 'subversion_test/helloworld.c', entry.path
end
-
+
+ def test_browse_at_given_revision
+ get :browse, :id => 1, :path => ['subversion_test'], :rev => 4
+ assert_response :success
+ assert_template 'browse'
+ assert_not_nil assigns(:entries)
+ assert_equal ['folder', '.project', 'helloworld.c', 'helloworld.rb', 'textfile.txt'], assigns(:entries).collect(&:name)
+ end
+
def test_entry
get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c']
assert_response :success