1# frozen_string_literal: true 2require 'minitest_helper' 3 4class TestRDocI18nLocale < RDoc::TestCase 5 6 def setup 7 super 8 @locale = locale('fr') 9 10 @tmpdir = File.join Dir.tmpdir, "test_rdoc_i18n_locale_#{$$}" 11 FileUtils.mkdir_p @tmpdir 12 13 @locale_dir = @tmpdir 14 end 15 16 def teardown 17 FileUtils.rm_rf @tmpdir 18 super 19 end 20 21 def test_name 22 assert_equal 'fr', locale('fr').name 23 end 24 25 def test_load_nonexistent_po 26 File.stub(:exist?, false) do 27 refute @locale.load('nonexsitent-locale') 28 end 29 end 30 31 def test_load_existent_po 32 begin 33 require 'gettext/po_parser' 34 rescue LoadError 35 skip 'gettext gem is not found' 36 end 37 38 fr_locale_dir = File.join @locale_dir, 'fr' 39 FileUtils.mkdir_p fr_locale_dir 40 File.open File.join(fr_locale_dir, 'rdoc.po'), 'w' do |po| 41 po.puts <<-PO 42msgid "" 43msgstr "" 44"Language: fr\n" 45"MIME-Version: 1.0\n" 46"Content-Type: text/plain; charset=UTF-8\n" 47"Content-Transfer-Encoding: 8bit\n" 48 49msgid "Hello" 50msgstr "Bonjour" 51 PO 52 end 53 54 assert @locale.load(@locale_dir) 55 assert_equal 'Bonjour', @locale.translate('Hello') 56 end 57 58 def test_translate_existent_message 59 messages = @locale.instance_variable_get(:@messages) 60 messages['Hello'] = 'Bonjour' 61 assert_equal 'Bonjour', @locale.translate('Hello') 62 end 63 64 def test_translate_nonexistent_message 65 assert_equal 'Hello', @locale.translate('Hello') 66 end 67 68 private 69 70 def locale(name) 71 RDoc::I18n::Locale.new(name) 72 end 73 74end 75