summaryrefslogtreecommitdiffstats
path: root/test/libapt/indexcopytosourcelist_test.cc
blob: 7dbe973293274a33ef9b91e09503b143a5b8de2f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <config.h>

#include <apt-pkg/aptconfiguration.h>
#include <apt-pkg/configuration.h>
#include <apt-pkg/indexcopy.h>

#include <cstdio>
#include <string>

#include <gtest/gtest.h>

class NoCopy : private IndexCopy {
   public:
      std::string ConvertToSourceList(std::string const &CD,std::string &&Path) {
	 IndexCopy::ConvertToSourceList(CD, Path);
	 return Path;
      }
      bool GetFile(std::string &/*Filename*/, unsigned long long &/*Size*/) APT_OVERRIDE { return false; }
      bool RewriteEntry(FileFd & /*Target*/, std::string const &/*File*/) APT_OVERRIDE { return false; }
      const char *GetFileName() APT_OVERRIDE { return NULL; }
      const char *Type() APT_OVERRIDE { return NULL; }

};

TEST(IndexCopyTest, ConvertToSourceList)
{
   NoCopy ic;
   std::string const CD("/media/cdrom/");

   char const * Releases[] = { "unstable", "wheezy-updates", NULL };
   char const * Components[] = { "main", "non-free", NULL };

   for (char const ** Release = Releases; *Release != NULL; ++Release)
   {
      SCOPED_TRACE(std::string("Release ") + *Release);
      for (char const ** Component = Components; *Component != NULL; ++Component)
      {
	 SCOPED_TRACE(std::string("Component ") + *Component);
	 std::string const Path = std::string("dists/") + *Release + "/" + *Component + "/";
	 std::string const Binary = Path + "binary-";
	 std::string const A = Binary + "armel/";
	 std::string const B = Binary + "mips/";
	 std::string const C = Binary + "kfreebsd-mips/";
	 std::string const S = Path + "source/";
	 std::string const List = std::string(*Release) + " " + *Component;

	 {
	 SCOPED_TRACE("no archs configured");
	 _config->Clear("APT");
	 _config->Set("APT::Architecture", "all");
	 _config->Set("APT::Architectures::", "all");
	 APT::Configuration::getArchitectures(false);
	 EXPECT_EQ(A, ic.ConvertToSourceList("/media/cdrom/", CD + A));
	 EXPECT_EQ(B, ic.ConvertToSourceList("/media/cdrom/", CD + B));
	 EXPECT_EQ(C, ic.ConvertToSourceList("/media/cdrom/", CD + C));
	 EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + S));
	 }

	 {
	 SCOPED_TRACE("mips configured");
	 _config->Clear("APT");
	 _config->Set("APT::Architecture", "mips");
	 _config->Set("APT::Architectures::", "mips");
	 APT::Configuration::getArchitectures(false);
	 EXPECT_EQ(A, ic.ConvertToSourceList("/media/cdrom/", CD + A));
	 EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + B));
	 EXPECT_EQ(C, ic.ConvertToSourceList("/media/cdrom/", CD + C));
	 EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + S));
	 }

	 {
	 SCOPED_TRACE("kfreebsd-mips configured");
	 _config->Clear("APT");
	 _config->Set("APT::Architecture", "kfreebsd-mips");
	 _config->Set("APT::Architectures::", "kfreebsd-mips");
	 APT::Configuration::getArchitectures(false);
	 EXPECT_EQ(A, ic.ConvertToSourceList("/media/cdrom/", CD + A));
	 EXPECT_EQ(B, ic.ConvertToSourceList("/media/cdrom/", CD + B));
	 EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + C));
	 EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + S));
	 }

	 {
	 SCOPED_TRACE("armel configured");
	 _config->Clear("APT");
	 _config->Set("APT::Architecture", "armel");
	 _config->Set("APT::Architectures::", "armel");
	 APT::Configuration::getArchitectures(false);
	 EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + A));
	 EXPECT_EQ(B, ic.ConvertToSourceList("/media/cdrom/", CD + B));
	 EXPECT_EQ(C, ic.ConvertToSourceList("/media/cdrom/", CD + C));
	 EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + S));
	 }

	 {
	 SCOPED_TRACE("armel+mips configured");
	 _config->Clear("APT");
	 _config->Set("APT::Architecture", "armel");
	 _config->Set("APT::Architectures::", "armel");
	 _config->Set("APT::Architectures::", "mips");
	 APT::Configuration::getArchitectures(false);
	 EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + A));
	 EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + B));
	 EXPECT_EQ(C, ic.ConvertToSourceList("/media/cdrom/", CD + C));
	 EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + S));
	 }
      }
   }
}