|
29 | 29 |
|
30 | 30 | =item C<=end> 的时候前面必须给一个空行,否则 podchecker 不认 |
31 | 31 |
|
32 | | -=item 每一个 Pod block 必须用 C<=cut> 来终结,否则 VS Code 会把后续内容全部认为是 POD |
| 32 | +=item 每一个 Pod block 必须用 C<=cut> 来终结,否则 VS Code 会把后续内容全部认为是 Pod |
33 | 33 |
|
34 | 34 | =back |
35 | 35 | =cut |
36 | 36 |
|
37 | 37 |
|
38 | | - |
39 | | -use v5.38; |
| 38 | +use v5.42; |
| 39 | +use utf8; |
| 40 | +# v5.38 还不用强制 utf8,现在代码里(包括注释)只要有其他字符,都必须强制使用 utf8 |
40 | 41 | 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 | + |
41 | 65 |
|
42 | 66 | 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'; |
46 | 70 |
|
47 | 71 | 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'; |
52 | 76 |
|
53 | 77 |
|
54 | 78 | =begin comment |
|
58 | 82 | =end comment |
59 | 83 | =cut |
60 | 84 | 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'; |
65 | 89 |
|
66 | 90 |
|
67 | 91 | =begin comment |
|
70 | 94 |
|
71 | 95 | =end comment |
72 | 96 | =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'; |
75 | 99 |
|
76 | 100 | 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'; |
78 | 102 |
|
79 | 103 |
|
80 | 104 | if ((defined $ARGV[0]) && ($ARGV[0] eq 'fastcheck')) { |
|
93 | 117 | } |
94 | 118 |
|
95 | 119 | 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'; |
97 | 121 |
|
98 | 122 |
|
99 | 123 | =begin comment |
|
103 | 127 | =end comment |
104 | 128 | =cut |
105 | 129 | 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'; |
107 | 131 |
|
108 | 132 |
|
109 | 133 | =begin comment |
|
119 | 143 | my $set_ruby_rubychina = qr/Ruby China 社区/; |
120 | 144 | my $set_ruby_locally = qr/bundle config --local/; |
121 | 145 |
|
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'; |
128 | 152 |
|
129 | 153 |
|
130 | 154 | done_testing; |
0 commit comments