test_srcformats.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. #! /usr/bin/env python3
  2. from collections import defaultdict
  3. from base_test import DakTestCase
  4. from daklib import srcformats
  5. from daklib.dak_exceptions import UnknownFormatError
  6. class SourceFormatTestCase(DakTestCase):
  7. def get_rejects(self, has_vars):
  8. has = defaultdict(lambda: 0)
  9. has.update(has_vars)
  10. return list(self.fmt.reject_msgs(has))
  11. def assertAccepted(self, has):
  12. self.assertEqual(self.get_rejects(has), [])
  13. def assertRejected(self, has):
  14. self.assertNotEqual(self.get_rejects(has), [])
  15. class FormatOneTestCase(SourceFormatTestCase):
  16. fmt = srcformats.FormatOne
  17. def testEmpty(self):
  18. self.assertRejected({})
  19. def testNative(self):
  20. self.assertAccepted({"native_tar": 1, "native_tar_gz": 1})
  21. def testStandard(self):
  22. self.assertAccepted(
  23. {
  24. "orig_tar": 1,
  25. "orig_tar_gz": 1,
  26. "debian_diff": 1,
  27. }
  28. )
  29. def testDisallowed(self):
  30. self.assertRejected(
  31. {
  32. "native_tar": 1,
  33. "native_tar_gz": 1,
  34. "debian_tar": 1,
  35. }
  36. )
  37. self.assertRejected(
  38. {
  39. "orig_tar": 1,
  40. "orig_tar_gz": 1,
  41. "debian_diff": 0,
  42. }
  43. )
  44. self.assertRejected(
  45. {
  46. "native_tar": 1,
  47. "native_tar_gz": 1,
  48. "more_orig_tar": 1,
  49. }
  50. )
  51. self.assertRejected(
  52. {
  53. "native_tar": 1,
  54. "native_tar_gz": 1,
  55. "debian_diff": 1,
  56. }
  57. )
  58. class FormatTreeTestCase(SourceFormatTestCase):
  59. fmt = srcformats.FormatThree
  60. def testEmpty(self):
  61. self.assertRejected({})
  62. def testSimple(self):
  63. self.assertAccepted({"native_tar": 1})
  64. def testDisallowed(self):
  65. self.assertRejected({"native_tar": 1, "orig_tar": 1})
  66. self.assertRejected({"native_tar": 1, "debian_diff": 1})
  67. self.assertRejected({"native_tar": 1, "debian_tar": 1})
  68. self.assertRejected({"native_tar": 1, "more_orig_tar": 1})
  69. class FormatTreeQuiltTestCase(SourceFormatTestCase):
  70. fmt = srcformats.FormatThreeQuilt
  71. def testEmpty(self):
  72. self.assertRejected({})
  73. def testSimple(self):
  74. self.assertAccepted({"orig_tar": 1, "debian_tar": 1})
  75. def testMultipleTarballs(self):
  76. self.assertAccepted(
  77. {
  78. "orig_tar": 1,
  79. "debian_tar": 1,
  80. "more_orig_tar": 42,
  81. }
  82. )
  83. def testDisallowed(self):
  84. self.assertRejected({"orig_tar": 1, "debian_tar": 1, "debian_diff": 1})
  85. self.assertRejected(
  86. {
  87. "orig_tar": 1,
  88. "debian_tar": 1,
  89. "native_tar": 1,
  90. }
  91. )
  92. class FormatFromStringTestCase(DakTestCase):
  93. def assertFormat(self, txt, klass):
  94. self.assertEqual(srcformats.get_format_from_string(txt), klass)
  95. def assertInvalid(self, txt):
  96. self.assertRaises(
  97. UnknownFormatError,
  98. lambda: srcformats.get_format_from_string(txt),
  99. )
  100. def testFormats(self):
  101. self.assertFormat("1.0", srcformats.FormatOne)
  102. self.assertFormat("3.0 (native)", srcformats.FormatThree)
  103. self.assertFormat("3.0 (quilt)", srcformats.FormatThreeQuilt)
  104. def testInvalidFormats(self):
  105. self.assertInvalid("")
  106. self.assertInvalid(".")
  107. self.assertInvalid("3.0 (cvs)")
  108. self.assertInvalid(" 1.0 ")
  109. self.assertInvalid("8.4 (hardy)")
  110. if __name__ == "__main__":
  111. import unittest
  112. unittest.main()