Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

134 řádky
2.9 KiB

před 10 roky
  1. export TMP="$BATS_TEST_DIRNAME/tmp"
  2. PATH=/usr/bin:/usr/sbin:/bin/:/sbin
  3. PATH="$BATS_TEST_DIRNAME/../bin:$PATH"
  4. PATH="$TMP/bin:$PATH"
  5. export PATH
  6. teardown() {
  7. rm -fr "$TMP"/*
  8. }
  9. stub() {
  10. local program="$1"
  11. local prefix="$(echo "$program" | tr a-z- A-Z_)"
  12. shift
  13. export "${prefix}_STUB_PLAN"="${TMP}/${program}-stub-plan"
  14. export "${prefix}_STUB_RUN"="${TMP}/${program}-stub-run"
  15. export "${prefix}_STUB_END"=
  16. mkdir -p "${TMP}/bin"
  17. ln -sf "${BATS_TEST_DIRNAME}/stubs/stub" "${TMP}/bin/${program}"
  18. touch "${TMP}/${program}-stub-plan"
  19. for arg in "$@"; do printf "%s\n" "$arg" >> "${TMP}/${program}-stub-plan"; done
  20. }
  21. unstub() {
  22. local program="$1"
  23. local prefix="$(echo "$program" | tr a-z- A-Z_)"
  24. local path="${TMP}/bin/${program}"
  25. export "${prefix}_STUB_END"=1
  26. local STATUS=0
  27. "$path" || STATUS="$?"
  28. rm -f "$path"
  29. rm -f "${TMP}/${program}-stub-plan" "${TMP}/${program}-stub-run"
  30. return "$STATUS"
  31. }
  32. assert() {
  33. if ! "$@"; then
  34. flunk "failed: $@"
  35. fi
  36. }
  37. flunk() {
  38. { if [ "$#" -eq 0 ]; then cat -
  39. else echo "$@"
  40. fi
  41. } | sed "s:${TMP}:\${TMP}:g" >&2
  42. return 1
  43. }
  44. assert_success() {
  45. if [ "$status" -ne 0 ]; then
  46. { echo "command failed with exit status $status"
  47. echo "output: $output"
  48. } | flunk
  49. elif [ "$#" -gt 0 ]; then
  50. assert_output "$1"
  51. fi
  52. }
  53. assert_failure() {
  54. if [ "$status" -eq 0 ]; then
  55. flunk "expected failed exit status"
  56. elif [ "$#" -gt 0 ]; then
  57. assert_output "$1"
  58. fi
  59. }
  60. assert_equal() {
  61. if [ "$1" != "$2" ]; then
  62. { echo "expected: $1"
  63. echo "actual: $2"
  64. } | flunk
  65. fi
  66. }
  67. assert_output() {
  68. local expected
  69. if [ $# -eq 0 ]; then expected="$(cat -)"
  70. else expected="$1"
  71. fi
  72. assert_equal "$expected" "$output"
  73. }
  74. assert_output_contains() {
  75. local expected="$1"
  76. echo "$output" | grep -F "$expected" >/dev/null || {
  77. { echo "expected output to contain $expected"
  78. echo "actual: $output"
  79. } | flunk
  80. }
  81. }
  82. assert_output_contains_not() {
  83. local expected="$1"
  84. echo "$output" | grep -F "$expected" >/dev/null && {
  85. { echo "expected output to not contain $expected"
  86. echo "actual: $output"
  87. } | flunk; return
  88. }
  89. return 0
  90. }
  91. create_executable() {
  92. mkdir -p "${PYENV_ROOT}/versions/$1/bin"
  93. touch "${PYENV_ROOT}/versions/$1/bin/$2"
  94. chmod +x "${PYENV_ROOT}/versions/$1/bin/$2"
  95. }
  96. remove_executable() {
  97. rm -f "${PYENV_ROOT}/versions/$1/bin/$2"
  98. }
  99. create_conda() {
  100. local version="$1"
  101. shift 1
  102. mkdir -p "${PYENV_ROOT}/versions/$version/bin"
  103. touch "${PYENV_ROOT}/versions/$version/bin/activate"
  104. touch "${PYENV_ROOT}/versions/$version/bin/conda"
  105. chmod +x "${PYENV_ROOT}/versions/$version/bin/conda"
  106. local conda_env
  107. for conda_env; do
  108. mkdir -p "${PYENV_ROOT}/versions/$version/envs/$conda_env/bin"
  109. touch "${PYENV_ROOT}/versions/$version/envs/$conda_env/bin/activate"
  110. touch "${PYENV_ROOT}/versions/$version/envs/$conda_env/bin/conda"
  111. chmod +x "${PYENV_ROOT}/versions/$version/envs/$conda_env/bin/conda"
  112. done
  113. }