diff --git a/xCAT-test/unit/boot_utils.t b/xCAT-test/unit/boot_utils.t new file mode 100644 index 000000000..5d19f3b55 --- /dev/null +++ b/xCAT-test/unit/boot_utils.t @@ -0,0 +1,39 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +use FindBin; +use lib "$FindBin::Bin/../../perl-xCAT"; + +use Test::More; + +use xCAT::BootUtils; + +my @cases = ( + [ undef, undef, 'undefined input remains undefined' ], + [ '', '', 'empty input remains empty' ], + [ '0', '0', 'false string input remains unchanged' ], + [ 'console=ttyS0 quiet', 'console=ttyS0 quiet ', 'volatile options are retained' ], + [ 'R::root=/dev/sda R::console=ttyS0', '', 'persistent-only options are omitted' ], + [ + 'console=ttyS0 R::root=/dev/sda quiet', + 'console=ttyS0 quiet ', + 'persistent options are omitted from mixed input' + ], + [ + 'first R::persist=1 second R::last=1 third', + 'first second third ', + 'volatile option ordering is preserved' + ], +); + +for my $case (@cases) { + my ($input, $expected, $description) = @{$case}; + is( xCAT::BootUtils::volatile_addkcmdline($input), $expected, $description ); +} + +my $original = 'first R::persist=1 second'; +is( xCAT::BootUtils::volatile_addkcmdline($original), 'first second ', 'the normalized value is returned' ); +is( $original, 'first R::persist=1 second', 'the caller value is not modified' ); + +done_testing();