mirror of
https://github.com/RubyMetric/chsrc
synced 2025-10-10 22:53:29 +08:00
Fix Perl test
This commit is contained in:
74
test/cli.pl
74
test/cli.pl
@@ -29,26 +29,50 @@
|
||||
|
||||
=item C<=end> 的时候前面必须给一个空行,否则 podchecker 不认
|
||||
|
||||
=item 每一个 Pod block 必须用 C<=cut> 来终结,否则 VS Code 会把后续内容全部认为是 POD
|
||||
=item 每一个 Pod block 必须用 C<=cut> 来终结,否则 VS Code 会把后续内容全部认为是 Pod
|
||||
|
||||
=back
|
||||
=cut
|
||||
|
||||
|
||||
|
||||
use v5.38;
|
||||
use v5.42;
|
||||
use utf8;
|
||||
# v5.38 还不用强制 utf8,现在代码里(包括注释)只要有其他字符,都必须强制使用 utf8
|
||||
use Test::More;
|
||||
# `` 执行命令以后,返回的全部是字节流,而不是字符串,
|
||||
# chsrc 已经输出的是 UTF-8 字符串了,所以我们在这里需要
|
||||
# 设置该选项,将这些字节流编码为 UTF-8 才能得到我们想要的结果
|
||||
use open qw(:std :encoding(UTF-8));
|
||||
|
||||
=begin comment
|
||||
|
||||
注意:
|
||||
|
||||
`./chsrc`
|
||||
|
||||
在 Windows 上也是可以正常执行的,Perl 应该是内部进行了转换。然而,下面这一行却会报错:
|
||||
|
||||
`./chsrc get -no-color 2>&1`
|
||||
|
||||
2>&1重定向虽然在 Windows CMD 中是正确的,但是在 Perl 中执行,却会反而把 ./chsrc 的问题给报出来。
|
||||
因此,我们需要对执行的命令进行处理
|
||||
|
||||
=end comment
|
||||
=cut
|
||||
|
||||
my $CHSRC = ($^O eq 'MSWin32') ? '.\chsrc' : './chsrc';
|
||||
|
||||
|
||||
my $version_str = qr|chsrc .*\nCopyright .*\nLicense GPLv3\+: GNU GPL version 3 or later|;
|
||||
like `./chsrc -v`, $version_str, 'chsrc -v';
|
||||
like `./chsrc --version`, $version_str, 'chsrc --version';
|
||||
like `./chsrc version`, $version_str, 'chsrc version';
|
||||
like `$CHSRC -v`, $version_str, 'chsrc -v';
|
||||
like `$CHSRC --version`, $version_str, 'chsrc --version';
|
||||
like `$CHSRC version`, $version_str, 'chsrc version';
|
||||
|
||||
my $help_str = qr/^ (help|list|get|set|reset)/m;
|
||||
like `./chsrc -h`, $help_str, 'chsrc -h';
|
||||
like `./chsrc --help`, $help_str, 'chsrc --help';
|
||||
like `./chsrc help`, $help_str, 'chsrc help';
|
||||
like `./chsrc`, $help_str, 'chsrc';
|
||||
like `$CHSRC -h`, $help_str, 'chsrc -h';
|
||||
like `$CHSRC --help`, $help_str, 'chsrc --help';
|
||||
like `$CHSRC help`, $help_str, 'chsrc help';
|
||||
like `$CHSRC`, $help_str, 'chsrc';
|
||||
|
||||
|
||||
=begin comment
|
||||
@@ -58,10 +82,10 @@ like `./chsrc`, $help_str, 'chsrc';
|
||||
=end comment
|
||||
=cut
|
||||
my $list_str = qr/mirrorz\s*MirrorZ\s*.*\ntuna\s*TUNA/;
|
||||
like `./chsrc ls`, $list_str, 'chsrc ls';
|
||||
like `./chsrc list mirrors`, $list_str, 'chsrc list mirrors';
|
||||
like `./chsrc list os`, qr/netbsd\s*openbsd/, 'chsrc list os';
|
||||
like `./chsrc list ware`, qr/brew\s*homebrew/, 'chsrc list ware';
|
||||
like `$CHSRC ls`, $list_str, 'chsrc ls';
|
||||
like `$CHSRC list mirrors`, $list_str, 'chsrc list mirrors';
|
||||
like `$CHSRC list os`, qr/netbsd\s*openbsd/, 'chsrc list os';
|
||||
like `$CHSRC list ware`, qr/brew\s*homebrew/, 'chsrc list ware';
|
||||
|
||||
|
||||
=begin comment
|
||||
@@ -70,11 +94,11 @@ like `./chsrc list ware`, qr/brew\s*homebrew/, 'chsrc list ware';
|
||||
|
||||
=end comment
|
||||
=cut
|
||||
my $get_null = qr/chsrc: 请提供想要查看源的目标名/;
|
||||
like `./chsrc get -no-color 2>&1`, $get_null, 'chsrc get -no-color';
|
||||
my $get_null = qr/chsrc: 请提供想要查看源的目标名/u;
|
||||
like `$CHSRC get -no-color 2>&1`, $get_null, 'chsrc get -no-color';
|
||||
|
||||
my $fake_target_name = qr/暂不支持的换源目标/;
|
||||
like `./chsrc get fake_target_name 2>&1`, $fake_target_name, 'chsrc get fake_target_name';
|
||||
like `$CHSRC get fake_target_name 2>&1`, $fake_target_name, 'chsrc get fake_target_name';
|
||||
|
||||
|
||||
if ((defined $ARGV[0]) && ($ARGV[0] eq 'fastcheck')) {
|
||||
@@ -93,7 +117,7 @@ if ($has_ruby == 0) {
|
||||
}
|
||||
|
||||
my $get_ruby = qr/gem sources/;
|
||||
like `./chsrc get ruby`, $get_ruby, 'chsrc get ruby';
|
||||
like `$CHSRC get ruby`, $get_ruby, 'chsrc get ruby';
|
||||
|
||||
|
||||
=begin comment
|
||||
@@ -103,7 +127,7 @@ like `./chsrc get ruby`, $get_ruby, 'chsrc get ruby';
|
||||
=end comment
|
||||
=cut
|
||||
my $measure_ruby = qr/Ruby China 社区/;
|
||||
like `./chsrc measure ruby`, $measure_ruby, 'chsrc measure ruby';
|
||||
like `$CHSRC measure ruby`, $measure_ruby, 'chsrc measure ruby';
|
||||
|
||||
|
||||
=begin comment
|
||||
@@ -119,12 +143,12 @@ my $reset_ruby = qr/选中镜像站.*Upstream.*已重置为上游默认
|
||||
my $set_ruby_rubychina = qr/Ruby China 社区/;
|
||||
my $set_ruby_locally = qr/bundle config --local/;
|
||||
|
||||
like `./chsrc set ruby abcd 2>&1`, $set_ruby_abcd, 'chsrc set ruby abcd';
|
||||
like `./chsrc set ruby first`, $set_ruby_first, 'chsrc set ruby first';
|
||||
like `./chsrc set ruby`, $set_ruby, 'chsrc set ruby';
|
||||
like `./chsrc reset ruby`, $reset_ruby, 'chsrc reset ruby';
|
||||
like `./chsrc set ruby rubychina`, $set_ruby_rubychina, 'chsrc set ruby rubychina';
|
||||
like `./chsrc set -local ruby first`, $set_ruby_locally, 'chsrc set -local ruby first';
|
||||
like `$CHSRC set ruby abcd 2>&1`, $set_ruby_abcd, 'chsrc set ruby abcd';
|
||||
like `$CHSRC set ruby first`, $set_ruby_first, 'chsrc set ruby first';
|
||||
like `$CHSRC set ruby`, $set_ruby, 'chsrc set ruby';
|
||||
like `$CHSRC reset ruby`, $reset_ruby, 'chsrc reset ruby';
|
||||
like `$CHSRC set ruby rubychina`, $set_ruby_rubychina, 'chsrc set ruby rubychina';
|
||||
like `$CHSRC set -local ruby first`, $set_ruby_locally, 'chsrc set -local ruby first';
|
||||
|
||||
|
||||
done_testing;
|
||||
|
Reference in New Issue
Block a user