summaryrefslogtreecommitdiff
path: root/test/integration
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2015-05-09 18:55:41 +0200
committerDavid Kalnischkies <david@kalnischkies.de>2015-05-11 17:22:32 +0200
commite8fb1cdfdd13e45f2b3abbd57a28b57ae6137f14 (patch)
tree5b32d156d47a99921fedcdaad66471bf0a0293fa /test/integration
parent5f4fcd88bdabee993dd07244d2f0f8f3658c40f2 (diff)
sync TFRewrite*Order arrays with dpkg and dak
dpkg and dak know various field names and order them in their output, while we have yet another order and have to play catch up with them as we are sitting between chairs here and neither order is ideal for us, too. A little testcase is from now on supposed to help ensureing that we do not derivate to far away from which fields dpkg knows and orders.
Diffstat (limited to 'test/integration')
-rw-r--r--test/integration/framework1
-rwxr-xr-xtest/integration/test-apt-ftparchive-cachedb6
-rwxr-xr-xtest/integration/test-apt-ftparchive-cachedb-lp12744666
-rwxr-xr-xtest/integration/test-apt-ftparchive-src-cachedb18
-rwxr-xr-xtest/integration/test-apt-tagfile-fields-order82
5 files changed, 98 insertions, 15 deletions
diff --git a/test/integration/framework b/test/integration/framework
index 7564a0faf..03c188189 100644
--- a/test/integration/framework
+++ b/test/integration/framework
@@ -189,6 +189,7 @@ setupenvironment() {
TESTDIRECTORY=$(readlink -f $(dirname $0))
# allow overriding the default BUILDDIR location
+ SOURCEDIRECTORY=${APT_INTEGRATION_TESTS_SOURCE_DIR:-"${TESTDIRECTORY}/../../"}
BUILDDIRECTORY=${APT_INTEGRATION_TESTS_BUILD_DIR:-"${TESTDIRECTORY}/../../build/bin"}
LIBRARYPATH=${APT_INTEGRATION_TESTS_LIBRARY_PATH:-"${BUILDDIRECTORY}"}
METHODSDIR=${APT_INTEGRATION_TESTS_METHODS_DIR:-"${BUILDDIRECTORY}/methods"}
diff --git a/test/integration/test-apt-ftparchive-cachedb b/test/integration/test-apt-ftparchive-cachedb
index 3454ee36a..962095320 100755
--- a/test/integration/test-apt-ftparchive-cachedb
+++ b/test/integration/test-apt-ftparchive-cachedb
@@ -3,12 +3,12 @@ set -e
ensure_correct_packages_file() {
testequal "Package: foo
+Architecture: i386
+Version: 1
Priority: optional
Section: others
-$(dpkg-deb -I ./aptarchive/pool/main/foo_1_i386.deb | grep 'Installed-Size:' | sed 's#^ ##')
Maintainer: Joe Sixpack <joe@example.org>
-Architecture: i386
-Version: 1
+$(dpkg-deb -I ./aptarchive/pool/main/foo_1_i386.deb | grep 'Installed-Size:' | sed 's#^ ##')
Filename: pool/main/foo_1_i386.deb" head -n8 ./aptarchive/dists/test/main/binary-i386/Packages
}
diff --git a/test/integration/test-apt-ftparchive-cachedb-lp1274466 b/test/integration/test-apt-ftparchive-cachedb-lp1274466
index 1f86e367f..8b768441a 100755
--- a/test/integration/test-apt-ftparchive-cachedb-lp1274466
+++ b/test/integration/test-apt-ftparchive-cachedb-lp1274466
@@ -27,12 +27,12 @@ testfailure grep 7da58ff901a40ecf42a730dc33198b182e9ba9ec98799fc2c2b6fabeeee40cc
# regression test for corruption with previous generation of cachedb
testsuccessequal "Package: foo
+Architecture: i386
+Version: 1
Priority: optional
Section: others
-Installed-Size: 29
Maintainer: Joe Sixpack <joe@example.org>
-Architecture: i386
-Version: 1
+Installed-Size: 29
Filename: ./foo_1_i386.deb
Size: 1270
MD5sum: 85d0e908c1a897700e2c5dea72d7e3c0
diff --git a/test/integration/test-apt-ftparchive-src-cachedb b/test/integration/test-apt-ftparchive-src-cachedb
index 2a361ecc0..66a3b7845 100755
--- a/test/integration/test-apt-ftparchive-src-cachedb
+++ b/test/integration/test-apt-ftparchive-src-cachedb
@@ -3,16 +3,16 @@ set -e
assert_correct_sources_file() {
testsuccessequal "Package: bar
+Format: 3.0 (native)
+Binary: bar
Architecture: all
Version: 1.0
-Binary: bar
-Format: 3.0 (native)
Directory: pool/main
+Package-List:
+ bar deb admin extra
Files:
7b57dd065e51de5905288a5104d4bef5 406 bar_1.0.dsc
d41d8cd98f00b204e9800998ecf8427e 0 bar_1.0.tar.gz
-Package-List:
- bar deb admin extra
Checksums-Sha1:
17a40b76715f393ab7fd6485c9392a02f1adf903 406 bar_1.0.dsc
da39a3ee5e6b4b0d3255bfef95601890afd80709 0 bar_1.0.tar.gz
@@ -24,16 +24,16 @@ Checksums-Sha512:
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e 0 bar_1.0.tar.gz
Package: foo
+Format: 3.0 (native)
+Binary: foo
Architecture: all
Version: 1.0
-Binary: foo
-Format: 3.0 (native)
Directory: pool/main
+Package-List:
+ foo deb admin extra
Files:
d144826e6f02831c1933e910c92cd7e0 171 foo_1.0.dsc
d41d8cd98f00b204e9800998ecf8427e 0 foo_1.0.tar.gz
-Package-List:
- foo deb admin extra
Checksums-Sha1:
979306aa3ccff3d61bba062bb6977e2493c6f907 171 foo_1.0.dsc
da39a3ee5e6b4b0d3255bfef95601890afd80709 0 foo_1.0.tar.gz
@@ -43,7 +43,7 @@ Checksums-Sha256:
Checksums-Sha512:
3da0240fd764657c2f3661b4d750578a9a99b0580591b133756379d48117ebda87a5ed2467f513200d6e7eaf51422cbe91c15720eef7fb4bba2cc8ff81ebc547 171 foo_1.0.dsc
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e 0 foo_1.0.tar.gz
-" aptsortpkgs ./aptarchive/dists/test/main/source/Sources
+" aptsortpkgs ./aptarchive/dists/test/main/source/Sources -o APT::SortPkgs::Source=true
}
create_source_files() {
diff --git a/test/integration/test-apt-tagfile-fields-order b/test/integration/test-apt-tagfile-fields-order
new file mode 100755
index 000000000..27d5c14ff
--- /dev/null
+++ b/test/integration/test-apt-tagfile-fields-order
@@ -0,0 +1,82 @@
+#!/bin/sh
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+setupenvironment
+
+dpkg_field_ordered_list() {
+ local FIELDS="$(perl -e "
+use Dpkg::Control;
+use Dpkg::Control::Fields;
+foreach \$f (field_ordered_list(${1})) {
+ print \"\$f\\n\";
+}" | sort -u)"
+ if [ -z "$FIELDS" ]; then
+ msgfail 'Could not get fields via libdpkg-perl'
+ fi
+ echo "$FIELDS"
+}
+
+comparelsts() {
+ local DIFFOUTPUT="$(diff -u apt.lst dpkg.lst || true)"
+ if echo "$DIFFOUTPUT" | grep -q '^+[^+]'; then
+ echo
+ echo "$DIFFOUTPUT" | grep '^[+-][^+-]'
+ msgfail
+ else
+ msgpass
+ fi
+}
+
+msgtest 'Check that apt knows all fields dpkg orders in' 'Packages'
+dpkg_field_ordered_list 'CTRL_INDEX_PKG' > dpkg.lst
+sed -ne 's#^ "\(.*\)",.*$#\1#p' ${SOURCEDIRECTORY}/apt-pkg/tagfile-order.c | sed -n '/^Package$/,/^Package$/ p' | head -n -1 | sort -u > apt.lst
+comparelsts
+
+msgtest 'Check that apt knows all fields dpkg orders in' 'status'
+dpkg_field_ordered_list 'CTRL_FILE_STATUS' > dpkg.lst
+comparelsts
+
+msgtest 'Check that apt knows all fields dpkg orders in' 'DEBIAN/control'
+dpkg_field_ordered_list 'CTRL_PKG_DEB' > dpkg.lst
+comparelsts
+
+msgtest 'Check that apt knows all fields dpkg orders in' 'Sources'
+dpkg_field_ordered_list 'CTRL_INDEX_SRC' > dpkg.lst
+echo 'Package' > apt.tmp
+sed -ne 's#^ "\(.*\)",.*$#\1#p' ${SOURCEDIRECTORY}/apt-pkg/tagfile-order.c | sed '/^Package$/,/^Package$/ d' >> apt.tmp
+sort -u apt.tmp > apt.lst
+comparelsts
+
+msgtest 'Check that apt knows all fields dpkg orders in' 'dsc'
+dpkg_field_ordered_list 'CTRL_PKG_SRC' > dpkg.lst
+comparelsts
+
+# HACK, but there is no good way to acquire sources in tests and/or to remember to run this regular manually
+if [ "$USER" = 'david' ]; then
+ msgtest 'Check if we have somewhere the sources of' 'dpkg'
+ DPKGSOURCE="$(locate dpkg/lib/dpkg/parse.c | head -n 1 || true)"
+ if [ -z "$DPKGSOURCE" ]; then
+ msgskip 'Not found'
+ else
+ msgpass
+ msgtest 'Check that apt knows about all fields' 'dpkg parses'
+ sed -n 's#^.*FIELD("\(.*\)").*$#\1#p' "${DPKGSOURCE}" | sort -u > dpkg.lst
+ sed -ne 's#^ "\(.*\)",.*$#\1#p' ${SOURCEDIRECTORY}/apt-pkg/tagfile-order.c | sed -n '/^Package$/,/^Package$/ p' | head -n -1 | sort -u > apt.lst
+ comparelsts
+ fi
+
+ msgtest 'Check if we have somewhere the sources of' 'dak'
+ DAKSOURCE="$(locate dak/setup/core-init.d/080_metadatakeys | head -n 1 || true)"
+ if [ -z "$DAKSOURCE" ]; then
+ msgskip 'Not found'
+ else
+ msgpass
+ msgtest 'Check that apt knows about all fields' 'dak knows'
+ # dak mixes both, so we can only check with the mixed one as well
+ sed -ne "s#^.* VALUES ('\(.*\)', \(.*\)).*\$#\1 \2#p" "${DAKSOURCE}" | cut -d ' ' -f 1 | sort -u > dpkg.lst
+ sed -ne 's#^ "\(.*\)",.*$#\1#p' ${SOURCEDIRECTORY}/apt-pkg/tagfile-order.c | sort -u > apt.lst
+ comparelsts
+ fi
+fi