git

Форк
0
/t
/
test.pl 
122 строки · 3.2 Кб
1
#!/usr/bin/perl
2
use 5.008001;
3
use lib (split(/:/, $ENV{GITPERLLIB}));
4
use strict;
5
use warnings;
6
use POSIX qw(:locale_h);
7
use Test::More tests => 13;
8
use Git::I18N;
9

10
my $has_gettext_library = $Git::I18N::__HAS_LIBRARY;
11

12
ok(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"));
20
ok(1, "Git::I18N is located at $INC{'Git/I18N.pm'}");
21

22
{
23
	my $exports = @Git::I18N::EXPORT;
24
	ok($exports, "sanity: Git::I18N has $exports export(s)");
25
}
26
is_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.
32
	my %prototypes = (qw(
33
		__	$
34
		__n	$$$
35
		N__	$
36
	));
37
	while (my ($sub, $proto) = each %prototypes) {
38
		is(prototype(\&{"Git::I18N::$sub"}), $proto, "sanity: $sub has a $proto prototype");
39
	}
40
}
41

42
# Test basic passthrough in the C locale
43
{
44
	local $ENV{LANGUAGE} = 'C';
45
	local $ENV{LC_ALL}   = 'C';
46
	local $ENV{LANG}     = 'C';
47

48
	my ($got, $expect) = (('TEST: A Perl test string') x 2);
49

50
	is(__($got), $expect, "Passing a string through __() in the C locale works");
51

52
	my ($got_singular, $got_plural, $expect_singular, $expect_plural) =
53
		(('TEST: 1 file', 'TEST: n files') x 2);
54

55
	is(__n($got_singular, $got_plural, 1), $expect_singular,
56
		"Get singular string through __n() in C locale");
57
	is(__n($got_singular, $got_plural, 2), $expect_plural,
58
		"Get plural string through __n() in C locale");
59

60
	is(N__($got), $expect, "Passing a string through N__() in the C locale works");
61
}
62

63
# Test a basic message on different locales
64
SKIP: {
65
	unless ($ENV{GETTEXT_LOCALE}) {
66
		# Can't reliably test __() with a non-C locales because the
67
		# required locales may not be installed on the system.
68
		#
69
		# We test for these anyway as part of the shell
70
		# tests. Skipping these here will eliminate failures on odd
71
		# platforms with incomplete locale data.
72

73
		skip "GETTEXT_LOCALE must be set by lib-gettext.sh for exhaustive Git::I18N tests", 2;
74
	}
75

76
	# The is_IS UTF-8 locale passed from lib-gettext.sh
77
	my $is_IS_locale = $ENV{is_IS_locale};
78

79
	my $test = sub {
80
		my ($got, $expect, $msg, $locale) = @_;
81
		# Maybe this system doesn't have the locale we're trying to
82
		# test.
83
		my $locale_ok = setlocale(LC_ALL, $locale);
84
		is(__($got), $expect, "$msg a gettext library + <$locale> locale <$got> turns into <$expect>");
85
	};
86

87
	my $env_C = sub {
88
		$ENV{LANGUAGE} = 'C';
89
		$ENV{LC_ALL}   = 'C';
90
	};
91

92
	my $env_is = sub {
93
		$ENV{LANGUAGE} = 'is';
94
		$ENV{LC_ALL}   = $is_IS_locale;
95
	};
96

97
	# Translation's the same as the original
98
	my ($got, $expect) = (('TEST: A Perl test string') x 2);
99

100
	if ($has_gettext_library) {
101
		{
102
			local %ENV; $env_C->();
103
			$test->($got, $expect, "With", 'C');
104
		}
105

106
		{
107
			my ($got, $expect) = ($got, 'TILRAUN: Perl tilraunastrengur');
108
			local %ENV; $env_is->();
109
			$test->($got, $expect, "With", $is_IS_locale);
110
		}
111
	} else {
112
		{
113
			local %ENV; $env_C->();
114
			$test->($got, $expect, "Without", 'C');
115
		}
116

117
		{
118
			local %ENV; $env_is->();
119
			$test->($got, $expect, "Without", 'is');
120
		}
121
	}
122
}
123

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.