parsedepends_test.cc 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #include <apt-pkg/deblistparser.h>
  2. #include <apt-pkg/configuration.h>
  3. #include "assert.h"
  4. int main(int argc,char *argv[]) {
  5. string Package;
  6. string Version;
  7. unsigned int Op = 5;
  8. unsigned int Null = 0;
  9. bool StripMultiArch = true;
  10. bool ParseArchFlags = false;
  11. _config->Set("APT::Architecture","dsk");
  12. const char* Depends =
  13. "debhelper:any (>= 5.0), "
  14. "libdb-dev:any, "
  15. "gettext:native (<= 0.12), "
  16. "libcurl4-gnutls-dev:native | libcurl3-gnutls-dev (>> 7.15.5), "
  17. "debiandoc-sgml, "
  18. "apt (>= 0.7.25), "
  19. "not-for-me [ !dsk ], "
  20. "only-for-me [ dsk ], "
  21. "overlord-dev:any (= 7.15.3~) | overlord-dev:native (>> 7.15.5), "
  22. ;
  23. unsigned short runner = 0;
  24. test:
  25. // std::clog << (StripMultiArch ? "NO-Multi" : "Multi") << " " << (ParseArchFlags ? "Flags" : "NO-Flags") << std::endl;
  26. // Stripping MultiArch is currently the default setting to not confuse
  27. // non-MultiArch capable users of the library with "strange" extensions.
  28. const char* Start = Depends;
  29. const char* End = Depends + strlen(Depends);
  30. Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch);
  31. if (StripMultiArch == true)
  32. equals("debhelper", Package);
  33. else
  34. equals("debhelper:any", Package);
  35. equals("5.0", Version);
  36. equals(Null | pkgCache::Dep::GreaterEq, Op);
  37. Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch);
  38. if (StripMultiArch == true)
  39. equals("libdb-dev", Package);
  40. else
  41. equals("libdb-dev:any", Package);
  42. equals("", Version);
  43. equals(Null | pkgCache::Dep::NoOp, Op);
  44. Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch);
  45. if (StripMultiArch == true)
  46. equals("gettext", Package);
  47. else
  48. equals("gettext:native", Package);
  49. equals("0.12", Version);
  50. equals(Null | pkgCache::Dep::LessEq, Op);
  51. Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch);
  52. if (StripMultiArch == true)
  53. equals("libcurl4-gnutls-dev", Package);
  54. else
  55. equals("libcurl4-gnutls-dev:native", Package);
  56. equals("", Version);
  57. equals(Null | pkgCache::Dep::Or, Op);
  58. Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch);
  59. equals("libcurl3-gnutls-dev", Package);
  60. equals("7.15.5", Version);
  61. equals(Null | pkgCache::Dep::Greater, Op);
  62. Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch);
  63. equals("debiandoc-sgml", Package);
  64. equals("", Version);
  65. equals(Null | pkgCache::Dep::NoOp, Op);
  66. Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch);
  67. equals("apt", Package);
  68. equals("0.7.25", Version);
  69. equals(Null | pkgCache::Dep::GreaterEq, Op);
  70. if (ParseArchFlags == true) {
  71. Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch);
  72. equals("", Package); // not-for-me
  73. } else {
  74. equals(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch));
  75. Start = strstr(Start, ",");
  76. Start++;
  77. }
  78. if (ParseArchFlags == true) {
  79. Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch);
  80. equals("only-for-me", Package);
  81. equals("", Version);
  82. equals(Null | pkgCache::Dep::NoOp, Op);
  83. } else {
  84. equals(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch));
  85. Start = strstr(Start, ",");
  86. Start++;
  87. }
  88. Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch);
  89. if (StripMultiArch == true)
  90. equals("overlord-dev", Package);
  91. else
  92. equals("overlord-dev:any", Package);
  93. equals("7.15.3~", Version);
  94. equals(Null | pkgCache::Dep::Equals | pkgCache::Dep::Or, Op);
  95. Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch);
  96. if (StripMultiArch == true)
  97. equals("overlord-dev", Package);
  98. else
  99. equals("overlord-dev:native", Package);
  100. equals("7.15.5", Version);
  101. equals(Null | pkgCache::Dep::Greater, Op);
  102. if (StripMultiArch == false)
  103. ParseArchFlags = true;
  104. StripMultiArch = !StripMultiArch;
  105. runner++;
  106. if (runner < 4)
  107. goto test; // this is the prove: tests are really evil ;)
  108. return 0;
  109. }