test 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #!/bin/bash
  2. #shellcheck disable=SC1091,SC2034
  3. Installed=
  4. Custom=
  5. Select=
  6. shellfu import jat_dump
  7. shellfu import preupg
  8. shellfu import preupg_fupath
  9. shellfu import xcase
  10. xcase__enum() {
  11. #
  12. # Enumerate use case ids
  13. #
  14. xcase__permute Installed 0 1 2 \
  15. | xcase__per Custom 0 1 2 \
  16. | xcase__per Select none s_ok c_ok s_bad c_bad both
  17. }
  18. mk_cupath() {
  19. #
  20. # Build custom upath
  21. #
  22. local name
  23. for name in "$@"; do
  24. preupg_fupath "$name" @pass @informational @fixed
  25. done
  26. }
  27. xcase__setup() {
  28. #
  29. # Setup and collect data
  30. #
  31. local t_selargs # selection arguments
  32. case $Installed in
  33. 0) : ;;
  34. 1) mk_cupath INS1; cp -r INS1 /usr/share/preupgrade ;;
  35. 2) mk_cupath INS{1,2}; cp -r INS{1,2} /usr/share/preupgrade ;;
  36. *) xcase__id_error Installed ;;
  37. esac
  38. case $Custom in
  39. 0) : ;;
  40. 1) mk_cupath CUS1 ;;
  41. 2) mk_cupath CUS{1,2} ;;
  42. *) xcase__id_error Custom ;;
  43. esac
  44. case $Select in
  45. none) t_selargs=() ;;
  46. s_ok) t_selargs=(-s INS1) ;;
  47. s_bad) t_selargs=(-s BLAH) ;;
  48. c_ok) t_selargs=(-c CUS1/all-xccdf.xml) ;;
  49. c_bad) t_selargs=(-c CUS3/all-xccdf.xml) ;;
  50. both) t_selargs=(-s INS1 -c CUS1/all-xccdf.xml) ;;
  51. *) xcase__id_error Select ;;
  52. esac
  53. jat__cmd -S 0,1,20,22 -o preupg.out -e preupg.err \
  54. preupg --list-rules "${t_selargs[@]}"
  55. echo $? >r_es
  56. }
  57. xcase__test() {
  58. #
  59. # Verify result = oracle
  60. #
  61. local o_err=false # oracle: error output?
  62. local o_es # oracle: preupg exit status
  63. local o_lines # oracle: normal output line count
  64. local r_err=false # result: error output?
  65. local r_es # result: preupg exit status
  66. local r_lines # result: normal output line count
  67. grep '^xccdf' preupg.out >preupg.out.filtered; # FIXME: remove and use normal .out
  68. r_lines=$(<preupg.out.filtered wc -l) # after https://github.com/upgrades-migrations/preupgrade-assistant/issues/333
  69. test -s preupg.err && r_err=true
  70. r_es=$(<r_es)
  71. case $Installed:$Custom:$Select in
  72. *:both) o_lines=0; o_es=22; o_err=true ;;
  73. 0:0:*) o_lines=0; o_es=20; o_err=true ;;
  74. 1:*:none) o_lines=3; o_es=0; o_err=false ;;
  75. *:none) o_lines=0; o_es=20; o_err=true ;;
  76. 0:*:s_ok) o_lines=0; o_es=20; o_err=true ;;
  77. *:s_ok) o_lines=3; o_es=0; o_err=false ;;
  78. *:s_bad) o_lines=0; o_es=20; o_err=true ;;
  79. *:0:c_ok) o_lines=0; o_es=20; o_err=true ;;
  80. *:c_ok) o_lines=3; o_es=0; o_err=false ;;
  81. *:c_bad) o_lines=0; o_es=20; o_err=true ;;
  82. *) xcase__id_error Installed Custom Select ;;
  83. esac
  84. jat__cmp -h "number of listed lines is correct" \
  85. "$r_lines" eq "$o_lines"
  86. jat__cmp -h "exit status from preupg is correct" \
  87. "$r_es" eq "$o_es"
  88. # jat__cmp -h "error output does (not) exist as expected" \
  89. # "$r_err" eq "$o_err"
  90. # FIXME: enable stderr assert after https://github.com/upgrades-migrations/preupgrade-assistant/issues/333
  91. }
  92. xcase__diag() {
  93. dump__file preupg.out preupg.out.filtered preupg.err
  94. }
  95. xcase__cleanup() {
  96. jat__cmd rm -rf /usr/share/preupgrade/INS*
  97. preupg__rmresult
  98. }
  99. xcase__run -v
  100. preupg__Cleanup