#!/usr/bin/perl require 5.008; use strict; use warnings; use Carp; use FindBin; use lib ("$FindBin::Bin/../lib", "$FindBin::Bin/lib"); use Test::Class; $| = 1; $ENV{TEST_VERBOSE} = 0; sub runtime_use { my $package = shift; eval "use $package;"; croak "Cannot use [$package]: $@" if $@; } my @test_class_names; BEGIN { my @ALL_TESTS = qw( Aspect::Pointcut::tests::Call Aspect::Pointcut::tests::Cflow Aspect::tests::Weaver Aspect::tests::AdviceContext Aspect::tests::Advice Aspect::Library::tests::Singleton Aspect::Library::tests::Wormhole Aspect::Library::tests::Listenable ); my $thing = 'Aspect::'. ($ARGV[0] || ''); $thing =~ s/(::)?([^:]+)?$/${ \( $1 || '') }tests::${ \( $2 || '') }/; @test_class_names = $thing eq 'Aspect::tests::'? @ALL_TESTS: ($thing); runtime_use $_ for @test_class_names; } Test::Class->runtests(@test_class_names); 1; =head1 NAME run_tests.pl - run Aspect unit tests =head1 SYNOPSIS # run all tests perl run_tests.pl # a specific test case, no need to prefix with Aspect:: or add the tests:: part perl run_tests.pl Weaver perl run_tests.pl Pointcut::Call =cut