test_output_strings 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  1. #!/usr/bin/env sh
  2. . ./test_vars
  3. # Set the 'internal field separator' character to
  4. # something besides whitespace so that the string
  5. # comparisons will work
  6. IFS="~"
  7. # octal quotes are specified by POSIX, should be thus portable
  8. # (e.g. to Lubuntu builtin printf, Solaris 10 /usr/bin/printf)
  9. tab_nl_X_bs="\11 \12X\10"
  10. ##################
  11. # stdout output
  12. ##################
  13. suite_output=`printf "Running suite(s): S1
  14. S2
  15. XML escape \" ' < > & $tab_nl_X_bs tests"`
  16. exp_silent=""
  17. if [ $HAVE_FORK -eq 1 ]; then
  18. exp_minimal_result="37%: Checks: 8, Failures: 4, Errors: 1"
  19. else
  20. exp_minimal_result="42%: Checks: 7, Failures: 4, Errors: 0"
  21. fi
  22. exp_minimal="$suite_output
  23. $exp_minimal_result"
  24. if [ $HAVE_FORK -eq 1 ]; then
  25. exp_normal_result=`printf "37%%: Checks: 8, Failures: 4, Errors: 1
  26. ${SRCDIR}ex_output.c:37:F:Core:test_fail:0: Failure
  27. ${SRCDIR}ex_output.c:46:E:Core:test_exit:0: (after this point) Early exit with return value 1
  28. ${SRCDIR}ex_output.c:72:F:Core:test_loop:0: Iteration 0 failed
  29. ${SRCDIR}ex_output.c:72:F:Core:test_loop:2: Iteration 2 failed
  30. ${SRCDIR}ex_output.c:78:F:description \" ' < > & $tab_nl_X_bs end:test_xml_esc_fail_msg:0: fail \" ' < > & $tab_nl_X_bs message"`
  31. else
  32. exp_normal_result=`printf "42%%: Checks: 7, Failures: 4, Errors: 0
  33. ${SRCDIR}ex_output.c:37:F:Core:test_fail:0: Failure
  34. ${SRCDIR}ex_output.c:72:F:Core:test_loop:0: Iteration 0 failed
  35. ${SRCDIR}ex_output.c:72:F:Core:test_loop:2: Iteration 2 failed
  36. ${SRCDIR}ex_output.c:78:F:description \" ' < > & $tab_nl_X_bs end:test_xml_esc_fail_msg:0: fail \" ' < > & $tab_nl_X_bs message"`
  37. fi
  38. exp_normal="$suite_output
  39. $exp_normal_result"
  40. if [ $HAVE_FORK -eq 1 ]; then
  41. exp_verbose_result=`printf "37%%: Checks: 8, Failures: 4, Errors: 1
  42. ${SRCDIR}ex_output.c:31:P:Core:test_pass:0: Passed
  43. ${SRCDIR}ex_output.c:37:F:Core:test_fail:0: Failure
  44. ${SRCDIR}ex_output.c:46:E:Core:test_exit:0: (after this point) Early exit with return value 1
  45. ${SRCDIR}ex_output.c:66:P:Core:test_pass2:0: Passed
  46. ${SRCDIR}ex_output.c:72:F:Core:test_loop:0: Iteration 0 failed
  47. ${SRCDIR}ex_output.c:72:P:Core:test_loop:1: Passed
  48. ${SRCDIR}ex_output.c:72:F:Core:test_loop:2: Iteration 2 failed
  49. ${SRCDIR}ex_output.c:78:F:description \" ' < > & $tab_nl_X_bs end:test_xml_esc_fail_msg:0: fail \" ' < > & $tab_nl_X_bs message"`
  50. else
  51. exp_verbose_result=`printf "42%%: Checks: 7, Failures: 4, Errors: 0
  52. ${SRCDIR}ex_output.c:31:P:Core:test_pass:0: Passed
  53. ${SRCDIR}ex_output.c:37:F:Core:test_fail:0: Failure
  54. ${SRCDIR}ex_output.c:66:P:Core:test_pass2:0: Passed
  55. ${SRCDIR}ex_output.c:72:F:Core:test_loop:0: Iteration 0 failed
  56. ${SRCDIR}ex_output.c:72:P:Core:test_loop:1: Passed
  57. ${SRCDIR}ex_output.c:72:F:Core:test_loop:2: Iteration 2 failed
  58. ${SRCDIR}ex_output.c:78:F:description \" ' < > & $tab_nl_X_bs end:test_xml_esc_fail_msg:0: fail \" ' < > & $tab_nl_X_bs message"`
  59. fi
  60. exp_verbose="$suite_output
  61. $exp_verbose_result"
  62. if [ $HAVE_FORK -eq 1 ]; then
  63. exp_subunit=`printf "test: Core:test_pass
  64. success: Core:test_pass
  65. test: Core:test_fail
  66. failure: Core:test_fail [
  67. ${SRCDIR}ex_output.c:37: Failure
  68. ]
  69. test: Core:test_exit
  70. error: Core:test_exit [
  71. ${SRCDIR}ex_output.c:46: (after this point) Early exit with return value 1
  72. ]
  73. test: Core:test_pass2
  74. success: Core:test_pass2
  75. test: Core:test_loop
  76. failure: Core:test_loop [
  77. ${SRCDIR}ex_output.c:72: Iteration 0 failed
  78. ]
  79. test: Core:test_loop
  80. success: Core:test_loop
  81. test: Core:test_loop
  82. failure: Core:test_loop [
  83. ${SRCDIR}ex_output.c:72: Iteration 2 failed
  84. ]
  85. test: description \" ' < > & $tab_nl_X_bs end:test_xml_esc_fail_msg
  86. failure: description \" ' < > & $tab_nl_X_bs end:test_xml_esc_fail_msg [
  87. ${SRCDIR}ex_output.c:78: fail \" ' < > & $tab_nl_X_bs message
  88. ]"`
  89. else
  90. exp_subunit=`printf "test: Core:test_pass
  91. success: Core:test_pass
  92. test: Core:test_fail
  93. failure: Core:test_fail [
  94. ${SRCDIR}ex_output.c:37: Failure
  95. ]
  96. test: Core:test_pass2
  97. success: Core:test_pass2
  98. test: Core:test_loop
  99. failure: Core:test_loop [
  100. ${SRCDIR}ex_output.c:72: Iteration 0 failed
  101. ]
  102. test: Core:test_loop
  103. success: Core:test_loop
  104. test: Core:test_loop
  105. failure: Core:test_loop [
  106. ${SRCDIR}ex_output.c:72: Iteration 2 failed
  107. ]
  108. test: description \" ' < > & $tab_nl_X_bs end:test_xml_esc_fail_msg
  109. failure: description \" ' < > & $tab_nl_X_bs end:test_xml_esc_fail_msg [
  110. ${SRCDIR}ex_output.c:78: fail \" ' < > & $tab_nl_X_bs message
  111. ]"`
  112. fi
  113. ##################
  114. # log output
  115. ##################
  116. if [ $HAVE_FORK -eq 1 ]; then
  117. expected_log_log=`printf "Running suite S1
  118. ${SRCDIR}ex_output.c:31:P:Core:test_pass:0: Passed
  119. ${SRCDIR}ex_output.c:37:F:Core:test_fail:0: Failure
  120. ${SRCDIR}ex_output.c:46:E:Core:test_exit:0: (after this point) Early exit with return value 1
  121. Running suite S2
  122. ${SRCDIR}ex_output.c:66:P:Core:test_pass2:0: Passed
  123. ${SRCDIR}ex_output.c:72:F:Core:test_loop:0: Iteration 0 failed
  124. ${SRCDIR}ex_output.c:72:P:Core:test_loop:1: Passed
  125. ${SRCDIR}ex_output.c:72:F:Core:test_loop:2: Iteration 2 failed
  126. Running suite XML escape \" ' < > & $tab_nl_X_bs tests
  127. ${SRCDIR}ex_output.c:78:F:description \" ' < > & $tab_nl_X_bs end:test_xml_esc_fail_msg:0: fail \" ' < > & $tab_nl_X_bs message
  128. Results for all suites run:
  129. 37%%: Checks: 8, Failures: 4, Errors: 1"`
  130. else
  131. expected_log_log=`printf "Running suite S1
  132. ${SRCDIR}ex_output.c:31:P:Core:test_pass:0: Passed
  133. ${SRCDIR}ex_output.c:37:F:Core:test_fail:0: Failure
  134. Running suite S2
  135. ${SRCDIR}ex_output.c:66:P:Core:test_pass2:0: Passed
  136. ${SRCDIR}ex_output.c:72:F:Core:test_loop:0: Iteration 0 failed
  137. ${SRCDIR}ex_output.c:72:P:Core:test_loop:1: Passed
  138. ${SRCDIR}ex_output.c:72:F:Core:test_loop:2: Iteration 2 failed
  139. Running suite XML escape \" ' < > & $tab_nl_X_bs tests
  140. ${SRCDIR}ex_output.c:78:F:description \" ' < > & $tab_nl_X_bs end:test_xml_esc_fail_msg:0: fail \" ' < > & $tab_nl_X_bs message
  141. Results for all suites run:
  142. 42%%: Checks: 7, Failures: 4, Errors: 0"`
  143. fi
  144. ##################
  145. # xml output
  146. ##################
  147. if [ $HAVE_FORK -eq 1 ]; then
  148. expected_xml="<?xml version=\"1.0\"?>
  149. <?xml-stylesheet type=\"text/xsl\" href=\"http://check.sourceforge.net/xml/check_unittest.xslt\"?>
  150. <testsuites xmlns=\"http://check.sourceforge.net/ns\">
  151. <suite>
  152. <title>S1</title>
  153. <test result=\"success\">
  154. <fn>ex_output.c:31</fn>
  155. <id>test_pass</id>
  156. <iteration>0</iteration>
  157. <description>Core</description>
  158. <message>Passed</message>
  159. </test>
  160. <test result=\"failure\">
  161. <fn>ex_output.c:37</fn>
  162. <id>test_fail</id>
  163. <iteration>0</iteration>
  164. <description>Core</description>
  165. <message>Failure</message>
  166. </test>
  167. <test result=\"error\">
  168. <fn>ex_output.c:46</fn>
  169. <id>test_exit</id>
  170. <iteration>0</iteration>
  171. <description>Core</description>
  172. <message>Early exit with return value 1</message>
  173. </test>
  174. </suite>
  175. <suite>
  176. <title>S2</title>
  177. <test result=\"success\">
  178. <fn>ex_output.c:66</fn>
  179. <id>test_pass2</id>
  180. <iteration>0</iteration>
  181. <description>Core</description>
  182. <message>Passed</message>
  183. </test>
  184. <test result=\"failure\">
  185. <fn>ex_output.c:72</fn>
  186. <id>test_loop</id>
  187. <iteration>0</iteration>
  188. <description>Core</description>
  189. <message>Iteration 0 failed</message>
  190. </test>
  191. <test result=\"success\">
  192. <fn>ex_output.c:72</fn>
  193. <id>test_loop</id>
  194. <iteration>1</iteration>
  195. <description>Core</description>
  196. <message>Passed</message>
  197. </test>
  198. <test result=\"failure\">
  199. <fn>ex_output.c:72</fn>
  200. <id>test_loop</id>
  201. <iteration>2</iteration>
  202. <description>Core</description>
  203. <message>Iteration 2 failed</message>
  204. </test>
  205. </suite>
  206. <suite>
  207. <title>XML escape &quot; &apos; &lt; &gt; &amp; &#x9; &#xA;X tests</title>
  208. <test result=\"failure\">
  209. <fn>ex_output.c:78</fn>
  210. <id>test_xml_esc_fail_msg</id>
  211. <iteration>0</iteration>
  212. <description>description &quot; &apos; &lt; &gt; &amp; &#x9; &#xA;X end</description>
  213. <message>fail &quot; &apos; &lt; &gt; &amp; &#x9; &#xA;X message</message>
  214. </test>
  215. </suite>
  216. </testsuites>"
  217. expected_duration_count=9
  218. else
  219. expected_xml="<?xml version=\"1.0\"?>
  220. <?xml-stylesheet type=\"text/xsl\" href=\"http://check.sourceforge.net/xml/check_unittest.xslt\"?>
  221. <testsuites xmlns=\"http://check.sourceforge.net/ns\">
  222. <suite>
  223. <title>S1</title>
  224. <test result=\"success\">
  225. <fn>ex_output.c:31</fn>
  226. <id>test_pass</id>
  227. <iteration>0</iteration>
  228. <description>Core</description>
  229. <message>Passed</message>
  230. </test>
  231. <test result=\"failure\">
  232. <fn>ex_output.c:37</fn>
  233. <id>test_fail</id>
  234. <iteration>0</iteration>
  235. <description>Core</description>
  236. <message>Failure</message>
  237. </test>
  238. </suite>
  239. <suite>
  240. <title>S2</title>
  241. <test result=\"success\">
  242. <fn>ex_output.c:66</fn>
  243. <id>test_pass2</id>
  244. <iteration>0</iteration>
  245. <description>Core</description>
  246. <message>Passed</message>
  247. </test>
  248. <test result=\"failure\">
  249. <fn>ex_output.c:72</fn>
  250. <id>test_loop</id>
  251. <iteration>0</iteration>
  252. <description>Core</description>
  253. <message>Iteration 0 failed</message>
  254. </test>
  255. <test result=\"success\">
  256. <fn>ex_output.c:72</fn>
  257. <id>test_loop</id>
  258. <iteration>1</iteration>
  259. <description>Core</description>
  260. <message>Passed</message>
  261. </test>
  262. <test result=\"failure\">
  263. <fn>ex_output.c:72</fn>
  264. <id>test_loop</id>
  265. <iteration>2</iteration>
  266. <description>Core</description>
  267. <message>Iteration 2 failed</message>
  268. </test>
  269. </suite>
  270. <suite>
  271. <title>XML escape &quot; &apos; &lt; &gt; &amp; &#x9; &#xA;X tests</title>
  272. <test result=\"failure\">
  273. <fn>ex_output.c:78</fn>
  274. <id>test_xml_esc_fail_msg</id>
  275. <iteration>0</iteration>
  276. <description>description &quot; &apos; &lt; &gt; &amp; &#x9; &#xA;X end</description>
  277. <message>fail &quot; &apos; &lt; &gt; &amp; &#x9; &#xA;X message</message>
  278. </test>
  279. </suite>
  280. </testsuites>"
  281. expected_duration_count=8
  282. fi
  283. ##################
  284. # tap output
  285. ##################
  286. if [ $HAVE_FORK -eq 1 ]; then
  287. expected_normal_tap=`printf "ok 1 - ${SRCDIR}ex_output.c:Core:test_pass: Passed
  288. not ok 2 - ${SRCDIR}ex_output.c:Core:test_fail: Failure
  289. not ok 3 - ${SRCDIR}ex_output.c:Core:test_exit: Early exit with return value 1
  290. ok 4 - ${SRCDIR}ex_output.c:Core:test_pass2: Passed
  291. not ok 5 - ${SRCDIR}ex_output.c:Core:test_loop: Iteration 0 failed
  292. ok 6 - ${SRCDIR}ex_output.c:Core:test_loop: Passed
  293. not ok 7 - ${SRCDIR}ex_output.c:Core:test_loop: Iteration 2 failed
  294. not ok 8 - ${SRCDIR}ex_output.c:description \" ' < > & $tab_nl_X_bs end:test_xml_esc_fail_msg: fail \" ' < > & $tab_nl_X_bs message
  295. 1..8"`
  296. expected_aborted_tap=`printf "ok 1 - ${SRCDIR}ex_output.c:Core:test_pass: Passed
  297. not ok 2 - ${SRCDIR}ex_output.c:Core:test_fail: Failure
  298. not ok 3 - ${SRCDIR}ex_output.c:Core:test_exit: Early exit with return value 1
  299. not ok 4 - ${SRCDIR}ex_output.c:Core:test_abort: Early exit with return value 1
  300. ok 5 - ${SRCDIR}ex_output.c:Core:test_pass2: Passed
  301. not ok 6 - ${SRCDIR}ex_output.c:Core:test_loop: Iteration 0 failed
  302. ok 7 - ${SRCDIR}ex_output.c:Core:test_loop: Passed
  303. not ok 8 - ${SRCDIR}ex_output.c:Core:test_loop: Iteration 2 failed
  304. not ok 9 - ${SRCDIR}ex_output.c:description \" ' < > & $tab_nl_X_bs end:test_xml_esc_fail_msg: fail \" ' < > & $tab_nl_X_bs message
  305. 1..9"`
  306. else
  307. expected_normal_tap=`printf "ok 1 - ${SRCDIR}ex_output.c:Core:test_pass: Passed
  308. not ok 2 - ${SRCDIR}ex_output.c:Core:test_fail: Failure
  309. ok 3 - ${SRCDIR}ex_output.c:Core:test_pass2: Passed
  310. not ok 4 - ${SRCDIR}ex_output.c:Core:test_loop: Iteration 0 failed
  311. ok 5 - ${SRCDIR}ex_output.c:Core:test_loop: Passed
  312. not ok 6 - ${SRCDIR}ex_output.c:Core:test_loop: Iteration 2 failed
  313. not ok 7 - ${SRCDIR}ex_output.c:description \" ' < > & $tab_nl_X_bs end:test_xml_esc_fail_msg: fail \" ' < > & $tab_nl_X_bs message
  314. 1..7"`
  315. # When fork() is unavailable, one of the tests
  316. # will invoke exit() which will terminate the
  317. # unit testing program. In that case, the tap
  318. # results will be incomplete, but the required
  319. # test plan will be missing, signaling that
  320. # something bad happened.
  321. expected_aborted_tap="ok 1 - ${SRCDIR}ex_output.c:Core:test_pass: Passed
  322. not ok 2 - ${SRCDIR}ex_output.c:Core:test_fail: Failure"
  323. fi