The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl

use strict;
use warnings;
use lib 't/lib';

use Test::More;

plan tests => 16;

use Catalyst::Test 'TestApp';

for my $fail (
    "(' ')",
    "('')",
    "('1.23')",
) {

    eval <<"END";
        package TestApp::Controller::Action::Chained;
        no warnings 'redefine';
        sub should_fail : Chained('/') Args$fail {}
END
    ok(!$@);

    eval { TestApp->setup_actions };
    like($@, qr/Invalid Args\Q$fail\E/,
        "Bad Args$fail attribute makes action setup fail");
}

for my $ok (
    "()",
    "(0)",
    "(1)",
    "('0')",
    "",
) {
    eval <<"END";
        package TestApp::Controller::Action::Chained;
        no warnings 'redefine';
        sub should_fail : Chained('/') Args$ok {}
END
    ok(!$@);
    eval { TestApp->setup_actions };
    ok(!$@, "Args$ok works");
}