summaryrefslogtreecommitdiffstats
path: root/test/functional/repositories_mercurial_controller_test.rb
diff options
context:
space:
mode:
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>2011-03-04 11:07:58 +0000
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>2011-03-04 11:07:58 +0000
commit82c670ba0355d6ece6506633f7db219bea482117 (patch)
treea02ca3b39862b00e10f00db6cfa45e197976786d /test/functional/repositories_mercurial_controller_test.rb
parent17219baa626d8140d81749ab1e5b1ffb2090ed06 (diff)
downloadredmine-82c670ba0355d6ece6506633f7db219bea482117.tar.gz
redmine-82c670ba0355d6ece6506633f7db219bea482117.zip
scm: mercurial: add path encoding tests in functional test (#2664, #4050).
TODO: This test fails in Ruby 1.9 and Encoding.default_external is not UTF-8. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5000 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'test/functional/repositories_mercurial_controller_test.rb')
-rw-r--r--test/functional/repositories_mercurial_controller_test.rb90
1 files changed, 89 insertions, 1 deletions
diff --git a/test/functional/repositories_mercurial_controller_test.rb b/test/functional/repositories_mercurial_controller_test.rb
index 3960285fd..15c621673 100644
--- a/test/functional/repositories_mercurial_controller_test.rb
+++ b/test/functional/repositories_mercurial_controller_test.rb
@@ -26,6 +26,9 @@ class RepositoriesMercurialControllerTest < ActionController::TestCase
# No '..' in the repository path
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/mercurial_repository'
+ CHAR_1_HEX = "\xc3\x9c"
+
+ ruby19_non_utf8_pass = (RUBY_VERSION >= '1.9' && Encoding.default_external.to_s != 'UTF-8')
def setup
@controller = RepositoriesController.new
@@ -39,9 +42,18 @@ class RepositoriesMercurialControllerTest < ActionController::TestCase
)
assert @repository
@diff_c_support = true
+ @char_1 = CHAR_1_HEX.dup
+ if @char_1.respond_to?(:force_encoding)
+ @char_1.force_encoding('UTF-8')
+ end
end
- if File.directory?(REPOSITORY_PATH)
+ if ruby19_non_utf8_pass
+ puts "TODO: Mercurial functional test fails in Ruby 1.9 " +
+ "and Encoding.default_external is not UTF-8. " +
+ "Current value is '#{Encoding.default_external.to_s}'"
+ def test_fake; assert true end
+ elsif File.directory?(REPOSITORY_PATH)
def test_show
get :show, :id => 3
assert_response :success
@@ -99,6 +111,25 @@ class RepositoriesMercurialControllerTest < ActionController::TestCase
end
end
+ def test_show_directory_latin_1
+ @repository.fetch_changesets
+ @repository.reload
+ [21, '21', 'adf805632193'].each do |r1|
+ get :show, :id => 3, :path => ['latin-1-dir'], :rev => r1
+ assert_response :success
+ assert_template 'show'
+
+ assert_not_nil assigns(:entries)
+ assert_equal ["make-latin-1-file.rb",
+ "test-#{@char_1}-1.txt",
+ "test-#{@char_1}-2.txt",
+ "test-#{@char_1}.txt"], assigns(:entries).collect(&:name)
+ changesets = assigns(:changesets)
+ assert_not_nil changesets
+ assert_equal %w(21 20 19 18 17), changesets.collect(&:revision)
+ end
+ end
+
def test_changes
get :changes, :id => 3, :path => ['images', 'edit.png']
assert_response :success
@@ -116,6 +147,18 @@ class RepositoriesMercurialControllerTest < ActionController::TestCase
:attributes => { :class => 'line-num' },
:sibling => { :tag => 'td', :content => /WITHOUT ANY WARRANTY/ }
end
+
+ def test_entry_show_latin_1
+ [21, '21', 'adf805632193'].each do |r1|
+ get :entry, :id => 3, :path => ['latin-1-dir', "test-#{@char_1}-2.txt"], :rev => r1
+ assert_response :success
+ assert_template 'entry'
+ assert_tag :tag => 'th',
+ :content => '1',
+ :attributes => { :class => 'line-num' },
+ :sibling => { :tag => 'td', :content => /Mercurial is a distributed version control system/ }
+ end
+ end
def test_entry_download
get :entry, :id => 3, :path => ['sources', 'watchers_controller.rb'], :format => 'raw'
@@ -172,6 +215,19 @@ class RepositoriesMercurialControllerTest < ActionController::TestCase
end
end
+ def test_diff_latin_1
+ [21, 'adf805632193'].each do |r1|
+ get :diff, :id => 3, :rev => r1
+ assert_response :success
+ assert_template 'diff'
+ assert_tag :tag => 'th',
+ :content => '2',
+ :sibling => { :tag => 'td',
+ :attributes => { :class => /diff_in/ },
+ :content => /It is written in Python/ }
+ end
+ end
+
def test_annotate
get :annotate, :id => 3, :path => ['sources', 'watchers_controller.rb']
assert_response :success
@@ -212,6 +268,38 @@ class RepositoriesMercurialControllerTest < ActionController::TestCase
end
end
+ def test_annotate_latin_1
+ [21, '21', 'adf805632193'].each do |r1|
+ get :annotate, :id => 3, :path => ['latin-1-dir', "test-#{@char_1}-2.txt"], :rev => r1
+ assert_response :success
+ assert_template 'annotate'
+ assert_tag :tag => 'th',
+ :content => '1',
+ :attributes => { :class => 'line-num' },
+ :sibling =>
+ {
+ :tag => 'td',
+ :attributes => { :class => 'revision' },
+ :child => { :tag => 'a', :content => '20:709858aafd1b' }
+ }
+ assert_tag :tag => 'th',
+ :content => '1',
+ :attributes => { :class => 'line-num' },
+ :sibling =>
+ {
+ :tag => 'td' ,
+ :content => 'jsmith' ,
+ :attributes => { :class => 'author' },
+
+ }
+ assert_tag :tag => 'th',
+ :content => '1',
+ :attributes => { :class => 'line-num' },
+ :sibling => { :tag => 'td', :content => /Mercurial is a distributed version control system/ }
+
+ end
+ end
+
def test_empty_revision
@repository.fetch_changesets
@repository.reload