test-method-rred 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. #!/bin/sh
  2. set -e
  3. TESTDIR="$(readlink -f "$(dirname "$0")")"
  4. . "$TESTDIR/framework"
  5. setupenvironment
  6. configarchitecture 'i386'
  7. echo 'Package: coolstuff
  8. Version: 0.8.15
  9. Description: collection of stuff
  10. A lot, too much to iterate all, but at least this:
  11. - stuff
  12. - more stuff
  13. - even more stuff
  14. .
  15. And a cow.
  16. Package: oldstuff
  17. Version: 0-1
  18. Description: collection of outdated stuff
  19. A lot, but of no use nowadays, but at least this:
  20. - stuff
  21. - more stuff
  22. - even more stuff
  23. .
  24. And a dog.' > Packages
  25. testrred() {
  26. msgtest "$1" "$2"
  27. if [ -z "$3" ]; then
  28. echo -n '' > Packages.ed
  29. else
  30. echo "$3" > Packages.ed
  31. fi
  32. rred() {
  33. cat Packages | runapt "${METHODSDIR}/rred" "$@"
  34. }
  35. testsuccessequal "$4" --nomsg rred -f Packages.ed
  36. }
  37. testrred 'Remove' 'first line' '1d' "$(tail -n +2 ./Packages)"
  38. testrred 'Remove' 'empty line' '10d' "$(head -n 9 ./Packages)
  39. $(tail -n 9 ./Packages)"
  40. testrred 'Remove' 'line in a paragraph' '5d' "$(head -n 4 ./Packages)
  41. $(tail -n 14 ./Packages)"
  42. testrred 'Remove' 'last line' '19d' "$(head -n -1 ./Packages)"
  43. testrred 'Remove' 'multiple single lines' '17d
  44. 7d' "$(sed -e '/^ - even more stuff$/ d' ./Packages)"
  45. testrred 'Remove' 'first paragraph' '1,10d' "$(tail -n 9 ./Packages)"
  46. testrred 'Remove' 'a few lines in the middle' '5,14d' "$(head -n 4 ./Packages)
  47. $(tail -n 5 ./Packages)"
  48. testrred 'Remove' 'second paragraph' '10,19d' "$(head -n 9 ./Packages)"
  49. testrred 'Mass Remove' 'all stuff lines' '15,17d
  50. 13d
  51. 11d
  52. 5,7d
  53. 3d
  54. 1d' "$(sed '/stuff/ d' ./Packages)"
  55. testrred 'Single line add' 'first line' '0a
  56. Format: 3.0 (native)
  57. .' "Format: 3.0 (native)
  58. $(cat ./Packages)"
  59. testrred 'Single line add' 'last line' '19a
  60. Multi-Arch: foreign
  61. .' "$(cat ./Packages)
  62. Multi-Arch: foreign"
  63. testrred 'Single line add' 'middle' '9a
  64. Multi-Arch: foreign
  65. .' "$(head -n 9 ./Packages)
  66. Multi-Arch: foreign
  67. $(tail -n 10 ./Packages)"
  68. testrred 'Multi line add' 'first line' '0a
  69. Format: 3.0 (native)
  70. Source: apt
  71. .' "Format: 3.0 (native)
  72. Source: apt
  73. $(cat ./Packages)"
  74. testrred 'Multi line add' 'last line' '19a
  75. Multi-Arch: foreign
  76. Homepage: https://debian.org
  77. .' "$(cat ./Packages)
  78. Multi-Arch: foreign
  79. Homepage: https://debian.org"
  80. testrred 'Multi line add' 'middle' '9a
  81. Multi-Arch: foreign
  82. Homepage: https://debian.org
  83. .' "$(head -n 9 ./Packages)
  84. Multi-Arch: foreign
  85. Homepage: https://debian.org
  86. $(tail -n 10 ./Packages)"
  87. testrred 'Single line change' 'first line' '1c
  88. Package: supercoolstuff
  89. .' "Package: supercoolstuff
  90. $(tail -n +2 ./Packages)"
  91. testrred 'Single line change' 'in the middle' '9c
  92. And a super cow.
  93. .' "$(head -n 8 ./Packages)
  94. And a super cow.
  95. $(tail -n 10 ./Packages)"
  96. testrred 'Single line change' 'an empty line' '10c
  97. .' "$(head -n 9 ./Packages)
  98. $(tail -n 9 ./Packages)"
  99. testrred 'Single line change' 'a spacy line' '10c
  100. .' "$(head -n 9 ./Packages)
  101. $(tail -n 9 ./Packages)"
  102. testrred 'Single line change' 'last line' '19c
  103. And a cat.
  104. .' "$(head -n -1 ./Packages)
  105. And a cat."
  106. testrred 'Multi line change' 'exchange' '5,7c
  107. - good stuff
  108. - more good stuff
  109. - even more good stuff
  110. .' "$(head -n 4 ./Packages)
  111. - good stuff
  112. - more good stuff
  113. - even more good stuff
  114. $(tail -n 12 ./Packages)"
  115. testrred 'Multi line change' 'less' '5,7c
  116. - good stuff
  117. - more good stuff
  118. .' "$(head -n 4 ./Packages)
  119. - good stuff
  120. - more good stuff
  121. $(tail -n 12 ./Packages)"
  122. testrred 'Multi line change' 'more' '5,7c
  123. - good stuff
  124. - more good stuff
  125. - even more good stuff
  126. - bonus good stuff
  127. .' "$(head -n 4 ./Packages)
  128. - good stuff
  129. - more good stuff
  130. - even more good stuff
  131. - bonus good stuff
  132. $(tail -n 12 ./Packages)"
  133. failrred() {
  134. msgtest 'Failure caused by' "$1"
  135. echo "$2" > Packages.ed
  136. rred() {
  137. cat Packages | runapt "${METHODSDIR}/rred" "$@"
  138. }
  139. testfailure --nomsg rred -f Packages.ed
  140. }
  141. failrred 'Bogus content' '<html>
  142. </html>'
  143. # not a problem per-se, but we want our parser to be really strict
  144. failrred 'Empty patch file' ''
  145. failrred 'Empty line patch file' '
  146. '
  147. failrred 'Empty line before command' '
  148. 1d'
  149. failrred 'Empty line after command' '1d
  150. '
  151. failrred 'Empty line between commands' '17d
  152. 7d'
  153. failrred 'Empty spaces lines before command' '
  154. 1d'
  155. failrred 'Empty spaces lines after command' '1d
  156. '
  157. failrred 'Empty spaces lines between commands' '17d
  158. 7d'
  159. # the line before the first one can't be deleted/changed
  160. failrred 'zero line delete' '0d'
  161. failrred 'zero line change' '0c
  162. Package: supercoolstuff
  163. .'
  164. # and this makes no sense at all
  165. failrred 'negative line delete' '-1d'
  166. failrred 'negative line change' '-1c
  167. Package: supercoolstuff
  168. .'
  169. failrred 'negative line add' '-1a
  170. Package: supercoolstuff
  171. .'
  172. failrred 'Wrong order of commands' '7d
  173. 17d'
  174. failrred 'End before start' '7,6d'