25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

128 lines
3.4 KiB

  1. #!/usr/bin/env bats
  2. load test_helper
  3. export PYTHON_BUILD_SKIP_MIRROR=
  4. export PYTHON_BUILD_CACHE_PATH=
  5. export PYTHON_BUILD_MIRROR_URL=http://mirror.example.com
  6. @test "package URL without checksum bypasses mirror" {
  7. stub shasum true
  8. stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
  9. install_fixture definitions/without-checksum
  10. echo "$output" >&2
  11. assert_success
  12. assert [ -x "${INSTALL_ROOT}/bin/package" ]
  13. unstub curl
  14. unstub shasum
  15. }
  16. @test "package URL with checksum but no shasum support bypasses mirror" {
  17. stub shasum false
  18. stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
  19. install_fixture definitions/with-checksum
  20. assert_success
  21. assert [ -x "${INSTALL_ROOT}/bin/package" ]
  22. unstub curl
  23. unstub shasum
  24. }
  25. @test "package URL with checksum hits mirror first" {
  26. local checksum="ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5"
  27. local mirror_url="${PYTHON_BUILD_MIRROR_URL}/$checksum"
  28. stub shasum true "echo $checksum"
  29. stub curl "-*I* $mirror_url : true" \
  30. "-q -o * -*S* $mirror_url : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$3"
  31. install_fixture definitions/with-checksum
  32. assert_success
  33. assert [ -x "${INSTALL_ROOT}/bin/package" ]
  34. unstub curl
  35. unstub shasum
  36. }
  37. @test "package is fetched from original URL if mirror download fails" {
  38. local checksum="ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5"
  39. local mirror_url="${PYTHON_BUILD_MIRROR_URL}/$checksum"
  40. stub shasum true "echo $checksum"
  41. stub curl "-*I* $mirror_url : false" \
  42. "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
  43. install_fixture definitions/with-checksum
  44. assert_success
  45. assert [ -x "${INSTALL_ROOT}/bin/package" ]
  46. unstub curl
  47. unstub shasum
  48. }
  49. @test "package is fetched from original URL if mirror download checksum is invalid" {
  50. local checksum="ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5"
  51. local mirror_url="${PYTHON_BUILD_MIRROR_URL}/$checksum"
  52. stub shasum true "echo invalid" "echo $checksum"
  53. stub curl "-*I* $mirror_url : true" \
  54. "-q -o * -*S* $mirror_url : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$3" \
  55. "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
  56. install_fixture definitions/with-checksum
  57. echo "$output" >&2
  58. assert_success
  59. assert [ -x "${INSTALL_ROOT}/bin/package" ]
  60. unstub curl
  61. unstub shasum
  62. }
  63. @test "default mirror URL" {
  64. export PYTHON_BUILD_MIRROR_URL=
  65. local checksum="ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5"
  66. stub shasum true "echo $checksum"
  67. stub curl "-*I* : true" \
  68. "-q -o * -*S* https://?*/$checksum : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$3" \
  69. install_fixture definitions/with-checksum
  70. assert_success
  71. assert [ -x "${INSTALL_ROOT}/bin/package" ]
  72. unstub curl
  73. unstub shasum
  74. }
  75. @test "package URL with ruby-lang CDN with default mirror URL will bypasses mirror" {
  76. export PYTHON_BUILD_MIRROR_URL=
  77. local checksum="ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5"
  78. stub shasum true "echo $checksum"
  79. stub curl "-q -o * -*S* https://www.python.org/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
  80. run_inline_definition <<DEF
  81. install_package "package-1.0.0" "https://www.python.org/packages/package-1.0.0.tar.gz#ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5" copy
  82. DEF
  83. assert_success
  84. assert [ -x "${INSTALL_ROOT}/bin/package" ]
  85. unstub curl
  86. unstub shasum
  87. }