diff options
author | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2020-04-14 08:20:52 +0000 |
---|---|---|
committer | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2020-04-14 08:20:52 +0000 |
commit | f6f136871a1361b28ad7d829a6915f642bd627c0 (patch) | |
tree | bfb86ead3eb70c3b9b427fd68962ca31b9a0adc5 | |
parent | 6cdd161ba12e860cce0ab4ae643067f7b16a094e (diff) | |
download | redmine-f6f136871a1361b28ad7d829a6915f642bd627c0.tar.gz redmine-f6f136871a1361b28ad7d829a6915f642bd627c0.zip |
scm: git: add test of UTF-8 Emoji committer and comments (#24030)
git-svn-id: http://svn.redmine.org/redmine/trunk@19699 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | test/test_helper.rb | 15 | ||||
-rw-r--r-- | test/unit/repository_git_test.rb | 31 |
2 files changed, 46 insertions, 0 deletions
diff --git a/test/test_helper.rb b/test/test_helper.rb index aeea0e216..07464b2ff 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -163,6 +163,21 @@ class ActiveSupport::TestCase File.directory?(repository_path(vendor)) end + def self.is_mysql_utf8mb4 + return false unless Redmine::Database::mysql? + character_sets = %w[ + character_set_connection + character_set_database + character_set_results + character_set_server + ] + ActiveRecord::Base.connection. + select_rows('show variables like "character%"').each do |r| + return false if character_sets.include?(r[0]) && r[1] != "utf8mb4" + end + return true + end + def repository_path_hash(arr) hs = {} hs[:path] = arr.join("/") diff --git a/test/unit/repository_git_test.rb b/test/unit/repository_git_test.rb index 7c0d40b65..88d16679e 100644 --- a/test/unit/repository_git_test.rb +++ b/test/unit/repository_git_test.rb @@ -27,6 +27,9 @@ class RepositoryGitTest < ActiveSupport::TestCase REPOSITORY_PATH = Rails.root.join('tmp/test/git_repository').to_s REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin? + REPOSITORY_UTF8_PATH = Rails.root.join('tmp/test/git_utf8_repository').to_s + REPOSITORY_UTF8_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin? + NUM_REV = 28 NUM_HEAD = 8 @@ -587,4 +590,32 @@ class RepositoryGitTest < ActiveSupport::TestCase puts "Git test repository NOT FOUND. Skipping unit tests !!!" def test_fake; assert true end end + + if File.directory?(REPOSITORY_UTF8_PATH) && + !(Redmine::Database::mysql? && !is_mysql_utf8mb4) + def test_utf8_emoji + repo = Repository::Git.create( + :project => @project, + :url => REPOSITORY_UTF8_PATH, + :identifier => 'utf8', + :path_encoding => 'UTF-8' + ) + assert repo + assert_equal 0, repo.changesets.count + repo.fetch_changesets + @project.reload + assert_equal 1, repo.changesets.count + changeset = repo.find_changeset_by_name('9da6b5c6748cc62ee26616718c9bb0e9acfb3e15') + assert_equal "U+1F603\u{1F603} <none@none>", changeset.committer + assert_equal "U+1F603\u{1F603}", changeset.comments + end + elsif !File.directory?(REPOSITORY_UTF8_PATH) + puts "Git UTF-8 test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end + else + puts "Git UTF-8 test repository contains Emoji." + puts "Tests connot run on NOT utf8mb4 MySQL." + puts "Skipping unit tests !!!" + def test_fake; assert true end + end end |