Claude-Agent-Code-Review
view release on metacpan or search on metacpan
t/02-tools.t view on Meta::CPAN
chdir($orig_dir);
};
# Test path traversal protection
subtest 'Path traversal protection' => sub {
my $server = Claude::Agent::Code::Review::Tools->create_server();
# Test get_file_context with path traversal
my $tool = $server->get_tool('get_file_context');
my $result = execute_tool($tool,{ file => '../../../etc/passwd', line => 1 });
ok($result->{is_error}, 'blocked path traversal in get_file_context');
# Test get_dependencies with path traversal
$tool = $server->get_tool('get_dependencies');
$result = execute_tool($tool,{ file => '../../../etc/passwd' });
ok($result->{is_error}, 'blocked path traversal in get_dependencies');
# Test analyze_complexity with path traversal
$tool = $server->get_tool('analyze_complexity');
$result = execute_tool($tool,{ file => '../../../etc/passwd', function => 'test' });
ok($result->{is_error}, 'blocked path traversal in analyze_complexity');
};
done_testing();
t/05-perlcritic.t view on Meta::CPAN
my $options = Claude::Agent::Code::Review::Options->new(
perlcritic => 1,
);
# Try to analyze files outside project directory
my @issues = Claude::Agent::Code::Review::Perlcritic->analyze(
paths => ['../../../etc/passwd'],
options => $options,
);
is(scalar @issues, 0, 'path traversal blocked');
chdir($orig_dir);
};
subtest 'handles parse errors gracefully' => sub {
chdir($tempdir);
my $broken_file = path($tempdir, 'broken.pm');
$broken_file->spew_utf8(<<'END');
package Broken;
( run in 0.500 second using v1.01-cache-2.11-cpan-39bf76dae61 )