The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/bin/perl -w

use lib qw( ./blib/lib ../blib/lib );

use strict;
use Test::More tests => 5;

#==================================================
# Check that module loads
#==================================================

BEGIN { use_ok( 'Test::Nightly' ) };

#==================================================
# Check module methods
#==================================================

my @methods = qw(new run_tests generate_report);
can_ok('Test::Nightly', @methods);

eval {Test::Nightly->new()};

#==================================================
# Check correct error message is added when there 
# is no base_directories supplied
#==================================================

like($@, qr/Test::Nightly::new\(\) - \"base_directories\" must be supplied/, 'new() - errors() has the correct error when no base_directories are supplied');

my $test_obj1 = Test::Nightly->new({base_directories => ['t/data/module/']});


#==================================================
# Check that modules hass the correct data 
# structure
#==================================================

my @module_structure = (
	{
		'build_script' => 'Makefile.PL',
		'directory' => 't/data/module/'
	}
);

is_deeply($test_obj1->modules(), \@module_structure, '_find_modules - The correct module structure has been found');


#==================================================
# Check that it skips makefiles that contain a 
# a space.
#==================================================

eval{my $test_obj2 = Test::Nightly->new({
	base_directories	=> ['t/data/module/'],
	build_script		=> 'Makefile Space.PL',
})};

like($@, qr/Test::Nightly::_find_modules\(\): Supplied \"build_script\" can not contain a space/, '_find_modules() - croaks when makefile contains a space');