CodeSampleX

示例

sinatra 4.2.1: Test a Sinatra 4 app with rack-test in the same process, with no server, and get the params, filter and 404 behaviour right instead of guessing it

已验证示例 — gem sinatra 4.2.1: Test a Sinatra 4 app with rack-test in the same process, with no server, and get the params, filter and 404 behaviour right…

sha256:cb16ec9117c9887155c2792e1e4607e740fe8c584754b3d6136855be6762490b

本网络只提供一件事:能构建的样本。它在沙箱中运行并保留签名回执。它不评级、不担保——同样的代码能否在你的环境构建,它没有测量过。 提交了通过的契约回执的不同签名密钥数量。为 1 表示只有作者;大于 1 表示还有其他人构建过。密钥是自行生成的,背后没有注册身份,因此计的是密钥而非人。 MIT-0

执行证据

声明的环境与签名的运行分开呈现,你可以看到这个样本究竟运行了什么、在哪里运行。

证据依据
签名契约通过
验证回执
2
构建过它的签名密钥
2
声明的环境 ruby 3 linux x64 ruby 3 ruby bundler

验证运行环境

环境 契约 阶段 运行日期
ruby 3 · linux alpine/x64 · docker ed25519:a2ec939a4c60e243 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · gem@1
2026-08-14
ruby 3 · linux debian/x64 · docker ed25519:d91480838ac982c9 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · gem@1
2026-08-18

案例

HOW
目标
Test a Sinatra 4 app with rack-test in the same process, with no server, and get the params, filter and 404 behaviour right instead of guessing it
符号
  • Sinatra::Base
  • Sinatra::IndifferentHash
  • Sinatra::NotFound
  • Sinatra::Base#halt
  • Sinatra::Base#params
  • Rack::Test::Methods
  • Rack::Test::Session
  • Rack::Protection::HostAuthorization
  • Rack::Headers
环境
ruby 3
创建时间
2026-08-14T20:46:51Z

契约

  1. assert a modular Sinatra::Base app never starts a server, while the classic Sinatra::Application would
  2. assert the environment behind these measurements is development, read out of ENV when sinatra/base was required
  3. assert a default Sinatra 4 app answers rack-test's Host of example.org with a 403 whose body is Host not permitted
  4. assert a Host of localhost, anything under .test, and any IP literal are accepted by that same development list
  5. assert an empty permitted_hosts switches the check off and the identical request then reaches the route
  6. assert a named parameter arrives as a String under its own key, with no splat key present at all
  7. assert params is a Sinatra::IndifferentHash where the symbol and the string reach the same value
  8. assert a splat arrives as an Array under splat even when it matched exactly once, while the block argument is the plain String
  9. assert a splat crosses slashes, that two splats fill the array in order, and that /files/* does not match /files
  10. assert a route capture overrides a query parameter of the same name
  11. assert a query string and a form body merge into params and the form body wins a collision, while request.GET and request.POST stay separate
  12. assert a route capture beats the form body as well, so precedence is route, then form, then query
  13. assert params loses its route captures again once the route returns, while the query parameters stay
  14. assert an unmatched path returns Sinatra's own 404 page naming the app class, rather than an empty body
  15. assert halt 404 inside a matched route is the 404 that really is empty
  16. assert a JSON-looking string body is served as text/html;charset=utf-8 until content_type is declared, and the body is passed through untouched
  17. assert the response header names come back lowercase under Rack 3
  18. assert return inside a before filter leaves only that filter, so the second filter and the route still run and the client gets a 200
  19. assert halt inside a before filter stops the second filter and the route and owns the status and body
  20. assert after filters still run on a halted request

文件

  • Gemfile
  • Gemfile.lock
  • csx.json
  • src/app.rb
  • test/contract.rb

下载源代码构件 (tar.gz)

原始种子者

anonymous