From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 92FF31F934 for ; Sun, 3 Jan 2021 09:48:42 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 1/3] t/lei: use $lei->() callback wrapper Date: Sun, 3 Jan 2021 09:48:40 +0000 Message-Id: <20210103094842.22906-2-e@80x24.org> In-Reply-To: <20210103094842.22906-1-e@80x24.org> References: <20210103094842.22906-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: This shortens the test and should make it easier to debug and add new tests. --- t/lei.t | 78 ++++++++++++++++++++++++--------------------------------- 1 file changed, 33 insertions(+), 45 deletions(-) diff --git a/t/lei.t b/t/lei.t index 6f6a5888..541d83ce 100644 --- a/t/lei.t +++ b/t/lei.t @@ -35,37 +35,35 @@ my $config_file = "$home/.config/lei/config"; my $store_dir = "$home/.local/share/lei"; my $test_help = sub { - ok(!$lei->([], undef, $opt), 'no args fails'); + ok(!$lei->(), 'no args fails'); is($? >> 8, 1, '$? is 1'); is($out, '', 'nothing in stdout'); like($err, qr/^usage:/sm, 'usage in stderr'); for my $arg (['-h'], ['--help'], ['help'], [qw(daemon-pid --help)]) { - $out = $err = ''; - ok($lei->($arg, undef, $opt), "lei @$arg"); + ok($lei->($arg), "lei @$arg"); like($out, qr/^usage:/sm, "usage in stdout (@$arg)"); is($err, '', "nothing in stderr (@$arg)"); } for my $arg ([''], ['--halp'], ['halp'], [qw(daemon-pid --halp)]) { - $out = $err = ''; - ok(!$lei->($arg, undef, $opt), "lei @$arg"); + ok(!$lei->($arg), "lei @$arg"); is($? >> 8, 1, '$? set correctly'); isnt($err, '', 'something in stderr'); is($out, '', 'nothing in stdout'); } - ok($lei->(qw(init -h), undef, $opt), 'init -h'); + ok($lei->(qw(init -h)), 'init -h'); like($out, qr! \Q$home\E/\.local/share/lei/store\b!, 'actual path shown in init -h'); - ok($lei->(qw(init -h), { XDG_DATA_HOME => '/XDH' }, $opt), + ok($lei->(qw(init -h), { XDG_DATA_HOME => '/XDH' }), 'init with XDG_DATA_HOME'); like($out, qr! /XDH/lei/store\b!, 'XDG_DATA_HOME in init -h'); is($err, '', 'no errors from init -h'); - ok($lei->(qw(config -h), undef, $opt), 'config-h'); + ok($lei->(qw(config -h)), 'config-h'); like($out, qr! \Q$home\E/\.config/lei/config\b!, 'actual path shown in config -h'); - ok($lei->(qw(config -h), { XDG_CONFIG_HOME => '/XDC' }, $opt), + ok($lei->(qw(config -h), { XDG_CONFIG_HOME => '/XDC' }), 'config with XDG_CONFIG_HOME'); like($out, qr! /XDC/lei/config\b!, 'XDG_CONFIG_HOME in config -h'); is($err, '', 'no errors from config -h'); @@ -75,31 +73,28 @@ my $ok_err_info = sub { my ($msg) = @_; is(grep(!/^I:/, split(/^/, $err)), 0, $msg) or diag "$msg: err=$err"; - $err = ''; }; my $test_init = sub { $cleanup->(); - ok($lei->(['init'], undef, $opt), 'init w/o args'); + ok($lei->('init'), 'init w/o args'); $ok_err_info->('after init w/o args'); - ok($lei->(['init'], undef, $opt), 'idempotent init w/o args'); + ok($lei->('init'), 'idempotent init w/o args'); $ok_err_info->('after idempotent init w/o args'); - ok(!$lei->(['init', "$home/x"], undef, $opt), - 'init conflict'); + ok(!$lei->('init', "$home/x"), 'init conflict'); is(grep(/^E:/, split(/^/, $err)), 1, 'got error on conflict'); ok(!-e "$home/x", 'nothing created on conflict'); $cleanup->(); - ok($lei->(['init', "$home/x"], undef, $opt), 'init conflict resolved'); + ok($lei->('init', "$home/x"), 'init conflict resolved'); $ok_err_info->('init w/ arg'); - ok($lei->(['init', "$home/x"], undef, $opt), 'init idempotent w/ path'); + ok($lei->('init', "$home/x"), 'init idempotent w/ path'); $ok_err_info->('init idempotent w/ arg'); ok(-d "$home/x", 'created dir'); $cleanup->("$home/x"); - ok(!$lei->(['init', "$home/x", "$home/2" ], undef, $opt), - 'too many args fails'); + ok(!$lei->('init', "$home/x", "$home/2"), 'too many args fails'); like($err, qr/too many/, 'noted excessive'); ok(!-e "$home/x", 'x not created on excessive'); for my $d (@$home_trash) { @@ -111,12 +106,12 @@ my $test_init = sub { my $test_config = sub { $cleanup->(); - ok($lei->([qw(config a.b c)], undef, $opt), 'config set var'); + ok($lei->(qw(config a.b c)), 'config set var'); is($out.$err, '', 'no output on var set'); - ok($lei->([qw(config -l)], undef, $opt), 'config -l'); + ok($lei->(qw(config -l)), 'config -l'); is($err, '', 'no errors on listing'); is($out, "a.b=c\n", 'got expected output'); - ok(!$lei->([qw(config -f), "$home/.config/f", qw(x.y z)], undef, $opt), + ok(!$lei->(qw(config -f), "$home/.config/f", qw(x.y z)), 'config set var with -f fails'); like($err, qr/not supported/, 'not supported noted'); ok(!-f "$home/config/f", 'no file created'); @@ -201,7 +196,7 @@ SKIP: { # real socket local $ENV{XDG_RUNTIME_DIR} = "$home/xdg_run"; my $sock = "$ENV{XDG_RUNTIME_DIR}/lei/sock"; - ok(run_script([qw(lei daemon-pid)], undef, $opt), 'daemon-pid'); + ok($lei->('daemon-pid'), 'daemon-pid'); is($err, '', 'no error from daemon-pid'); like($out, qr/\A[0-9]+\n\z/s, 'pid returned') or BAIL_OUT; chomp(my $pid = $out); @@ -210,42 +205,39 @@ SKIP: { # real socket $test_lei_common->(); - $out = ''; - ok(run_script([qw(lei daemon-pid)], undef, $opt), 'daemon-pid'); + ok($lei->('daemon-pid'), 'daemon-pid'); chomp(my $pid_again = $out); is($pid, $pid_again, 'daemon-pid idempotent'); - $out = ''; - ok(run_script([qw(lei daemon-env -0)], undef, $opt), 'show env'); + ok($lei->(qw(daemon-env -0)), 'show env'); is($err, '', 'no errors in env dump'); my @env = split(/\0/, $out); is(scalar grep(/\AHOME=\Q$home\E\z/, @env), 1, 'env has HOME'); is(scalar grep(/\AFOO=BAR\z/, @env), 1, 'env has FOO=BAR'); is(scalar grep(/\AXDG_RUNTIME_DIR=/, @env), 1, 'has XDG_RUNTIME_DIR'); - $out = ''; - ok(run_script([qw(lei daemon-env -u FOO)], undef, $opt), 'unset'); + ok($lei->(qw(daemon-env -u FOO)), 'unset'); is($out.$err, '', 'no output for unset'); - ok(run_script([qw(lei daemon-env -0)], undef, $opt), 'show again'); + ok($lei->(qw(daemon-env -0)), 'show again'); is($err, '', 'no errors in env dump'); @env = split(/\0/, $out); is(scalar grep(/\AFOO=BAR\z/, @env), 0, 'env unset FOO'); - $out = ''; - ok(run_script([qw(lei daemon-env -u FOO -u HOME -u XDG_RUNTIME_DIR)], - undef, $opt), 'unset multiple'); + ok($lei->(qw(daemon-env -u FOO -u HOME -u XDG_RUNTIME_DIR)), + 'unset multiple'); is($out.$err, '', 'no errors output for unset'); - ok(run_script([qw(lei daemon-env -0)], undef, $opt), 'show again'); + + ok($lei->(qw(daemon-env -0)), 'show again'); is($err, '', 'no errors in env dump'); @env = split(/\0/, $out); is(scalar grep(/\A(?:HOME|XDG_RUNTIME_DIR)=\z/, @env), 0, 'env unset@'); - $out = ''; - ok(run_script([qw(lei daemon-env -)], undef, $opt), 'clear env'); + + ok($lei->(qw(daemon-env -)), 'clear env'); is($out.$err, '', 'no output'); - ok(run_script([qw(lei daemon-env)], undef, $opt), 'env is empty'); + ok($lei->(qw(daemon-env)), 'env is empty'); is($out, '', 'env cleared'); - ok(run_script([qw(lei daemon-kill)], undef, $opt), 'daemon-kill'); + ok($lei->(qw(daemon-kill)), 'daemon-kill'); is($out, '', 'no output from daemon-kill'); is($err, '', 'no error from daemon-kill'); for (0..100) { @@ -255,26 +247,22 @@ SKIP: { # real socket ok(!-S $sock, 'sock gone'); ok(!kill(0, $pid), 'pid gone after stop'); - ok(run_script([qw(lei daemon-pid)], undef, $opt), 'daemon-pid'); + ok($lei->(qw(daemon-pid)), 'daemon-pid'); chomp(my $new_pid = $out); ok(kill(0, $new_pid), 'new pid is running'); ok(-S $sock, 'sock exists again'); - $out = $err = ''; for my $sig (qw(-0 -CHLD)) { - ok(run_script([qw(lei daemon-kill), $sig ], undef, $opt), - "handles $sig"); + ok($lei->('daemon-kill', $sig), "handles $sig"); } is($out.$err, '', 'no output on innocuous signals'); - ok(run_script([qw(lei daemon-pid)], undef, $opt), 'daemon-pid'); + ok($lei->('daemon-pid'), 'daemon-pid'); chomp $out; is($out, $new_pid, 'PID unchanged after -0/-CHLD'); if ('socket inaccessible') { chmod 0000, $sock or BAIL_OUT "chmod 0000: $!"; - $out = $err = ''; - ok(run_script([qw(lei help)], undef, $opt), - 'connect fail, one-shot fallback works'); + ok($lei->('help'), 'connect fail, one-shot fallback works'); like($err, qr/\bconnect\(/, 'connect error noted'); like($out, qr/^usage: /, 'help output works'); chmod 0700, $sock or BAIL_OUT "chmod 0700: $!";