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
501–525 sur 568, mesurés par des échantillons publiés.
-
npmContrat d'échantillonnode · linux/x64@babel/core@8.0.1
On croitTargeting an environment with known JavaScript engine bugs forces preset-env to downlevel the surrounding modern ES2015+ syntax categories down to ES5 helper functions.
Mesurépreset-env targeting Safari 14 preserves native ES2015 destructuring syntax and parameter defaults while surgically renaming only the colliding parameter identifier to avoid JavaScriptCore scope shadowing bugs
-
npmContrat d'échantillonnode · linux/x64@babel/preset-env@7.29.7
On croitLeaving useBuiltIns unset in @babel/preset-env automatically injects polyfills for unsupported ECMAScript standard library methods across configured target environments when corejs is configured or core-js is imported.
MesuréWhen useBuiltIns is unset, @babel/preset-env defaults to false and leaves standard library methods un-polyfilled without injecting any core-js imports, even when targets lack support or corejs is specified.
-
npmContrat d'échantillonnode · linux/x64@babel/preset-env@8.0.2
On croitIn Babel presets, legacy configuration options like loose, spec, bugfixes, and useBuiltIns remain accepted as valid options, and isPluginRequired continues to be exported as a helper function.
MesuréPassing loose, spec, bugfixes, or useBuiltIns to @babel/preset-env in major version 8 throws descriptive removal errors rather than accepting legacy configuration options or polyfill strategies.
-
composerContrat d'échantillonphp · linux/x64symfony/console@8.1.4
On croitSubclassing Command with a static getDefaultName method automatically defines the command name on instantiation, and closures assigned via setCode may omit explicit integer return values.
MesuréCommand subclasses defining static getDefaultName() have a null name in Symfony Console 8 because getDefaultName() was removed in favor of #[AsCommand], and Application::addCommand() throws LogicException for empty names.
-
npmContrat d'échantillonnode · linux/x64@rollup/plugin-commonjs@29.0.3
On croitWhen bundling CommonJS modules that conditionally require Node built-ins into ESM, @rollup/plugin-commonjs preserves lazy evaluation inside functions without hoisting static imports to the module top level.
MesuréBy default, @rollup/plugin-commonjs hoists conditional require('node:fs') calls to top-level ESM static imports, eagerly loading built-in modules on startup rather than preserving lazy CommonJS evaluation.
-
npmContrat d'échantillonnode · linux/x64@rollup/plugin-commonjs@28.0.9
On croitBy default @rollup/plugin-commonjs transforms require expressions into bundled module imports in any file processed by Rollup.
Mesuréassert requireReturnsDefault defaults to false, returning an augmented namespace object with __esModule marker rather than unwrapping default export directly when CJS requires ESM
-
gemContrat d'échantillonruby · linux/x64csv@3.3.2
On croitA good model expects CSV to inherit its default `row_sep` from `$INPUT_RECORD_SEPARATOR` whenever `row_sep` is not passed.
Mesuréassert that setting `$INPUT_RECORD_SEPARATOR` to "|" and calling `CSV.new("a,b")` yields `row_sep == "\n"`
-
gemContrat d'échantillonruby · linux/x64csv@3.3.2
On croitThe CSV :numeric and :integer converters parse numeric string values using base-10 decimal representation.
MesuréCSV.parse_line with converters: :numeric parses leading-zero strings like 012 as octal integer 10, whereas strings with non-octal digits like 008 fall through to float 8.0 rather than parsing as decimal integers or strings
-
gemContrat d'échantillonruby · linux/x64csv@3.3.2
On croitCSV.parse treats an input IO stream as caller-managed and leaves it open after parsing, while CSV.open and CSV.foreach automatically release underlying file handles.
MesuréCSV.parse(io) without a block permanently closes the caller-provided IO or StringIO stream upon completion, whereas CSV.parse(io) with a block leaves the stream open
-
gemContrat d'échantillonruby · linux/x64csv@3.3.2
On croitCalling CSV.instance twice with the same source should create independent parser state that starts from the beginning each time.
MesuréCSV.instance caches one parser per source object and option set, so the second call with the same source reuses the first parser's cursor instead of starting over.
-
gemContrat d'échantillonruby · linux/x64csv@3.3.2
On croitPassing converters: :numeric parses numeric strings with leading zeros as decimal numbers or preserves them consistently as strings.
MesuréCSV.parse_line with converters: :numeric parses leading-zero strings with octal digits 0-7 as octal integers while strings containing 8 or 9 fall back to floats, mutating 0123 into 83 and 0890 into 890.0 across a round trip
-
gemContrat d'échantillonruby · linux/x64csv@3.3.2
On croitCSV::InvalidEncodingError inherits from Ruby core's EncodingError, and liberal_parsing: true suppresses unclosed quote errors.
MesuréCSV::InvalidEncodingError inherits from CSV::MalformedCSVError and RuntimeError rather than EncodingError, so rescue EncodingError fails to catch byte sequence errors during parsing.
-
gemContrat d'échantillonruby · linux/x64csv@3.3.2
On croitCSV.parse returns empty strings for unquoted empty fields between delimiters by default.
Mesuréassert parsing unquoted empty fields returns nil rather than empty string when nil_value is left unset
-
gemContrat d'échantillonruby · linux/x64csv@3.3.2
On croitA developer expects duplicated header values to follow normal Ruby Hash last-wins semantics when using CSV row conversion.
MesuréCSV.parse("id,id,name\n1,2,alice\n", headers: true).first.to_h["id"] evaluates to "1", not "2", because CSV::Row#to_h preserves the first duplicate header.
-
cargoContrat d'échantillonrust · linux/x64winnow@1.0.4
On croitCalling `Parser::default_value()` makes a parser yield the default value whenever the wrapped parser fails.
Mesuréassert `alpha1.default_value()` on '123' returns `Err(ErrMode::Backtrack(_))` instead of falling back to `0`
-
npmContrat d'échantillonnode · linux/x64@babel/core@8.0.1
On croitloadPartialConfig({...}) returns a PartialConfig object synchronously, because that is how every Babel 7 example, README snippet, and tool integration calls it; the callback form was always optional.
MesuréCalling loadPartialConfig() without a callback in Babel 8 throws an Error whose message names loadPartialConfigSync as the required synchronous replacement — in Babel 7 the identical call returned a PartialConfig object without throwing.
-
hexContrat d'échantillonelixir · linux/x64nimble_csv@1.3.0
On croitWhen a parser is defined with separator: ["|", ";"], dumping rows that were parsed from semicolon-delimited input will preserve the semicolon separator, because the parser accepted that format.
MesuréParsing semicolon-separated CSV with a multi-separator parser succeeds, but dump_to_iodata emits pipe-separated output — the first separator in the list — not the semicolon the input used, because the dump separator is fixed at compile time by the first list entry.
-
hexContrat d'échantillonelixir · linux/x64nimble_pool@1.1.0
On croitA model expects that starting a lazy pool with lazy: true defers worker module validation until checkout, allowing start_link to return {:ok, pid} even when given an unresolvable worker module or an atom :infinity for pool_size.
MesuréNimblePool.start_link/1 with lazy: true eagerly ensures the worker module is loaded in init/1 and fails pool startup with an ArgumentError when the module is not found.
-
hexContrat d'échantillonelixir · linux/x64ecto@3.12.5
On croitEcto.Multi.run/3 accepts a single-argument callback receiving the accumulated changes map, matching other Multi dynamic callbacks and Ecto 2 conventions.
Mesuréassert Ecto.Multi.run/3 requires a 2-arity function taking repo and changes and raises FunctionClauseError on a 1-arity function, whereas Multi.insert/3 and Multi.merge/2 accept 1-arity functions receiving only changes
-
golangContrat d'échantillongo · linux/x64net/http@go1.26.5
On croitOnce net/http drops Authorization for a cross-domain redirect, the header stays absent for the rest of the chain — but before go1.23.7 / go1.24.1, a same-domain hop immediately following a cross-domain hop silently restores Authorization to the request, leaking the credential to the second domain while the HTTP response stays 200.
MesuréAfter a three-hop redirect chain where the first cross-domain hop strips Authorization, the Authorization header must be absent at the same-domain second hop on serverB — before go1.23.7 / go1.24.1 this assertion fails silently with a 200 response.
-
golangContrat d'échantillongo · linux/x64net/http@v1.26.5
On croitSetting http.Transport.MaxIdleConns to a high value allows all idle connections to a single target host to be pooled when MaxIdleConnsPerHost is left unset.
MesuréLeaving http.Transport.MaxIdleConnsPerHost unset (0) with MaxIdleConns set to 100 retains only 2 idle connections for a host, rejecting the 3rd connection with 'too many idle connections for host'.
-
golangContrat d'échantillongo · linux/x64net/http@go1.22.0
On croitReadHeaderTimeout enforces a deadline on reading the request body
Mesuréthe server handler takes >2s to read the request body despite ReadHeaderTimeout=1s
-
golangContrat d'échantillongo · linux/x64net/http@v1.26.5
On croitCalling resp.Body.Close() — the pattern shown in every tutorial — is sufficient for http.Transport to reclaim and reuse the underlying TCP connection for the next request.
MesuréWhen resp.Body.Close() is called without draining the body first, http.Transport opens a brand-new TCP connection for the very next request to the same host, measured via httptrace.GotConnInfo.Reused being false.
-
golangContrat d'échantillongo · linux/x64net/http@v1.26.5
On croitA second request on the same `http.Client` should proceed after the first `Do` call returns, even if that first response body is never read or closed.
MesuréA second request using the same `http.Client` and `http.Transport{MaxConnsPerHost: 1}` does not complete while the first response body remains open, returning a context timeout instead.
-
golangContrat d'échantillongo · linux/x64net/http@go1.26.5
On croitA setting named `GODEBUG=http2server=0` only affects debug output, so an explicit HTTP/2-only setup should still work.
MesuréAn HTTP/2-only client-server pair should negotiate and return `HTTP/2.0` by default, while the same code with `GODEBUG=http2server=0` must fail because no shared protocol is available.
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.