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:
A | t/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/' );