Mercurial > hg > soundsoftware-site
diff test/functional/repositories_mercurial_controller_test.rb @ 119:8661b858af72
* Update to Redmine trunk rev 4705
author | Chris Cannam |
---|---|
date | Thu, 13 Jan 2011 14:12:06 +0000 |
parents | 513646585e45 |
children | cd2282d2aa55 07fa8a8b56a8 |
line wrap: on
line diff
--- a/test/functional/repositories_mercurial_controller_test.rb Fri Nov 19 14:05:24 2010 +0000 +++ b/test/functional/repositories_mercurial_controller_test.rb Thu Jan 13 14:12:06 2011 +0000 @@ -15,7 +15,7 @@ # 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 File.expand_path('../../test_helper', __FILE__) require 'repositories_controller' # Re-raise errors caught by the controller. @@ -32,9 +32,10 @@ @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new User.current = nil - Repository::Mercurial.create(:project => Project.find(3), :url => REPOSITORY_PATH) + @repository = Repository::Mercurial.create(:project => Project.find(3), :url => REPOSITORY_PATH) + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_show get :show, :id => 3 @@ -49,10 +50,10 @@ assert_response :success assert_template 'show' assert_not_nil assigns(:entries) - assert_equal 3, assigns(:entries).size - assert assigns(:entries).detect {|e| e.name == 'images' && e.kind == 'dir'} + assert_equal 4, assigns(:entries).size + assert assigns(:entries).detect {|e| e.name == 'images' && e.kind == 'dir'} assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'} - assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'} + assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'} end def test_show_directory @@ -66,15 +67,33 @@ assert_equal 'file', entry.kind assert_equal 'images/edit.png', entry.path end - + def test_show_at_given_revision - get :show, :id => 3, :path => ['images'], :rev => 0 - assert_response :success - assert_template 'show' - assert_not_nil assigns(:entries) - assert_equal ['delete.png'], assigns(:entries).collect(&:name) + [0, '0', '0885933ad4f6'].each do |r1| + get :show, :id => 3, :path => ['images'], :rev => r1 + assert_response :success + assert_template 'show' + assert_not_nil assigns(:entries) + assert_equal ['delete.png'], assigns(:entries).collect(&:name) + end end - + + def test_show_directory_sql_escape_percent + [13, '13', '3a330eb32958'].each do |r1| + get :show, :id => 3, :path => ['sql_escape', 'percent%dir'], :rev => r1 + assert_response :success + assert_template 'show' + + assert_not_nil assigns(:entries) + assert_equal ['percent%file1.txt', 'percentfile1.txt'], assigns(:entries).collect(&:name) + changesets = assigns(:changesets) + + ## This is not yet implemented. + # assert_not_nil changesets + # assert_equal %w(13 11 10 9), changesets.collect(&:revision) + end + end + def test_changes get :changes, :id => 3, :path => ['images', 'edit.png'] assert_response :success @@ -86,10 +105,10 @@ get :entry, :id => 3, :path => ['sources', 'watchers_controller.rb'] assert_response :success assert_template 'entry' - # Line 19 + # Line 10 assert_tag :tag => 'th', - :content => /10/, - :attributes => { :class => /line-num/ }, + :content => '10', + :attributes => { :class => 'line-num' }, :sibling => { :tag => 'td', :content => /WITHOUT ANY WARRANTY/ } end @@ -109,28 +128,83 @@ end def test_diff - # Full diff of changeset 4 - get :diff, :id => 3, :rev => 4 - assert_response :success - assert_template 'diff' - # Line 22 removed - assert_tag :tag => 'th', - :content => /22/, - :sibling => { :tag => 'td', - :attributes => { :class => /diff_out/ }, - :content => /def remove/ } + @repository.fetch_changesets + @repository.reload + + [4, '4', 'def6d2f1254a'].each do |r1| + # Full diff of changeset 4 + get :diff, :id => 3, :rev => 4 + assert_response :success + assert_template 'diff' + + if @repository.scm.class.client_version_above?([1, 2]) + # Line 22 removed + assert_tag :tag => 'th', + :content => '22', + :sibling => { :tag => 'td', + :attributes => { :class => /diff_out/ }, + :content => /def remove/ } + assert_tag :tag => 'h2', :content => /4:def6d2f1254a/ + end + end end - + + def test_diff_two_revs + @repository.fetch_changesets + @repository.reload + + [2, '400bb8672109', '400', 400].each do |r1| + [4, 'def6d2f1254a'].each do |r2| + get :diff, :id => 3, :rev => r1, + :rev_to => r2 + assert_response :success + assert_template 'diff' + + diff = assigns(:diff) + assert_not_nil diff + assert_tag :tag => 'h2', :content => /4:def6d2f1254a 2:400bb8672109/ + end + end + end + def test_annotate get :annotate, :id => 3, :path => ['sources', 'watchers_controller.rb'] assert_response :success assert_template 'annotate' - # Line 23, revision 4 - assert_tag :tag => 'th', :content => /23/, - :sibling => { :tag => 'td', :child => { :tag => 'a', :content => /4/ } }, - :sibling => { :tag => 'td', :content => /jsmith/ }, + # Line 23, revision 4:def6d2f1254a + assert_tag :tag => 'th', + :content => '23', + :attributes => { :class => 'line-num' }, + :sibling => + { + :tag => 'td', + :attributes => { :class => 'revision' }, + :child => { :tag => 'a', :content => '4:def6d2f1254a' } + } + assert_tag :tag => 'th', + :content => '23', + :attributes => { :class => 'line-num' }, + :sibling => + { + :tag => 'td' , + :content => 'jsmith' , + :attributes => { :class => 'author' }, + } + assert_tag :tag => 'th', + :content => '23', + :attributes => { :class => 'line-num' }, :sibling => { :tag => 'td', :content => /watcher =/ } end + + def test_empty_revision + @repository.fetch_changesets + @repository.reload + ['', ' ', nil].each do |r| + get :revision, :id => 1, :rev => r + assert_response 500 + assert_error_tag :content => /was not found/ + end + end else puts "Mercurial test repository NOT FOUND. Skipping functional tests !!!" def test_fake; assert true end