Skip to content

Commit 438e19a

Browse files
committed
Fix Perl test
1 parent c1e3522 commit 438e19a

File tree

1 file changed

+49
-25
lines changed

1 file changed

+49
-25
lines changed

test/cli.pl

Lines changed: 49 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,50 @@
2929
3030
=item C<=end> 的时候前面必须给一个空行,否则 podchecker 不认
3131
32-
=item 每一个 Pod block 必须用 C<=cut> 来终结,否则 VS Code 会把后续内容全部认为是 POD
32+
=item 每一个 Pod block 必须用 C<=cut> 来终结,否则 VS Code 会把后续内容全部认为是 Pod
3333
3434
=back
3535
=cut
3636

3737

38-
39-
use v5.38;
38+
use v5.42;
39+
use utf8;
40+
# v5.38 还不用强制 utf8,现在代码里(包括注释)只要有其他字符,都必须强制使用 utf8
4041
use Test::More;
42+
# `` 执行命令以后,返回的全部是字节流,而不是字符串,
43+
# chsrc 已经输出的是 UTF-8 字符串了,所以我们在这里需要
44+
# 设置该选项,将这些字节流编码为 UTF-8 才能得到我们想要的结果
45+
use open qw(:std :encoding(UTF-8));
46+
47+
=begin comment
48+
49+
注意:
50+
51+
`./chsrc`
52+
53+
在 Windows 上也是可以正常执行的,Perl 应该是内部进行了转换。然而,下面这一行却会报错:
54+
55+
`./chsrc get -no-color 2>&1`
56+
57+
2>&1重定向虽然在 Windows CMD 中是正确的,但是在 Perl 中执行,却会反而把 ./chsrc 的问题给报出来。
58+
因此,我们需要对执行的命令进行处理
59+
60+
=end comment
61+
=cut
62+
63+
my $CHSRC = ($^O eq 'MSWin32') ? '.\chsrc' : './chsrc';
64+
4165

4266
my $version_str = qr|chsrc .*\nCopyright .*\nLicense GPLv3\+: GNU GPL version 3 or later|;
43-
like `./chsrc -v`, $version_str, 'chsrc -v';
44-
like `./chsrc --version`, $version_str, 'chsrc --version';
45-
like `./chsrc version`, $version_str, 'chsrc version';
67+
like `$CHSRC -v`, $version_str, 'chsrc -v';
68+
like `$CHSRC --version`, $version_str, 'chsrc --version';
69+
like `$CHSRC version`, $version_str, 'chsrc version';
4670

4771
my $help_str = qr/^ (help|list|get|set|reset)/m;
48-
like `./chsrc -h`, $help_str, 'chsrc -h';
49-
like `./chsrc --help`, $help_str, 'chsrc --help';
50-
like `./chsrc help`, $help_str, 'chsrc help';
51-
like `./chsrc`, $help_str, 'chsrc';
72+
like `$CHSRC -h`, $help_str, 'chsrc -h';
73+
like `$CHSRC --help`, $help_str, 'chsrc --help';
74+
like `$CHSRC help`, $help_str, 'chsrc help';
75+
like `$CHSRC`, $help_str, 'chsrc';
5276

5377

5478
=begin comment
@@ -58,10 +82,10 @@
5882
=end comment
5983
=cut
6084
my $list_str = qr/mirrorz\s*MirrorZ\s*.*\ntuna\s*TUNA/;
61-
like `./chsrc ls`, $list_str, 'chsrc ls';
62-
like `./chsrc list mirrors`, $list_str, 'chsrc list mirrors';
63-
like `./chsrc list os`, qr/netbsd\s*openbsd/, 'chsrc list os';
64-
like `./chsrc list ware`, qr/brew\s*homebrew/, 'chsrc list ware';
85+
like `$CHSRC ls`, $list_str, 'chsrc ls';
86+
like `$CHSRC list mirrors`, $list_str, 'chsrc list mirrors';
87+
like `$CHSRC list os`, qr/netbsd\s*openbsd/, 'chsrc list os';
88+
like `$CHSRC list ware`, qr/brew\s*homebrew/, 'chsrc list ware';
6589

6690

6791
=begin comment
@@ -70,11 +94,11 @@
7094
7195
=end comment
7296
=cut
73-
my $get_null = qr/chsrc: 请提供想要查看源的目标名/;
74-
like `./chsrc get -no-color 2>&1`, $get_null, 'chsrc get -no-color';
97+
my $get_null = qr/chsrc: 请提供想要查看源的目标名/u;
98+
like `$CHSRC get -no-color 2>&1`, $get_null, 'chsrc get -no-color';
7599

76100
my $fake_target_name = qr/暂不支持的换源目标/;
77-
like `./chsrc get fake_target_name 2>&1`, $fake_target_name, 'chsrc get fake_target_name';
101+
like `$CHSRC get fake_target_name 2>&1`, $fake_target_name, 'chsrc get fake_target_name';
78102

79103

80104
if ((defined $ARGV[0]) && ($ARGV[0] eq 'fastcheck')) {
@@ -93,7 +117,7 @@
93117
}
94118

95119
my $get_ruby = qr/gem sources/;
96-
like `./chsrc get ruby`, $get_ruby, 'chsrc get ruby';
120+
like `$CHSRC get ruby`, $get_ruby, 'chsrc get ruby';
97121

98122

99123
=begin comment
@@ -103,7 +127,7 @@
103127
=end comment
104128
=cut
105129
my $measure_ruby = qr/Ruby China 社区/;
106-
like `./chsrc measure ruby`, $measure_ruby, 'chsrc measure ruby';
130+
like `$CHSRC measure ruby`, $measure_ruby, 'chsrc measure ruby';
107131

108132

109133
=begin comment
@@ -119,12 +143,12 @@
119143
my $set_ruby_rubychina = qr/Ruby China 社区/;
120144
my $set_ruby_locally = qr/bundle config --local/;
121145

122-
like `./chsrc set ruby abcd 2>&1`, $set_ruby_abcd, 'chsrc set ruby abcd';
123-
like `./chsrc set ruby first`, $set_ruby_first, 'chsrc set ruby first';
124-
like `./chsrc set ruby`, $set_ruby, 'chsrc set ruby';
125-
like `./chsrc reset ruby`, $reset_ruby, 'chsrc reset ruby';
126-
like `./chsrc set ruby rubychina`, $set_ruby_rubychina, 'chsrc set ruby rubychina';
127-
like `./chsrc set -local ruby first`, $set_ruby_locally, 'chsrc set -local ruby first';
146+
like `$CHSRC set ruby abcd 2>&1`, $set_ruby_abcd, 'chsrc set ruby abcd';
147+
like `$CHSRC set ruby first`, $set_ruby_first, 'chsrc set ruby first';
148+
like `$CHSRC set ruby`, $set_ruby, 'chsrc set ruby';
149+
like `$CHSRC reset ruby`, $reset_ruby, 'chsrc reset ruby';
150+
like `$CHSRC set ruby rubychina`, $set_ruby_rubychina, 'chsrc set ruby rubychina';
151+
like `$CHSRC set -local ruby first`, $set_ruby_locally, 'chsrc set -local ruby first';
128152

129153

130154
done_testing;

0 commit comments

Comments
 (0)