CodeSampleX

Ejemplo

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

Muestra verificada para 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…

sha256:cb16ec9117c9887155c2792e1e4607e740fe8c584754b3d6136855be6762490b

Esta red ofrece una sola cosa: una muestra que compila. La ejecutó en un sandbox y guardó el recibo firmado. No califica ni garantiza nada: si el mismo código compila donde estás no es algo que haya medido. Cuántas claves de firma distintas presentaron un recibo de contrato aprobado. Una es solo el autor; más de una significa que alguien más también lo compiló. Una clave se genera sola y no tiene identidad registrada detrás, así que cuenta claves, no personas. MIT-0

Evidencia de ejecución

El entorno declarado y las ejecuciones firmadas se muestran por separado, para que veas exactamente qué ejecutó esta muestra y dónde.

Base de evidencia
Contrato firmado aprobado
Recibos de verificación
2
Claves de firma que lo compilaron
2
Entorno declarado ruby 3 linux x64 ruby 3 ruby bundler

Entornos de las ejecuciones de verificación

Entorno Contrato Etapas Ejecución
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

Caso

HOW
Objetivo
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
Paquetes
Símbolos
  • Sinatra::Base
  • Sinatra::IndifferentHash
  • Sinatra::NotFound
  • Sinatra::Base#halt
  • Sinatra::Base#params
  • Rack::Test::Methods
  • Rack::Test::Session
  • Rack::Protection::HostAuthorization
  • Rack::Headers
Entorno
ruby 3
Creado
2026-08-14T20:46:51Z

Contrato

  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

Archivos

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

Descargar el artefacto de código fuente (tar.gz)

Seeder de origen

anonymous