configuration_test.cc 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. #include <config.h>
  2. #include <apt-pkg/configuration.h>
  3. #include <string>
  4. #include <vector>
  5. #include <gtest/gtest.h>
  6. //FIXME: Test for configuration file parsing;
  7. // currently only integration/ tests test them implicitly
  8. TEST(ConfigurationTest,Lists)
  9. {
  10. Configuration Cnf;
  11. Cnf.Set("APT::Keep-Fds::",28);
  12. Cnf.Set("APT::Keep-Fds::",17);
  13. Cnf.Set("APT::Keep-Fds::2",47);
  14. Cnf.Set("APT::Keep-Fds::","broken");
  15. std::vector<std::string> fds = Cnf.FindVector("APT::Keep-Fds");
  16. ASSERT_EQ(4, fds.size());
  17. EXPECT_EQ("28", fds[0]);
  18. EXPECT_EQ("17", fds[1]);
  19. EXPECT_EQ("47", fds[2]);
  20. EXPECT_EQ("broken", fds[3]);
  21. EXPECT_TRUE(Cnf.Exists("APT::Keep-Fds::2"));
  22. EXPECT_EQ("47", Cnf.Find("APT::Keep-Fds::2"));
  23. EXPECT_EQ(47, Cnf.FindI("APT::Keep-Fds::2"));
  24. EXPECT_FALSE(Cnf.Exists("APT::Keep-Fds::3"));
  25. EXPECT_EQ("", Cnf.Find("APT::Keep-Fds::3"));
  26. EXPECT_EQ(56, Cnf.FindI("APT::Keep-Fds::3", 56));
  27. EXPECT_EQ("not-set", Cnf.Find("APT::Keep-Fds::3", "not-set"));
  28. Cnf.Clear("APT::Keep-Fds::2");
  29. EXPECT_TRUE(Cnf.Exists("APT::Keep-Fds::2"));
  30. fds = Cnf.FindVector("APT::Keep-Fds");
  31. ASSERT_EQ(4, fds.size());
  32. EXPECT_EQ("28", fds[0]);
  33. EXPECT_EQ("17", fds[1]);
  34. EXPECT_EQ("", fds[2]);
  35. EXPECT_EQ("broken", fds[3]);
  36. Cnf.Clear("APT::Keep-Fds",28);
  37. fds = Cnf.FindVector("APT::Keep-Fds");
  38. ASSERT_EQ(3, fds.size());
  39. EXPECT_EQ("17", fds[0]);
  40. EXPECT_EQ("", fds[1]);
  41. EXPECT_EQ("broken", fds[2]);
  42. Cnf.Clear("APT::Keep-Fds","");
  43. EXPECT_FALSE(Cnf.Exists("APT::Keep-Fds::2"));
  44. Cnf.Clear("APT::Keep-Fds",17);
  45. Cnf.Clear("APT::Keep-Fds","broken");
  46. fds = Cnf.FindVector("APT::Keep-Fds");
  47. EXPECT_TRUE(fds.empty());
  48. Cnf.Set("APT::Keep-Fds::",21);
  49. Cnf.Set("APT::Keep-Fds::",42);
  50. fds = Cnf.FindVector("APT::Keep-Fds");
  51. ASSERT_EQ(2, fds.size());
  52. EXPECT_EQ("21", fds[0]);
  53. EXPECT_EQ("42", fds[1]);
  54. Cnf.Clear("APT::Keep-Fds");
  55. fds = Cnf.FindVector("APT::Keep-Fds");
  56. EXPECT_TRUE(fds.empty());
  57. }
  58. TEST(ConfigurationTest,Integers)
  59. {
  60. Configuration Cnf;
  61. Cnf.CndSet("APT::Version", 42);
  62. Cnf.CndSet("APT::Version", "66");
  63. EXPECT_EQ("42", Cnf.Find("APT::Version"));
  64. EXPECT_EQ(42, Cnf.FindI("APT::Version"));
  65. EXPECT_EQ("42", Cnf.Find("APT::Version", "33"));
  66. EXPECT_EQ(42, Cnf.FindI("APT::Version", 33));
  67. EXPECT_EQ("33", Cnf.Find("APT2::Version", "33"));
  68. EXPECT_EQ(33, Cnf.FindI("APT2::Version", 33));
  69. }
  70. TEST(ConfigurationTest,DirsAndFiles)
  71. {
  72. Configuration Cnf;
  73. EXPECT_EQ("", Cnf.FindFile("Dir::State"));
  74. EXPECT_EQ("", Cnf.FindFile("Dir::Aptitude::State"));
  75. Cnf.Set("Dir", "/srv/sid");
  76. EXPECT_EQ("", Cnf.FindFile("Dir::State"));
  77. Cnf.Set("Dir::State", "var/lib/apt");
  78. Cnf.Set("Dir::Aptitude::State", "var/lib/aptitude");
  79. EXPECT_EQ("/srv/sid/var/lib/apt", Cnf.FindFile("Dir::State"));
  80. EXPECT_EQ("/srv/sid/var/lib/aptitude", Cnf.FindFile("Dir::Aptitude::State"));
  81. Cnf.Set("RootDir", "/");
  82. EXPECT_EQ("/srv/sid/var/lib/apt", Cnf.FindFile("Dir::State"));
  83. EXPECT_EQ("/srv/sid/var/lib/aptitude", Cnf.FindFile("Dir::Aptitude::State"));
  84. Cnf.Set("RootDir", "//./////.////");
  85. EXPECT_EQ("/srv/sid/var/lib/apt", Cnf.FindFile("Dir::State"));
  86. EXPECT_EQ("/srv/sid/var/lib/aptitude", Cnf.FindFile("Dir::Aptitude::State"));
  87. Cnf.Set("RootDir", "/rootdir");
  88. EXPECT_EQ("/rootdir/srv/sid/var/lib/apt", Cnf.FindFile("Dir::State"));
  89. EXPECT_EQ("/rootdir/srv/sid/var/lib/aptitude", Cnf.FindFile("Dir::Aptitude::State"));
  90. Cnf.Set("RootDir", "/rootdir/");
  91. EXPECT_EQ("/rootdir/srv/sid/var/lib/apt", Cnf.FindFile("Dir::State"));
  92. EXPECT_EQ("/rootdir/srv/sid/var/lib/aptitude", Cnf.FindFile("Dir::Aptitude::State"));
  93. Cnf.Set("Dir::State", "/dev/null");
  94. Cnf.Set("Dir::State::lists", "lists/");
  95. EXPECT_EQ("/rootdir/dev/null", Cnf.FindDir("Dir::State"));
  96. EXPECT_EQ("/rootdir/dev/null", Cnf.FindDir("Dir::State::lists"));
  97. }
  98. TEST(ConfigurationTest,Vector)
  99. {
  100. Configuration Cnf;
  101. std::vector<std::string> vec = Cnf.FindVector("Test::Vector", "");
  102. EXPECT_EQ(0, vec.size());
  103. vec = Cnf.FindVector("Test::Vector", "foo");
  104. ASSERT_EQ(1, vec.size());
  105. EXPECT_EQ("foo", vec[0]);
  106. vec = Cnf.FindVector("Test::Vector", "foo,bar");
  107. EXPECT_EQ(2, vec.size());
  108. EXPECT_EQ("foo", vec[0]);
  109. EXPECT_EQ("bar", vec[1]);
  110. Cnf.Set("Test::Vector::", "baz");
  111. Cnf.Set("Test::Vector::", "bob");
  112. Cnf.Set("Test::Vector::", "dob");
  113. vec = Cnf.FindVector("Test::Vector");
  114. ASSERT_EQ(3, vec.size());
  115. EXPECT_EQ("baz", vec[0]);
  116. EXPECT_EQ("bob", vec[1]);
  117. EXPECT_EQ("dob", vec[2]);
  118. vec = Cnf.FindVector("Test::Vector", "foo,bar");
  119. ASSERT_EQ(3, vec.size());
  120. EXPECT_EQ("baz", vec[0]);
  121. EXPECT_EQ("bob", vec[1]);
  122. EXPECT_EQ("dob", vec[2]);
  123. Cnf.Set("Test::Vector", "abel,bravo");
  124. vec = Cnf.FindVector("Test::Vector", "foo,bar");
  125. ASSERT_EQ(2, vec.size());
  126. EXPECT_EQ("abel", vec[0]);
  127. EXPECT_EQ("bravo", vec[1]);
  128. }
  129. TEST(ConfigurationTest,Merge)
  130. {
  131. Configuration Cnf;
  132. Cnf.Set("Binary::apt::option::foo", "bar");
  133. Cnf.Set("Binary::apt::option::empty", "");
  134. Cnf.Set("option::foo", "foo");
  135. Cnf.MoveSubTree("Binary::apt", "Binary::apt2");
  136. EXPECT_FALSE(Cnf.Exists("Binary::apt::option"));
  137. EXPECT_TRUE(Cnf.Exists("option"));
  138. EXPECT_EQ("foo", Cnf.Find("option::foo"));
  139. EXPECT_EQ("bar", Cnf.Find("Binary::apt2::option::foo"));
  140. EXPECT_FALSE(Cnf.Exists("option::empty"));
  141. EXPECT_TRUE(Cnf.Exists("Binary::apt2::option::empty"));
  142. Cnf.Set("option::empty", "not");
  143. Cnf.MoveSubTree("Binary::apt2", NULL);
  144. EXPECT_FALSE(Cnf.Exists("Binary::apt2::option"));
  145. EXPECT_TRUE(Cnf.Exists("option"));
  146. EXPECT_EQ("bar", Cnf.Find("option::foo"));
  147. EXPECT_EQ("", Cnf.Find("option::empty"));
  148. }