use strict;
use warnings;

use lib 't/lib';

use Pg::CLI::pg_config;
use Test::More 0.88;

{
    my $pg_config = Pg::CLI::pg_config->new( executable => 'foo' );

    my %config = (
        bindir            => q{/usr/lib/postgresql/8.4/bin},
        docdir            => q{/usr/share/doc/postgresql},
        htmldir           => q{/usr/share/doc/postgresql},
        includedir        => q{/usr/include/postgresql},
        pkgincludedir     => q{/usr/include/postgresql},
        includedir_server => q{/usr/include/postgresql/8.4/server},
        libdir            => q{/usr/lib},
        pkglibdir         => q{/usr/lib/postgresql/8.4/lib},
        localedir         => q{/usr/share/locale},
        mandir            => q{/usr/share/postgresql/8.4/man},
        sharedir          => q{/usr/share/postgresql/8.4},
        sysconfdir        => q{/etc/postgresql-common},
        pgxs => q{/usr/lib/postgresql/8.4/lib/pgxs/src/makefiles/pgxs.mk},
        configure =>
            q{'--build=x86_64-linux-gnu' '--prefix=/usr' '--includedir=/usr/include' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--libexecdir=/usr/lib/postgresql-8.4' '--disable-maintainer-mode' '--disable-dependency-tracking' '--disable-silent-rules' '--srcdir=.' '--mandir=/usr/share/postgresql/8.4/man' '--with-docdir=/usr/share/doc/postgresql-doc-8.4' '--sysconfdir=/etc/postgresql-common' '--datadir=/usr/share/postgresql/8.4' '--bindir=/usr/lib/postgresql/8.4/bin' '--includedir=/usr/include/postgresql/' '--enable-nls' '--enable-integer-datetimes' '--enable-thread-safety' '--enable-debug' '--disable-rpath' '--with-tcl' '--with-perl' '--with-python' '--with-pam' '--with-krb5' '--with-gssapi' '--with-openssl' '--with-libxml' '--with-libxslt' '--with-ldap' '--with-ossp-uuid' '--with-gnu-ld' '--with-tclconfig=/usr/lib/tcl8.5' '--with-tkconfig=/usr/lib/tk8.5' '--with-includes=/usr/include/tcl8.5' '--with-system-tzdata=/usr/share/zoneinfo' '--with-pgport=5432' 'CFLAGS=-g -O2 -g -Wall -O2 -fPIC' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,--as-needed' 'build_alias=x86_64-linux-gnu' 'CPPFLAGS='},
        cc => q{gcc},
        cppflags =>
            q{-D_GNU_SOURCE -I/usr/include/libxml2 -I/usr/include/tcl8.5},
        cflags =>
            q{-g -O2 -g -Wall -O2 -fPIC -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -fwrapv -g},
        cflags_sl => q{-fpic},
        ldflags =>
            q{-Wl,-Bsymbolic-functions -Wl,--as-needed -Wl,--as-needed},
        ldflags_sl => undef,
        libs =>
            q{-lpgport -lxslt -lxml2 -lpam -lssl -lcrypto -lkrb5 -lcom_err -lgssapi_krb5 -lz -lreadline -lcrypt -ldl -lm },
        version => q{PostgreSQL 8.4.5},
    );

    my @output;
    for my $key ( sort keys %config ) {
        my $uc_key = uc $key;
        $uc_key = 'INCLUDEDIR-SERVER' if $uc_key eq 'INCLUDEDIR_SERVER';
        push @output, $uc_key . ' = '
            . ( defined $config{$key} ? $config{$key} : q{ } ) . "\n";
    }

    no warnings 'redefine';
    ## no critic (Variables::ProtectPrivateVars)
    local *Pg::CLI::pg_config::_pg_config_output = sub {@output};

    for my $key ( keys %config ) {
        is(
            $pg_config->$key(), $config{$key},
            "got expected value for $key"
        );
    }
}

done_testing();

