Files
David Kalnischkies 64d7e1c568 Use quoted tagnames in config dumps
Tagnames in configuration can include spaces (and other nasties) e.g. in
repository-specific configuration options due to Origin/Label
potentially containing a space. The configuration file format supports
parsing quoted as well as encoded spaces, but the output generated by
apt-config and other places which might be feedback into apt via
parsing (e.g. before calling apt-key in our gpgv method) do not quote
and hence produce invalid configuration files.

Changing the default to be an encoded tagname ensures that the output of
dump can be used as a config file, but other users might not expect
this so that is technically a backward-breaking change.
2018-11-29 22:15:28 +01:00

51 lines
1.9 KiB
Bash
Executable File

#!/bin/sh
set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
configarchitecture 'amd64'
testsuccess aptconfig dump
testsuccessequal 'APT::Architecture "amd64";' aptconfig dump APT::Architecture
testempty aptconfig dump config::which::does::not::exist
testsuccessequal 'APT::Architectures "";
APT::Architectures:: "amd64";' aptconfig dump APT::Architectures
testsuccessequal 'APT::Architectures:: "amd64";' aptconfig dump --no-empty APT::Architectures
testsuccessequal 'amd64' aptconfig dump --no-empty --format='%v%n' APT::Architectures
testempty aptconfig shell
testfailureequal 'E: Arguments not in pairs' aptconfig shell APT::Architecture
testempty aptconfig shell APT::Architecture ARCH # incorrect order
testsuccessequal "ARCH='amd64'" aptconfig shell ARCH APT::Architecture
ROOTDIR="$(readlink -f rootdir)"
testsuccessequal "CONFIG='apt.conf'" aptconfig shell CONFIG Dir::Etc::main
testsuccessequal "CONFIG='${ROOTDIR}/etc/apt/apt.conf'" aptconfig shell CONFIG Dir::Etc::main/f
testsuccessequal "CONFIG='etc/apt'" aptconfig shell CONFIG Dir::Etc
testsuccessequal "CONFIG='${ROOTDIR}/etc/apt/'" aptconfig shell CONFIG Dir::Etc/ # old style
testsuccessequal "CONFIG='${ROOTDIR}/etc/apt/'" aptconfig shell CONFIG Dir::Etc/d
testempty aptconfig dump --no-empty --format='%v%n' APT::Build-Profiles
export DEB_BUILD_PROFILES='nodoc stage1'
testsuccessequal 'nodoc
stage1' aptconfig dump --no-empty --format='%v%n' APT::Build-Profiles
unset DEB_BUILD_PROFILES
testempty aptconfig dump --no-empty --format='%v%n' APT::Build-Profiles
cat > spaces.conf <<EOF
Spaces::Test::"Foo Bar" "1 1";
Spaces::Test2::" Bar Baz " "B B" {
A%20B "C C";
"B C" "A A";
};
EOF
testsuccessequal 'Spaces::Test "";
Spaces::Test::Foo%20Bar "1 1";
Spaces::Test2 "";
Spaces::Test2::%20Bar%20Baz%20 "B B";
Spaces::Test2::%20Bar%20Baz%20::A%20B "C C";
Spaces::Test2::%20Bar%20Baz%20::B%20C "A A";' aptconfig dump -c spaces.conf Spaces::Test Spaces::Test2