# # Comment preservation # use strict; use Test; use Config::IniFiles; BEGIN { plan tests => 15 } my $ors = $\ || "\n"; my ($ini, $value); # Get files from the 't' directory, portably chdir('t') if ( -d 't' ); # test 1 # Load ini file and write as new file $ini = new Config::IniFiles -file => "test.ini"; $ini->SetFileName("test03.ini"); $ini->SetWriteMode("0666"); unlink "test03.ini"; $ini->RewriteConfig; $ini->ReadConfig; ok($ini); # test 2 # Section comments preserved $value = 0; if( open FILE, " ); $value = /\# This is a section comment[$ors]\[test1\]/; close FILE; } ok($value); # test 3 # Parameter comments preserved $value = /\# This is a parm comment[$ors]five=value5/; ok($value); # test 4 # Setting Section Comment $ini->setval('foo','bar','qux'); ok($ini->SetSectionComment('foo', 'This is a section comment', 'This comment takes two lines!')); # test 5 # Getting Section Comment my @comment = $ini->GetSectionComment('foo'); ok( join('', @comment) eq '# This is a section comment# This comment takes two lines!'); #test 6 # Deleting Section Comment $ini->DeleteSectionComment('foo'); # Should not exist! ok(not defined $ini->GetSectionComment('foo')); # test 7 # Setting Parameter Comment ok($ini->SetParameterComment('foo', 'bar', 'This is a parameter comment', 'This comment takes two lines!')); # test 8 # Getting Parameter Comment @comment = $ini->GetParameterComment('foo', 'bar'); ok(join('', @comment) eq '# This is a parameter comment# This comment takes two lines!'); # test 9 # Deleting Parameter Comment $ini->DeleteParameterComment('foo', 'bar'); # Should not exist! ok(not defined $ini->GetSectionComment('foo', 'bar')); # test 10 # Reading a section comment from the file @comment = $ini->GetSectionComment('test1'); ok(join('', @comment) eq '# This is a section comment'); # test 11 # Reading a parameter comment from the file @comment = $ini->GetParameterComment('test2', 'five'); ok(join('', @comment) eq '# This is a parm comment'); # test 12 # Reading a comment that starts with ';' @comment = $ini->GetSectionComment('MixedCaseSect'); ok(join('', @comment) eq '; This is a semi-colon comment'); # Test 13 # Loading from a file with alternate comment characters # and also test continuation characters (in one file) $ini = Config::IniFiles->new( -file => "cmt.ini", -commentchar => '@', -allowcontinue => 1 ); ok($ini); # Test 14 $value = $ini->GetParameterComment('Library', 'addmultf_lib'); ok ($value =~ /\@#\@CF Automatically created by 'config_project' at Thu Mar 21 08:46:54 2002/); # Test 15 $value = $ini->val('turbo_library', 'TurboLibPaths'); ok ($value =~ m:\$WORKAREA/resources/c11_test_flow/vhdl_rtl\s+\$WORKAREA/resources/cstarlib_reg_1v5/vhdl_rtl:); # Clean up when we're done unlink "test03.ini";