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
426–450 sur 568, mesurés par des échantillons publiés.
-
npmContrat d'échantillonnode · linux/x64commander@15.0.0
On croitSpawning git-style executable subcommands with Commander cleans up all process-level event listeners once the subcommand process exits.
MesuréSpawning executable subcommands in commander registers signal event listeners on the global process object that are never unregistered upon process termination, accumulating memory leaks on subsequent command invocations.
-
npmContrat d'échantillonnode · linux/x64commander@10.0.1
On croitPassing a string option name to Option.implies() sets that option to true when the triggering option is parsed.
MesuréOption.implies('quiet') on an option implicitly sets the boolean quiet option to true when the parent flag is present in Commander 10.0.1 instead of decomposing the string into numeric character properties as in 10.0.0
-
npmContrat d'échantillonnode · linux/x64bun@1.2.17
On croitThe bun npm package package.json maps the bunx binary entry to bin/bun.exe rather than a dedicated bin/bunx.exe target.
Mesuréassert bun package.json bin field maps bunx to bin/bunx.exe rather than bin/bun.exe in version 1.2.17
-
gemContrat d'échantillonruby · linux/x64rack-test@2.2.0
On croitPassing an HTTP header dictionary as the third argument to Rack::Test request methods translates header names into Rack environment keys for that single request.
Mesuréassert passing raw HTTP header names in the third argument leaves them un-prefixed in env rather than transforming to HTTP_ CGI keys
-
gemContrat d'échantillonruby · linux/x64rack-protection@4.2.1
On croitRack::Protection::CookieTossing evaluates each request independently so that a subsequent valid request with no duplicate cookies succeeds after an earlier attack request was rejected.
MesuréCalling Rack::Protection::CookieTossing with a subsequent valid request returns HTTP status 403 Forbidden rather than 200 OK because detected malicious cookie names are retained on the middleware instance in @bad_cookies across requests.
-
gemContrat d'échantillonruby · linux/x64rack-protection@4.2.1
On croitParameter values with non-string leaf types should survive a round trip through `EscapedParams` unchanged.
MesuréWhen a pre-seeded `rack.request.query_hash` with mixed values passes through `Rack::Protection::EscapedParams`, integer and symbol leaves become `nil` before the request body reaches the app, while string leaves are HTML-escaped.
-
composerContrat d'échantillonphp · linux/x64symfony/console@8.1.1
On croitA developer expects the default ChoiceQuestion label to be escaped, so `<comment>...` appears in the prompt brackets.
MesuréIn 8.1.1, running a ChoiceQuestion with default `<comment>Add new tag</comment>` must print the prompt with `Select a tag [Add new tag]:` and must not print `[<comment>Add new tag</comment>]`.
-
gemContrat d'échantillonruby · linux/x64json@2.9.1
On croitJSON.parse with symbolize_names: true and create_additions: true deserializes custom domain objects while symbolizing remaining hash keys, and JSON.generate serializes objects that implement as_json.
Mesuréassert JSON.parse raises ArgumentError when :symbolize_names and :create_additions are combined, making addition deserialization mutually exclusive with key symbolization
-
gemContrat d'échantillonruby · linux/x64json@2.9.1
On croitPassing nil to JSON.parse should raise JSON::ParserError because it is invalid JSON text.
MesuréJSON.load(nil) returns nil, so the two APIs are not behaviorally equivalent on nil input.
-
gemContrat d'échantillonruby · linux/x64faraday-net_http@3.4.4
On croitAll Ruby Net::HTTP timeout exceptions inherit from Timeout::Error and are expected to be caught under Faraday::TimeoutError.
MesuréNet::OpenTimeout is mapped to Faraday::ConnectionFailed rather than Faraday::TimeoutError because faraday-net_http routes socket open failures through its connection failure handler.
-
npmContrat d'échantillonnode · linux/x64@babel/preset-env@7.29.7
On croitModifying .browserslistrc on disk causes @babel/preset-env to automatically pick up the updated target environment on subsequent transformSync calls in a long-running process.
MesuréWhen .browserslistrc is modified on disk during a process lifetime, @babel/preset-env continues to emit transpiled code matching the stale cached targets until browserslist.clearCaches() is explicitly invoked.
-
npmContrat d'échantillonnode · linux/x64@babel/preset-env@8.0.2
On croitSetting targets to an empty array [] behaves identically to an empty object {} by defaulting to the standard baseline and leaving modern syntax untranspiled.
MesuréPassing targets: [] resolves to an empty environment matching zero engines and forces full ES5 transpilation of modern arrow functions and const declarations, whereas targets: {} defaults to the modern baseline.
-
gemContrat d'échantillonruby · linux/x64faraday-net_http@3.4.4
On croitall Net::HTTP timeout conditions including connection open timeouts raise Faraday::TimeoutError
Mesuréassert Net::OpenTimeout raises Faraday::ConnectionFailed rather than Faraday::TimeoutError
-
gemContrat d'échantillonruby · linux/x64faraday@2.14.3
On croitPassing a nil parameter value in a Faraday query hash omits the key from the serialized URL or encodes it with an empty string equals sign, while parsing a valueless query flag always returns nil across all encoders.
MesuréFaraday::NestedParamsEncoder and Faraday::FlatParamsEncoder serialize a nil value as a valueless query key without an equals sign rather than omitting it or appending an equals sign, while FlatParamsEncoder decodes valueless query keys as the boolean true rather than nil.
-
npmContrat d'échantillonnode · linux/x64@babel/preset-env@8.0.2
On croitTranspiling object rest destructuring and object spread with @babel/preset-env preserves accessor descriptors like getters and copies inherited prototype properties onto the resulting object.
MesuréTranspiling object rest destructuring and object spread with @babel/preset-env evaluates getters into plain data properties, drops inherited prototype properties and non-enumerable properties, but preserves own enumerable Symbol keys.
-
gemContrat d'échantillonruby · linux/x64zeitwerk@2.8.3
On croitZeitwerk autovivifies a namespace module for every subdirectory in a managed root directory, treating empty folders and non-Ruby asset directories as constant namespaces.
Mesuréassert empty directories and directories containing only non-Ruby assets or hidden dotfiles do not autovivify namespace modules and raise NameError on constant access rather than resolving to Module instances
-
gemContrat d'échantillonruby · linux/x64faraday@2.14.3
On croitFaraday::NestedParamsEncoder.decode raises Faraday::ParsingError when query parameters conflict, and client timeouts inherit from Faraday::ClientError rather than Faraday::ServerError.
MesuréFaraday::NestedParamsEncoder.decode raises Ruby core TypeError instead of Faraday::ParsingError when a scalar parameter precedes a nested key, but silently overwrites and returns the scalar when the nested key comes first.
-
gemContrat d'échantillonruby · linux/x64zeitwerk@2.8.3
On croitDefining a non-module object in an explicit namespace file raises Ruby's standard TypeError on nested constant access or Zeitwerk::NameError during autoloading.
Mesuréassert assigning a non-module object in an explicit namespace file immediately raises Zeitwerk::Error from const_added during autoload, escaping rescue NameError and rescue TypeError
-
npmContrat d'échantillonnode · linux/x64@babel/core@8.0.1
On croitDynamic import expressions are parsed as CallExpression AST nodes with an Import callee property.
MesuréparseSync parses dynamic import('./mod') as an ImportExpression node with a source property rather than a CallExpression with callee Import
-
gemContrat d'échantillonruby · linux/x64sorbet-runtime@0.6.13426
On croitA `checked(:never)` method in a class with duplicate `method_added` hooks still incurs wrapper allocations on every call.
MesuréA method annotated with `sig { returns(Integer).checked(:never) }` after a duplicated `method_added` chain runs with 1 allocation on first call and 0 on second call.
-
gemContrat d'échantillonruby · linux/x64sorbet-runtime@0.6.13427
On croitA sig block failing on first invocation can be retried once its dependencies resolve, sig binds to the next lexically defined method across threads, and re-entering a method during sig evaluation executes the underlying method body.
MesuréRetrying a method whose lazy sig block previously raised an exception fails with RuntimeError: 'A previous invocation... raised, and the current one succeeded' rather than recovering when the sig block now succeeds.
-
gemContrat d'échantillonruby · linux/x64sorbet-runtime@0.6.13427
On croitInitializing a T::Struct with an undeclared attribute is silently ignored at runtime
MesuréInitializing a T::Struct with an unknown attribute raises ArgumentError
-
gemContrat d'échantillonruby · linux/x64sorbet-runtime@0.6.13427
On croitT::Struct.from_hash rejects unknown payload keys by default with an error, matching T::Struct.new constructor validation.
Mesuréassert from_hash! and from_hash with strict: true raise RuntimeError when unknown keys are provided
-
gemContrat d'échantillonruby · linux/x64sorbet-runtime@0.6.13427
On croitA method signed with T::Array[Integer] raises TypeError at the call site when the caller passes an array whose elements are not Integers, because the annotation explicitly names the element type.
MesuréCalling a sig-annotated method with T::Array[Integer] and an array of strings does not raise TypeError; the runtime erases the Integer type parameter and accepts any Array without inspecting its elements.
-
gemContrat d'échantillonruby · linux/x64sorbet-runtime@0.6.13427
On croitSetting T::Configuration.default_checked_level = :never anywhere before application code runs disables runtime type checking globally, even if class definitions have already been loaded.
MesuréCalling T::Configuration.default_checked_level= after any sig-annotated method has been invoked raises RuntimeError with 'Set the default checked level earlier', because sorbet-runtime evaluates sig blocks lazily on first call — meaning class loading alone does not trigger evaluation, but one call does.
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.