summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <mvo@debian.org>2013-12-04 07:58:37 +0100
committerMichael Vogt <mvo@debian.org>2013-12-04 08:07:00 +0100
commit019dfaedcc169837f88cc0b971fd8897828d93bf (patch)
tree7e4bb96b8db845912163a678ef4e7c741203ad4f
parent1a22e16a1ebf08243c1836e1c593cb966cae4850 (diff)
add test, deal with InRelease
-rw-r--r--cmdline/apt-get.cc6
-rwxr-xr-xtest/integration/test-apt-get-source45
2 files changed, 49 insertions, 2 deletions
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc
index 2370318e8..3003c1971 100644
--- a/cmdline/apt-get.cc
+++ b/cmdline/apt-get.cc
@@ -293,7 +293,10 @@ pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs,
if (&SI == (*IF))
{
std::string dirname = _config->FindDir("Dir::State::lists");
- std::string path = dirname + URItoFileName((*S)->GetURI()) + "dists_" + (*S)->GetDist() + "_Release";
+ std::string path;
+ path = dirname + URItoFileName((*S)->GetURI()) + "dists_" + (*S)->GetDist() + "_Release";
+ if (!FileExists(path))
+ path = dirname + URItoFileName((*S)->GetURI()) + "dists_" + (*S)->GetDist() + "_InRelease";
indexRecords records;
records.Load(path);
if (records.GetSuite() == DefRel)
@@ -327,7 +330,6 @@ pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs,
// was the version check above an exact match? If so, we don't need to look further
if (VerTag.empty() == false && (VerTag == Ver))
{
- std::cerr << "meep" << std::endl;
break;
}
}
diff --git a/test/integration/test-apt-get-source b/test/integration/test-apt-get-source
new file mode 100755
index 000000000..d2b8deafd
--- /dev/null
+++ b/test/integration/test-apt-get-source
@@ -0,0 +1,45 @@
+#!/bin/sh
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+
+setupenvironment
+configarchitecture "i386"
+
+# we need to insert a package into "unstable" so that a Release file is
+# create for the test
+insertpackage 'wheezy' 'unreleated-package' 'all' '1.0'
+
+# a "normal" package with source and binary
+insertpackage 'unstable' 'foo' 'all' '2.0'
+insertsource 'unstable' 'foo' 'all' '2.0'
+
+insertpackage 'stable' 'foo' 'all' '1.0'
+insertsource 'stable' 'foo' 'all' '1.0'
+
+# this package exists only as source
+insertsource 'wheezy' 'foo' 'all' '0.1'
+
+setupaptarchive
+
+APTARCHIVE=$(readlink -f ./aptarchive)
+
+# normal operation gets highest version number
+testequal "'file://${APTARCHIVE}/foo_2.0.dsc' foo_2.0.dsc 0 MD5Sum:d41d8cd98f00b204e9800998ecf8427e
+'file://${APTARCHIVE}/foo_2.0.tar.gz' foo_2.0.tar.gz 0 MD5Sum:d41d8cd98f00b204e9800998ecf8427e" aptget source -qq --print-uris foo
+
+# select by release
+testequal "Selectied version '1.0' (stable) for foo
+'file://${APTARCHIVE}/foo_1.0.dsc' foo_1.0.dsc 0 MD5Sum:d41d8cd98f00b204e9800998ecf8427e
+'file://${APTARCHIVE}/foo_1.0.tar.gz' foo_1.0.tar.gz 0 MD5Sum:d41d8cd98f00b204e9800998ecf8427e" aptget source -qq --print-uris foo/stable
+
+# select by version
+testequal "'file://${APTARCHIVE}/foo_1.0.dsc' foo_1.0.dsc 0 MD5Sum:d41d8cd98f00b204e9800998ecf8427e
+'file://${APTARCHIVE}/foo_1.0.tar.gz' foo_1.0.tar.gz 0 MD5Sum:d41d8cd98f00b204e9800998ecf8427e" aptget source -qq --print-uris foo=1.0
+
+# select by release with no binary package (Bug#731102)
+testequal "Selectied version '0.1' (wheezy) for foo
+'file://${APTARCHIVE}/foo_0.1.dsc' foo_0.1.dsc 0 MD5Sum:d41d8cd98f00b204e9800998ecf8427e
+'file://${APTARCHIVE}/foo_0.1.tar.gz' foo_0.1.tar.gz 0 MD5Sum:d41d8cd98f00b204e9800998ecf8427e" aptget source -qq --print-uris foo/wheezy
+