Browse Source

add test, deal with InRelease

Michael Vogt 12 years ago
parent
commit
019dfaedcc
2 changed files with 49 additions and 2 deletions
  1. 4 2
      cmdline/apt-get.cc
  2. 45 0
      test/integration/test-apt-get-source

+ 4 - 2
cmdline/apt-get.cc

@@ -293,7 +293,10 @@ pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs,
                if (&SI == (*IF))
                if (&SI == (*IF))
                {
                {
                   std::string dirname = _config->FindDir("Dir::State::lists");
                   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;
                   indexRecords records;
                   records.Load(path);
                   records.Load(path);
                   if (records.GetSuite() == DefRel)
                   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
 	 // was the version check above an exact match? If so, we don't need to look further
          if (VerTag.empty() == false && (VerTag == Ver))
          if (VerTag.empty() == false && (VerTag == Ver))
          {
          {
-            std::cerr << "meep" << std::endl;
 	    break;
 	    break;
          }
          }
       }
       }

+ 45 - 0
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
+