Acme-Claude-Shell
view release on metacpan or search on metacpan
t/07-cli-bin.t view on Meta::CPAN
#!/usr/bin/env perl
use 5.020;
use strict;
use warnings;
use Test::More;
use File::Spec;
# Test the CLI binary exists and has correct structure
my $bin = File::Spec->catfile('bin', 'acme_claude_shell');
# Check file exists
ok(-f $bin, 'CLI binary exists');
ok(-r $bin, 'CLI binary is readable');
# Check it starts with shebang
open my $fh, '<', $bin or die "Cannot open $bin: $!";
my $first_line = <$fh>;
close $fh;
like($first_line, qr/^#!/, 'Starts with shebang');
like($first_line, qr/perl/, 'Uses perl interpreter');
# Check syntax by compiling (but not running)
subtest 'Syntax check' => sub {
plan tests => 1;
my $output = `$^X -Ilib -c $bin 2>&1`;
like($output, qr/syntax OK/i, 'CLI binary has valid syntax');
};
# Test --help option (should not require API key)
subtest 'Help option' => sub {
plan tests => 3;
# Run with --help and capture output
my $output = `$^X -Ilib $bin --help 2>&1`;
my $exit_code = $? >> 8;
is($exit_code, 0, '--help exits with 0');
like($output, qr/Acme::Claude::Shell/i, 'Help mentions module name');
like($output, qr/--dry-run|--command/i, 'Help shows options');
};
# Test --version option
subtest 'Version option' => sub {
plan tests => 2;
my $output = `$^X -Ilib $bin --version 2>&1`;
my $exit_code = $? >> 8;
is($exit_code, 0, '--version exits with 0');
like($output, qr/\d+\.\d+/, 'Version output contains version number');
};
done_testing();
( run in 0.817 second using v1.01-cache-2.11-cpan-140bd7fdf52 )