1#!/usr/bin/perl 2use5.008; 3use lib (split(/:/,$ENV{GITPERLLIB})); 4use strict; 5use warnings; 6use POSIX qw(:locale_h); 7use Test::More tests =>8; 8use Git::I18N; 9 10my$has_gettext_library=$Git::I18N::__HAS_LIBRARY; 11 12ok(1,"Testing Git::I18N with ". 13($has_gettext_library 14? (defined$Locale::Messages::VERSION 15?"Locale::Messages version$Locale::Messages::VERSION" 16# Versions of Locale::Messages before 1.17 didn't have a 17# $VERSION variable. 18:"Locale::Messages version <1.17") 19:"NO Perl gettext library")); 20ok(1,"Git::I18N is located at$INC{'Git/I18N.pm'}"); 21 22{ 23my$exports=@Git::I18N::EXPORT; 24 ok($exports,"sanity: Git::I18N has$exportsexport(s)"); 25} 26is_deeply(\@Git::I18N::EXPORT, \@Git::I18N::EXPORT_OK,"sanity: Git::I18N exports everything by default"); 27 28# prototypes 29{ 30# Add prototypes here when modifying the public interface to add 31# more gettext wrapper functions. 32my%prototypes= (qw( 33 __ $ 34 )); 35while(my($sub,$proto) =each%prototypes) { 36is(prototype(\&{"Git::I18N::$sub"}),$proto,"sanity:$subhas a$protoprototype"); 37} 38} 39 40# Test basic passthrough in the C locale 41{ 42local$ENV{LANGUAGE} ='C'; 43local$ENV{LC_ALL} ='C'; 44local$ENV{LANG} ='C'; 45 46my($got,$expect) = (('TEST: A Perl test string') x 2); 47 48is(__($got),$expect,"Passing a string through __() in the C locale works"); 49} 50 51# Test a basic message on different locales 52SKIP: { 53unless($ENV{GETTEXT_LOCALE}) { 54# Can't reliably test __() with a non-C locales because the 55# required locales may not be installed on the system. 56# 57# We test for these anyway as part of the shell 58# tests. Skipping these here will eliminate failures on odd 59# platforms with incomplete locale data. 60 61 skip "GETTEXT_LOCALE must be set by lib-gettext.sh for exhaustive Git::I18N tests",2; 62} 63 64# The is_IS UTF-8 locale passed from lib-gettext.sh 65my$is_IS_locale=$ENV{is_IS_locale}; 66 67my$test=sub{ 68my($got,$expect,$msg,$locale) =@_; 69# Maybe this system doesn't have the locale we're trying to 70# test. 71my$locale_ok= setlocale(LC_ALL,$locale); 72is(__($got),$expect,"$msga gettext library + <$locale> locale <$got> turns into <$expect>"); 73}; 74 75my$env_C=sub{ 76$ENV{LANGUAGE} ='C'; 77$ENV{LC_ALL} ='C'; 78}; 79 80my$env_is=sub{ 81$ENV{LANGUAGE} ='is'; 82$ENV{LC_ALL} =$is_IS_locale; 83}; 84 85# Translation's the same as the original 86my($got,$expect) = (('TEST: A Perl test string') x 2); 87 88if($has_gettext_library) { 89{ 90local%ENV;$env_C->(); 91$test->($got,$expect,"With",'C'); 92} 93 94{ 95my($got,$expect) = ($got,'TILRAUN: Perl tilraunastrengur'); 96local%ENV;$env_is->(); 97$test->($got,$expect,"With",$is_IS_locale); 98} 99}else{ 100{ 101local%ENV;$env_C->(); 102$test->($got,$expect,"Without",'C'); 103} 104 105{ 106local%ENV;$env_is->(); 107$test->($got,$expect,"Without",'is'); 108} 109} 110}