Ce que le réseau a trouvé
Chaque ligne ci-dessous est une mesure, pas un avis. Chacune renvoie à un échantillon publié dont le contract s'exécute dans un conteneur épinglé, réseau coupé : vous pouvez le rejouer et contredire le résultat.
Le système et le runtime viennent de l'environnement enregistré par l'échantillon ; les dimensions absentes sont exclues.
597 constats sur 8 écosystèmes.
- cargo
- composer
- gem
- golang
- hex
- npm
- pub
- pypi
Énoncé par l'échantillon, mesuré par son contrat
276–300 sur 568, mesurés par des échantillons publiés.
-
gemContrat d'échantillonruby · linux/x64sorbet-runtime@0.6.13427
On croitA method marked with `sig(:final)` is always rejected when a class overrides it through include.
MesuréOverriding 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.
-
gemContrat d'échantillonruby · linux/x64sorbet-runtime@0.6.13427
On croitA model that believes `T.must` rejects all falsey values would expect `false` to raise and never be returned.
MesuréCalling `T.must(false)` returns `false`, proving `T.must` only rejects nil, while calling `T.must(nil)` fails.
-
gemContrat d'échantillonruby · linux/x64sorbet-runtime@0.6.13427
On croitJSON.dump on a T::Enum instance raises NoMethodError instead of serializing it
MesuréJSON.dump(Color::RED) returns the JSON string "red" using the enum's serialized value.
-
gemContrat d'échantillonruby · linux/x64sinatra@4.2.1
On croitSinatra automatically removes uploaded file temporary files after the request completes
MesuréA multipart upload sent with an allowed localhost Host reaches the Sinatra route, and the received tempfile still exists after the request returns.
-
gemContrat d'échantillonruby · linux/x64set@1.1.1
On croitChanging an object's #hash after adding it to a Set updates its position in the Set automatically
MesuréAfter an element's hash changes, Set#include? returns false while Set#delete? returns nil and the stale entry still counts toward Set#size.
-
gemContrat d'échantillonruby · linux/x64set@1.1.1
On croitSet[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.
MesuréSet[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
-
gemContrat d'échantillonruby · linux/x64set@1.1.1
On croitCalling `Set#intersect?` with a scalar will simply return `false`.
MesuréSet#intersect?(4) raises `ArgumentError` with message `value must be enumerable`, so invalid scalar input fails instead of returning a boolean.
-
gemContrat d'échantillonruby · linux/x64set@1.1.1
On croitSet#merge accepts only a single enumerable argument at a time, requiring chained or sequential merge calls to combine multiple collections.
MesuréSet#merge accepts multiple enumerable arguments in a single invocation, mutating the receiver in place with elements from all passed collections and returning self.
-
gemContrat d'échantillonruby · linux/x64set@1.1.1
On croitPreloading `sorted_set` via `RUBYOPT=-rsorted_set` is a valid way to get deprecated set behavior on this Ruby stream.
MesuréA 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`.
-
gemContrat d'échantillonruby · linux/x64rack-test@2.2.0
On croitA `Rack::Test::UploadedFile` sent through `post` is cleaned up by rack-test, so its backing tempfile is automatically closed when the request finishes.
MesuréAfter a successful multipart `post`, the uploaded tempfile used by `Rack::Test::UploadedFile` remains open.
-
gemContrat d'échantillonruby · linux/x64set@1.1.1
On croitPassing 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.
Mesuréassert Set.new with a block transforms each element before insertion rather than filtering elements, inserting the boolean return values
-
gemContrat d'échantillonruby · linux/x64rack-test@2.2.0
On croitPassing a Hash payload to Rack::Test request methods with a JSON Content-Type header automatically serializes the body as JSON.
Mesuréassert 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
-
gemContrat d'échantillonruby · linux/x64rack-test@2.2.0
On croitCalling set_cookie with a secure attribute on a session stores the cookie in the jar for HTTPS requests and accepts a URI string.
Mesuréassert 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
-
gemContrat d'échantillonruby · linux/x64rack-protection@4.2.1
On croitProtection middleware short-circuits the request pipeline before the inner app runs, so an app behind JsonCsrf only executes when the request is allowed
MesuréJsonCsrf#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
-
gemContrat d'échantillonruby · linux/x64rack-protection@4.2.1
On croitRack::Protection::HostAuthorization rejects requests with a bare single-label Host header
MesuréA direct Rack::Protection::HostAuthorization middleware returns status 200 for a bare single-label Host header when no permitted_hosts restriction is configured.
-
gemContrat d'échantillonruby · linux/x64rack-protection@4.2.1
On croitDevelopers should expect `Rack::Protection::AuthenticityToken.token(session)` to produce a route-specific token by default.
MesuréLeaving `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.
-
gemContrat d'échantillonruby · linux/x64rack-protection@4.2.1
On croitA 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.
MesuréA cross-origin JSON GET with an untrusted Origin returns 200 because JsonCsrf defers to HttpOrigin while HttpOrigin treats GET as safe
-
gemContrat d'échantillonruby · linux/x64json@2.9.1
On croitJSON.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.
Mesuréassert 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
-
gemContrat d'échantillonruby · linux/x64json@2.9.1
On croitJSON.parse validates all escaped Unicode surrogate sequences identically by rejecting any unpaired surrogate with a ParserError.
Mesuréassert 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
-
gemContrat d'échantillonruby · linux/x64json@2.9.1
On croitPassing 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.
Mesuréassert 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
-
gemContrat d'échantillonruby · linux/x64json@2.9.1
On croitJSON.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.
Mesuréassert 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
-
gemContrat d'échantillonruby · linux/x64json@2.9.1
On croitJSON.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.
MesuréJSON.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
-
gemContrat d'échantillonruby · linux/x64json@2.9.1
On croitJSON.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.
Mesuréassert 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
-
gemContrat d'échantillonruby · linux/x64faraday-net_http@3.4.4
On croitSetting 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.
MesuréSetting 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.
-
gemContrat d'échantillonruby · linux/x64faraday-net_http@3.4.4
On croitPassing 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.
MesuréPassing 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.
Comment vérifier n'importe quelle ligne
Ouvrez l'échantillon, lisez son contract, exécutez-le. Le contract est le test propre à l'échantillon : il tourne hors réseau dans un conteneur épinglé, et c'est le reçu signé de cette exécution que le réseau conserve. Rien ici ne repose sur notre lecture d'une bibliothèque, seulement sur ce qu'elle a fait.
Certains échantillons publiés ne figurent pas sur cette page. Leur contrat est passé et l'échantillon est en ligne, mais aucune ligne de ce contrat ne se lit comme une phrase. Une assertion comme expect(x).toBe(1), placée à côté de la croyance qu'elle vérifie, n'apprend rien au lecteur. Nous préférons les omettre plutôt que publier une preuve que personne ne peut lire.