O que a rede encontrou
Cada linha abaixo é uma medição, não uma opinião. Todas apontam para uma amostra publicada cujo contract é executado em um contêiner fixado e sem rede, então você pode reexecutá-lo e discordar do resultado.
O sistema e o runtime vêm do ambiente registrado pela amostra; dimensões ausentes são excluídas ao filtrar.
597 achados em 8 ecossistemas.
- cargo
- composer
- gem
- golang
- hex
- npm
- pub
- pypi
O que a amostra afirma e o contrato dela mede
276–300 de 568, medidos por amostras publicadas.
-
gemContrato da amostraruby · linux/x64sorbet-runtime@0.6.13427
Acredita-seA method marked with `sig(:final)` is always rejected when a class overrides it through include.
MedidoOverriding a `sig(:final)` method by defining the same instance method in a class after including a module with that final method succeeds while final checks are not enabled.
-
gemContrato da amostraruby · linux/x64sorbet-runtime@0.6.13427
Acredita-seA model that believes `T.must` rejects all falsey values would expect `false` to raise and never be returned.
MedidoCalling `T.must(false)` returns `false`, proving `T.must` only rejects nil, while calling `T.must(nil)` fails.
-
gemContrato da amostraruby · linux/x64sorbet-runtime@0.6.13427
Acredita-seJSON.dump on a T::Enum instance raises NoMethodError instead of serializing it
MedidoJSON.dump(Color::RED) returns the JSON string "red" using the enum's serialized value.
-
gemContrato da amostraruby · linux/x64sinatra@4.2.1
Acredita-seSinatra automatically removes uploaded file temporary files after the request completes
MedidoA multipart upload sent with an allowed localhost Host reaches the Sinatra route, and the received tempfile still exists after the request returns.
-
gemContrato da amostraruby · linux/x64set@1.1.1
Acredita-seChanging an object's #hash after adding it to a Set updates its position in the Set automatically
MedidoAfter an element's hash changes, Set#include? returns false while Set#delete? returns nil and the stale entry still counts toward Set#size.
-
gemContrato da amostraruby · linux/x64set@1.1.1
Acredita-seSet[1,2,3].to_json returns the string "[1,2,3]" because Set is an Enumerable collection and the json gem is expected to serialize it like an Array.
MedidoSet[1,2,3].to_json returns a JSON string literal (begins with a double-quote character) rather than the JSON array "[1,2,3]", because Set inherits to_json from JSON::Ext::Generator::GeneratorMethods::Object which delegates to to_s.to_json
-
gemContrato da amostraruby · linux/x64set@1.1.1
Acredita-seCalling `Set#intersect?` with a scalar will simply return `false`.
MedidoSet#intersect?(4) raises `ArgumentError` with message `value must be enumerable`, so invalid scalar input fails instead of returning a boolean.
-
gemContrato da amostraruby · linux/x64set@1.1.1
Acredita-seSet#merge accepts only a single enumerable argument at a time, requiring chained or sequential merge calls to combine multiple collections.
MedidoSet#merge accepts multiple enumerable arguments in a single invocation, mutating the receiver in place with elements from all passed collections and returning self.
-
gemContrato da amostraruby · linux/x64set@1.1.1
Acredita-sePreloading `sorted_set` via `RUBYOPT=-rsorted_set` is a valid way to get deprecated set behavior on this Ruby stream.
MedidoA fresh Ruby process started with `RUBYOPT=-rset` starts normally and can construct `Set`, while the same process started with `RUBYOPT=-rsorted_set` exits before executing the script body with `cannot load such file -- sorted_set`.
-
gemContrato da amostraruby · linux/x64rack-test@2.2.0
Acredita-seA `Rack::Test::UploadedFile` sent through `post` is cleaned up by rack-test, so its backing tempfile is automatically closed when the request finishes.
MedidoAfter a successful multipart `post`, the uploaded tempfile used by `Rack::Test::UploadedFile` remains open.
-
gemContrato da amostraruby · linux/x64set@1.1.1
Acredita-sePassing a block to Set.new filters matching elements, Set#map preserves the Set type with duplicate elimination, in-place filters always return the receiver, and Set#add returns a boolean indicating whether insertion occurred.
Medidoassert Set.new with a block transforms each element before insertion rather than filtering elements, inserting the boolean return values
-
gemContrato da amostraruby · linux/x64rack-test@2.2.0
Acredita-sePassing a Hash payload to Rack::Test request methods with a JSON Content-Type header automatically serializes the body as JSON.
Medidoassert posting a Hash with application/json Content-Type sends a form-urlencoded query string and fails JSON parsing unless explicitly passed as a serialized JSON string
-
gemContrato da amostraruby · linux/x64rack-test@2.2.0
Acredita-seCalling set_cookie with a secure attribute on a session stores the cookie in the jar for HTTPS requests and accepts a URI string.
Medidoassert calling set_cookie with a secure attribute without an explicit URI object silently drops the cookie because default URI lacks an HTTPS scheme, while passing a URI string raises NoMethodError
-
gemContrato da amostraruby · linux/x64rack-protection@4.2.1
Acredita-seProtection middleware short-circuits the request pipeline before the inner app runs, so an app behind JsonCsrf only executes when the request is allowed
MedidoJsonCsrf#call invokes app.call(env) unconditionally before deciding whether to deny, so the inner application executes — and its side effects occur — even when the middleware ultimately returns 403
-
gemContrato da amostraruby · linux/x64rack-protection@4.2.1
Acredita-seRack::Protection::HostAuthorization rejects requests with a bare single-label Host header
MedidoA direct Rack::Protection::HostAuthorization middleware returns status 200 for a bare single-label Host header when no permitted_hosts restriction is configured.
-
gemContrato da amostraruby · linux/x64rack-protection@4.2.1
Acredita-seDevelopers should expect `Rack::Protection::AuthenticityToken.token(session)` to produce a route-specific token by default.
MedidoLeaving `path` and `method` unspecified when calling `Rack::Protection::AuthenticityToken.token(session)` makes the token validate on any POST route, so it is global by default.
-
gemContrato da amostraruby · linux/x64rack-protection@4.2.1
Acredita-seA cross-origin GET request to a JSON endpoint with an untrusted Origin header is rejected with HTTP 403 when JsonCsrf and HttpOrigin are both active.
MedidoA cross-origin JSON GET with an untrusted Origin returns 200 because JsonCsrf defers to HttpOrigin while HttpOrigin treats GET as safe
-
gemContrato da amostraruby · linux/x64json@2.9.1
Acredita-seJSON.generate and JSON.parse reject top-level primitive scalars like strings, booleans, and numbers unless wrapped in objects or arrays, and symbolize_keys: true transforms parsed keys into Ruby symbols.
Medidoassert JSON.generate and JSON.parse serialize and deserialize top-level primitive strings, numbers, booleans, and nil directly without quirks mode, while symbolize_keys is silently ignored leaving string keys unless symbolize_names is used
-
gemContrato da amostraruby · linux/x64json@2.9.1
Acredita-seJSON.parse validates all escaped Unicode surrogate sequences identically by rejecting any unpaired surrogate with a ParserError.
Medidoassert JSON.parse accepts lone low surrogates like \uDC00 without raising ParserError, returning an invalid UTF-8 string that fails when passed to JSON.generate, while lone high surrogates like \uD800 raise ParserError immediately
-
gemContrato da amostraruby · linux/x64json@2.9.1
Acredita-sePassing an IO object to JSON.dump or JSON.load automatically closes or rewinds the stream upon completion, returns the serialized JSON string from dump, and streams writes and reads incrementally without buffering full documents in memory.
Medidoassert JSON.dump and JSON.load leave passed IO streams open at EOF rather than closing or rewinding them, dump returns the IO object instead of the JSON string, and both operations buffer the entire payload in memory in a single monolithic read or write rather than streaming chunks
-
gemContrato da amostraruby · linux/x64json@2.9.1
Acredita-seJSON.load uses its proc return value to transform parsed nodes like a JSON reviver, while JSON.create_id modifies process-global state shared across all threads.
Medidoassert JSON.load invokes its proc in post-order depth-first traversal but ignores the proc return value, leaving parsed elements unchanged unless mutated in-place
-
gemContrato da amostraruby · linux/x64json@2.9.1
Acredita-seJSON.dump is a direct alias for JSON.generate that defaults to a 100-level recursion ceiling and raises JSON::GeneratorError on non-finite floats like NaN and Infinity.
MedidoJSON.dump defaults max_nesting to false and allow_nan to true, serializing 100+ deep nested structures and NaN floats without raising the NestingError or GeneratorError that JSON.generate enforces
-
gemContrato da amostraruby · linux/x64json@2.9.1
Acredita-seJSON.parse! is an exception-raising strict mode of JSON.parse, while requiring json automatically provides bidirectional structured JSON serialization for core types like Range and Regexp.
Medidoassert JSON.parse rejects NaN and nesting depths over 100 with ParserError and NestingError whereas JSON.parse! relaxes limits to allow NaN and unbounded nesting by default
-
gemContrato da amostraruby · linux/x64faraday-net_http@3.4.4
Acredita-seSetting a request timeout of 0 or passing proxy credentials inside the URI object disables timeouts and authenticates the proxy connection in Faraday's Net::HTTP adapter.
MedidoSetting request timeout to 0 configures Net::HTTP read, open, and write timeouts to 0 seconds rather than disabling timeouts or falling back to defaults because 0 is truthy in Ruby.
-
gemContrato da amostraruby · linux/x64faraday-net_http@3.4.4
Acredita-sePassing an IO object as a request body automatically streams the payload without explicit transfer headers and closes the stream on completion, while Faraday::Connection retains persistent TCP sockets across calls.
MedidoPassing an IO stream as a request body without an explicit Content-Length or chunked Transfer-Encoding header raises an ArgumentError, and even after successful transfer, NetHttp leaves the caller's IO stream open at EOF.
Como conferir qualquer linha daqui
Abra a amostra, leia o contract dela e execute. O contract é o teste da própria amostra: roda sem rede em um contêiner fixado, e o recibo assinado dessa execução é o que a rede guarda. Nada aqui depende de como lemos uma biblioteca, apenas do que ela fez.
Algumas amostras publicadas não estão nesta página. O contrato delas passou e a amostra está no ar, mas nenhuma linha desse contrato se lê como uma frase. Uma asserção como expect(x).toBe(1), ao lado da crença que verifica, não diz nada a quem lê. Preferimos deixá-las de fora a publicar evidência que ninguém consegue ler.