The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

# This script attempts to reproduce:
# https://sourceforge.net/tracker/index.php?func=detail&aid=1230339&group_id=6926&atid=106926

use strict;
use warnings;

use Test::More tests => 2;
use File::Spec;

use Config::IniFiles;

my $filename = File::Spec->catfile(
    File::Spec->curdir(), "t", "store-and-retrieve-here-doc-terminator.ini"
);

my @file_write_subs =
(
    sub {
        my ($cfg) = @_;

        $cfg->WriteConfig($filename);

        return;
    },
    sub {
        my ($cfg) = @_;

        open my $fh, '>', $filename
            or die "Cannot open '$filename' for writing - $!";
        $cfg->OutputConfigToFileHandle($fh);
        close($fh);

        return;
    },
);
foreach my $write_sub (@file_write_subs)
{
    # Prepare the offending file.
    {
        # Delete the stray file - we want to over-write it.
        unlink($filename);
        my $cfg=Config::IniFiles->new();

        $cfg->newval ("MySection", "MyParam", "Hello\nEOT\n");

        $write_sub->($cfg);
    }

    {
        my $cfg=Config::IniFiles->new(-file => $filename);

        # TEST*2
        is (scalar($cfg->val ("MySection", "MyParam")),
            "Hello\nEOT\n",
            "Default here-doc terminator was stored and retrieved correctly",
        );
    }

# Delete it again to keep the working-copy clean.
    unlink($filename);
}