diff test/functional/repositories_bazaar_controller_test.rb @ 1464:261b3d9a4903 redmine-2.4

Update to Redmine 2.4 branch rev 12663
author Chris Cannam
date Tue, 14 Jan 2014 14:37:42 +0000
parents 433d4f72a19b
children e248c7af89ec
line wrap: on
line diff
--- a/test/functional/repositories_bazaar_controller_test.rb	Fri Jun 14 09:05:06 2013 +0100
+++ b/test/functional/repositories_bazaar_controller_test.rb	Tue Jan 14 14:37:42 2014 +0000
@@ -1,5 +1,5 @@
 # Redmine - project management software
-# Copyright (C) 2006-2012  Jean-Philippe Lang
+# Copyright (C) 2006-2013  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
@@ -23,17 +23,23 @@
   fixtures :projects, :users, :roles, :members, :member_roles,
            :repositories, :enabled_modules
 
-  REPOSITORY_PATH = Rails.root.join('tmp/test/bazaar_repository/trunk').to_s
+  REPOSITORY_PATH = Rails.root.join('tmp/test/bazaar_repository').to_s
+  REPOSITORY_PATH_TRUNK = File.join(REPOSITORY_PATH, "trunk")
   PRJ_ID = 3
+  CHAR_1_UTF8_HEX   = "\xc3\x9c"
 
   def setup
     User.current = nil
     @project = Project.find(PRJ_ID)
     @repository = Repository::Bazaar.create(
                     :project      => @project,
-                    :url          => REPOSITORY_PATH,
+                    :url          => REPOSITORY_PATH_TRUNK,
                     :log_encoding => 'UTF-8')
     assert @repository
+    @char_1_utf8 = CHAR_1_UTF8_HEX.dup
+    if @char_1_utf8.respond_to?(:force_encoding)
+      @char_1_utf8.force_encoding('UTF-8')
+    end
   end
 
   if File.directory?(REPOSITORY_PATH)
@@ -137,26 +143,68 @@
           :path => repository_path_hash(['doc-mkdir.txt'])[:param]
       assert_response :success
       assert_template 'annotate'
-      assert_tag :tag => 'th', :content => '2',
-                 :sibling => {
-                    :tag => 'td',
-                    :child => {
-                       :tag => 'a',
-                       :content => '3'
-                       }
-                    }
-      assert_tag :tag => 'th', :content => '2',
-                 :sibling => { :tag => 'td', :content => /jsmith/ }
-      assert_tag :tag => 'th', :content => '2',
-                 :sibling => {
-                    :tag => 'td',
-                    :child => {
-                       :tag => 'a',
-                       :content => '3'
-                       }
-                    }
-      assert_tag :tag => 'th', :content => '2',
-                 :sibling => { :tag => 'td', :content => /Main purpose/ }
+      assert_select "th.line-num", :text => '2' do
+        assert_select "+ td.revision" do
+          assert_select "a", :text => '3'
+          assert_select "+ td.author", :text => "jsmith@" do
+            assert_select "+ td",
+                          :text => "Main purpose:"
+          end
+        end
+      end
+    end
+
+    def test_annotate_author_escaping
+      repository = Repository::Bazaar.create(
+                    :project      => @project,
+                    :url          => File.join(REPOSITORY_PATH, "author_escaping"),
+                    :identifier => 'author_escaping',
+                    :log_encoding => 'UTF-8')
+      assert repository
+      get :annotate, :id => PRJ_ID, :repository_id => 'author_escaping',
+          :path => repository_path_hash(['author-escaping-test.txt'])[:param]
+      assert_response :success
+      assert_template 'annotate'
+      assert_select "th.line-num", :text => '1' do
+        assert_select "+ td.revision" do
+          assert_select "a", :text => '2'
+          assert_select "+ td.author", :text => "test &" do
+            assert_select "+ td",
+                          :text => "author escaping test"
+          end
+        end
+      end
+    end
+
+    if REPOSITORY_PATH.respond_to?(:force_encoding)
+      def test_annotate_author_non_ascii
+        log_encoding = nil
+        if Encoding.locale_charmap == "UTF-8" ||
+             Encoding.locale_charmap == "ISO-8859-1"
+          log_encoding = Encoding.locale_charmap
+        end
+        unless log_encoding.nil?
+          repository = Repository::Bazaar.create(
+                        :project      => @project,
+                        :url          => File.join(REPOSITORY_PATH, "author_non_ascii"),
+                        :identifier => 'author_non_ascii',
+                        :log_encoding => log_encoding)
+          assert repository
+          get :annotate, :id => PRJ_ID, :repository_id => 'author_non_ascii',
+              :path => repository_path_hash(['author-non-ascii-test.txt'])[:param]
+          assert_response :success
+          assert_template 'annotate'
+          assert_select "th.line-num", :text => '1' do
+            assert_select "+ td.revision" do
+              assert_select "a", :text => '2'
+              assert_select "+ td.author", :text => "test #{@char_1_utf8}" do
+                assert_select "+ td",
+                              :text => "author non ASCII test"
+              end
+            end
+          end
+        end
+      end
     end
 
     def test_destroy_valid_repository