html.mk

static html creation framework using make(1) and cpp(1)
git clone git://0x30.net/html.mk
Log | Files | Refs | README | LICENSE

commit 84b27b31b85863d3e16865ac5de8437d996cd555
parent b1af99c0f902e931ba5093623c29657221d18bed
Author: Kyle Milz <krwmilz@gmail.com>
Date:   Mon, 22 Nov 2021 16:37:11 +0000

t: add tests for BSDOBJDIR

includes unhappy and happy paths

Diffstat:
At/bsdobjdir.t | 70++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 70 insertions(+), 0 deletions(-)

diff --git a/t/bsdobjdir.t b/t/bsdobjdir.t @@ -0,0 +1,70 @@ +# +# Different settings of BSDOBJDIR for make obj. +# +use Modern::Perl; +use Test::Cmd; +use Test::File; +use Test::More tests => 9; + + +my $cmd = Test::Cmd->new( prog => '/usr/bin/make', workdir => '' ); +my $html_mk = $cmd->here . "/bsd.html.mk"; + +# +# 1) BSDOBJDIR does not exist +# +my $o = "does_not_exist does not exist"; + +$cmd->write( 'Makefile', <<EOF ); +BSDSRCDIR = /tmp +BSDOBJDIR = does_not_exist + +.include "$html_mk" +EOF + +$cmd->run( args => 'obj', chdir => $cmd->curdir ); + +like( $cmd->stdout, qr{$o}, 'make obj stdout' ); +is( $cmd->stderr, "", 'make obj stderr' ); +is( $? >> 8, 0, 'make obj exit status' ); + + +# +# 2) BSDOBJDIR is a file +# +$o = "not_a_dir is not a directory"; + +$cmd->write( 'not_a_dir' ); +$cmd->write( 'Makefile', <<EOF ); +BSDSRCDIR = /tmp +BSDOBJDIR = not_a_dir + +.include "$html_mk" +EOF + +$cmd->run( args => 'obj', chdir => $cmd->curdir ); + +like( $cmd->stdout, qr{$o}, 'make obj stdout' ); +is( $cmd->stderr, "", 'make obj stderr' ); +is( $? >> 8, 0, 'make obj exit status' ); + +# +# 3) BSDOBJDIR is a relative directory that exists. +# +$o = ".*/obj -> destdir/"; + +$cmd->subdir( 'destdir' ); +$cmd->write( 'Makefile', <<EOF ); +BSDSRCDIR = /tmp +BSDOBJDIR = destdir + +.include "$html_mk" +EOF + +$cmd->run( args => 'obj', chdir => $cmd->curdir ); + +like( $cmd->stdout, qr{$o}, 'make obj stdout' ); +is( $cmd->stderr, "", 'make obj stderr' ); +is( $? >> 8, 0, 'make obj exit status' ); +# XXX: Re enable +# symlink_target_is( $cmd->workpath . '/obj', 'destdir/' );