No, it's not Perl
The main thing that distinguishes legacy code from non-legacy code is tests, or rather a lack of tests. [...]
To me, the difference is so critical, it overwhelms any other distinction. With tests, you can make things better. Without them, you just don't know whether things are getting better or worse.
— Working Effectively with Legacy Code
They
don't
make
sense.
Don't
write
them.
srsly.
There be dragons^Wcamels!
use Test::More tests => 3; # Specify plan
use Some::Module; # Load module to be tested
is(power_sum(1, 2), 3, "Obvious case");
is(power_sum(20, 7), 27, "Another obvious, but different");
is(power_sum(2, -2), 0, "A bit more interesting");
is(power_sum(-2, -1), -3, "Other weird but possible cases");
ok(is_even(2), "Obvious case");
ok(!is_even(3), "Obvious case, but different");
ok(is_even(0), "Strange case");
ok(is_even(-2), "Another strange case");
ok(is_even(-3), "Another strange case, making sure");
like(get_email, /\w+@\w+\.\w{2,3}/,
"Lame e-mail check with regexps");
estebanm@estebanm-desktop:~/WebApp/WebAppFunctionalTests$ make test PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" blahblah... t/001-login...........ok t/002-edit_profile....ok t/003-newsfeed_new....ok All tests successful. Files=3, Tests=32, 36 wallclock secs ( 0.61 cusr + 0.08 csys = 0.69 CPU)
estebanm@estebanm-desktop$ make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" blahblah...
t/001-login...........ok 4/8
# Failed test 'get_title, '(?-xism:My blog title)''
# at t/001-login.t line 11.
# 'My blog title - by Esteban Manchado Velázquez'
# doesn't match '(?-xism:My blog title)'
t/001-login...........ok 7/8# Looks like you failed 1 test of 8.
t/001-login...........dubious
Test returned status 1 (wstat 256, 0x100)
DIED. FAILED test 5
Failed 1/8 tests, 87.50% okay
t/002-edit_profile....ok
t/003-newsfeed_new....ok
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/001-login.t 1 256 8 1 12.50% 5
Failed 1/3 test scripts, 66.67% okay. 1/32 subtests failed, 96.88% okay.
make: *** [test_dynamic] Error 255
TIMTOWTDI
package Test::Lock;
use base 'Test::Class';
use Test::More;
use Lock;
sub basic_usage_works : Test(12) {
my $l1 = Lock->new({ key => 'test1' });
ok($l1->acquire(), 'L1 lock acquired');
ok($l1->acquired(), 'L1 lock is correctly acquired');
lock_exists_ok('test1.lock'); # custom assert
# [...]
}
sub lock_exists_ok {
my ($lock_key) = @_;
return ok((-s $lock_key),
"Lock file for key [$lock_key] should exist");
}
# Executed once before every test method
sub setup : Test(setup) {
unlink 'test.lock';
unlink 'test1.lock';
}
# Executed once after every test method
sub teardown : Test(teardown) {
# Remove temporary files or whatever
};
TESTS, MÖTHAFÖCKA, DO YOU WRITE THEM‽