网络测出了什么
下面每一行都是测量结果,不是观点。每一条都链接到一个已发布的样本,其 contract 在断网的固定容器中执行,你可以自己重跑并反驳结论。
操作系统和运行时来自所链接样本记录的环境;缺少该维度的条目会在筛选时排除。
597 条发现,覆盖 8 个生态。
- cargo
- composer
- gem
- golang
- hex
- npm
- pub
- pypi
样本自述,其契约实测
正在显示已发布样本测得的第 201–225 条(共 568 条)。
-
npm样本契约node · linux/x64@babel/preset-env@7.29.7
普遍认为a regular expression with named capture groups compiled by Babel will preserve the exact syntactic shape of the pattern in its .source property
实测the .source property of a named capture group regex transpiled for IE11 evaluates to a string stripped of the capture group names, rather than the original source string
-
npm样本契约node · linux/x64@babel/preset-env@8.0.2
普遍认为@babel/preset-env defaults the modules option to commonjs, unconditionally transforming import statements into require calls regardless of caller capabilities.
实测When the modules option is left unset, @babel/preset-env defaults to 'auto' and preserves static import and export declarations unchanged when caller.supportsStaticESM is true, rather than converting them to require calls.
-
npm样本契约node · linux/x64express@4.18.2
普遍认为Leaving the query parser unconfigured in Express parses query string parameters into flat key-value pairs without constructing nested objects.
实测When the `query parser` setting is left unset on an Express application, Express defaults `app.get('query parser')` to `'extended'` and uses `qs` to parse bracketed keys like `filter[status]=active` into nested objects rather than flat string keys.
-
npm样本契约node · linux/x64express@4.21.2
普遍认为res.format directly renders an HTTP 406 response rather than routing a NotAcceptableError to next(), err.types preserves raw format keys like ['html'], and default handlers receive a pre-assigned Content-Type.
实测res.format routes an HTTP 406 NotAcceptableError to next() with canonicalized MIME types in err.types and unconditionally sets Vary: Accept when no registered format matches the Accept header and no default handler is provided
-
npm样本契约node · linux/x64@babel/preset-env@7.24.7
普遍认为Passing useBuiltIns: true enables polyfilling, corejs: 4 configures next-generation core-js polyfills, and modules: 'esm' enables ES module output.
实测Passing useBuiltIns: true throws an Error requiring 'false', 'entry', or 'usage', while passing corejs: 4 with polyfilling throws a RangeError rejecting versions outside core-js@2 and core-js@3.
-
hex样本契约elixir 1 · linux/x64req@0.7.2
普遍认为A nil or empty-list Req header is absent from the internal map, so put_new_header supplies a fallback and get_header distinguishes it from a missing header.
实测assert Req.new retains nil and empty-list header keys with empty-list values while get_header returns [] for both those keys and missing keys
-
hex样本契约elixir 1 · linux/x64req@0.7.2
普遍认为An into: :self response body can be enumerated from another process, and a Collectable receives response bytes for every status code.
实测assert an into: :self body is a Req.Response.Async tied to the requester pid and enumeration in another process raises RuntimeError
-
hex样本契约elixir 1 · linux/x64req@0.7.2
普遍认为Two overlapping Req calls made from one request value each enumerate a shared one-shot body independently and both receive all four chunks.
实测assert two overlapping Req.request! calls consume exactly four chunks in total from the shared Agent-backed stream
-
hex样本契约elixir 1 · linux/x64req@0.7.2
普遍认为Req archive decoders return string-keyed maps, compressed JSON decodes without the compressed option, and normalized header access returns scalar strings.
实测assert decode_body leaves the tested gzip JSON bytes unchanged when compressed is false and decodes them after decompress_body runs with compressed true
-
hex样本契约elixir 1 · linux/x64req@0.7.2
普遍认为Following a 303 after a JSON POST keeps the POST method, encoded body, and content-type on the redirected request.
实测assert the offline adapter first receives POST /start whose body iodata becomes the exact JSON bytes and whose content-type is application/json
-
hex样本契约elixir · linux/x64req@0.7.2
普遍认为Req preserves Authorization headers across cross-origin redirects by default, retains the POST method when following 301 and 302 redirects, and sends no automatic accept-encoding headers unless compressed is requested.
实测assert same-origin redirects preserve Authorization headers while cross-origin redirects to a different host strip them
-
hex样本契约elixir · linux/x64req@0.7.2
普遍认为Passing a malformed adapter to Req.request/2 should return an error tuple from the API boundary when the request is executed.
实测assert RuntimeError is raised when an adapter returns a non-tuple shape instead of {request, response} or {request, exception}; Req.request/2 is used (not a stubbed plugin path).
-
hex样本契约elixir · linux/x64req@0.7.2
普遍认为Merging a leading-slash path into a base_url in Req replaces the base path following RFC 3986, and setting a body on a default request sends a GET request.
实测assert Req.Steps.put_base_url concatenates leading-slash paths to the base_url path instead of replacing it like RFC 3986 URI.merge
-
hex样本契约elixir · linux/x64req@0.7.2
普遍认为Providing `path_params` should replace a URL placeholder like `{id}` even when `path_params_style` is not set.
实测Curly placeholders in the URL are not interpolated by default, so `{id}` stays unreplaced when `path_params_style` is omitted.
-
hex样本契约elixir 1 · linux/x64nimble_options@1.1.1
普遍认为type: nil leaves a NimbleOptions key untyped, the same as omitting :type.
实测assert type: nil accepts nil and rejects tested non-nil values while an omitted type accepts arbitrary terms
-
hex样本契约elixir 1 · linux/x64nimble_options@1.1.1
普遍认为NimbleOptions.new! reports an invalid schema with NimbleOptions.ValidationError, matching value-validation failures.
实测assert NimbleOptions.new! with an unknown type atom raises ArgumentError
-
hex样本契约elixir 1 · linux/x64nimble_options@1.1.1
普遍认为A NimbleOptions custom validator can be an anonymous function that returns a boolean and receives its value after any configured arguments.
实测assert a custom validator uses an MFA 4-tuple, receives the option value first, returns {:ok, transformed} or {:error, message}, and can replace the validated value
-
hex样本契约elixir 1 · linux/x64nimble_csv@1.3.0
普遍认为Passing separator: "\t" to NimbleCSV.RFC4180.parse_string/2 changes that predefined parser's delimiter for the call.
实测assert RFC4180 parse_string with separator: tab and skip_headers: false keeps each tabbed line as one field
-
hex样本契约elixir 1 · linux/x64nimble_csv@1.3.0
普遍认为NimbleCSV.parse_stream reassembles arbitrary byte chunks into complete lines, and the default dumper prefixes spreadsheet formula triggers.
实测assert parsing the arbitrary chunks directly does not yield the complete expected table while RFC4180.to_line_stream reconstructs five complete lines and enables that parse
-
hex样本契约elixir 1 · linux/x64ecto@3.14.1
普遍认为Parameterized types in Ecto schemas are represented as three-element tuples of {:parameterized, module, params}, and casting an Ecto.Enum with mapped values accepts the underlying database representation.
实测assert schema type for an Ecto.Enum is a 2-element tuple {:parameterized, {Ecto.Enum, info}} rather than a 3-element tuple, Ecto.Type.parameterized? identifies it, and Ecto.Type.type returns the underlying primitive storage type
-
hex样本契约elixir · linux/x64ecto@3.14.1
普遍认为A competent developer expects put_assoc/4 to associate child records directly onto any struct or changeset, assuming schema association fields default to empty collections or nil when newly constructed.
实测Calling put_assoc/4 on a loaded struct with unloaded associations raises RuntimeError because uninitialized associations hold an %Ecto.Association.NotLoaded{} struct rather than nil or [], and Ecto.assoc_loaded?/1 returns false.
-
hex样本契约elixir · linux/x64ecto@3.14.1
普遍认为Declaring @primary_key {:id, :binary_id, autogenerate: true} on an Ecto schema sets the default foreign key type for belongs_to associations to :binary_id, allowing UUID string foreign key parameters to be cast without explicit type configuration.
实测assert belongs_to defaults the foreign key field type to :id integer even when @primary_key is configured as :binary_id, causing binary UUID string parameters to fail with a cast validation error
-
hex样本契约elixir · linux/x64ecto@3.14.1
普遍认为A competent Ecto user expects `optimistic_lock/2` to protect updates using the row's current stored `:lock_version`, and that unsafely cast `:lock_version` params cannot influence the value used in the conflict check.
实测When `:lock_version` is not cast, `optimistic_lock/2` keeps the filter at the struct value, but once `:lock_version` is allowed in `cast/3`, `optimistic_lock/2` switches the filter to that user-supplied value, so checks can run against a client-controlled token.
-
hex样本契约elixir 1 · linux/x64ecto@3.14.1
普遍认为cast/4 accepts the underlying database representation for mapped enums, unmapped enums dump as atoms or integers, and load/3 accepts the same string and atom values as cast/4.
实测assert cast accepts declared atom/string keys and mapped database values for Ecto.Enum, normalizing them to the declared atom while rejecting values outside both sets
-
hex样本契约elixir 1 · linux/x64ecto@3.14.1
普遍认为An Ecto query binding list must name every intermediate join, so `[first, ..., last]` cannot select the outer bindings.
实测assert a query with two joins compiles when a follow-up from expression uses the binding list [first, ..., last]
如何核对这里的任何一行
打开样本,读它的 contract,然后运行。contract 就是该样本自己的测试:它在断网的固定容器中运行,那次运行的签名回执才是网络所存储的东西。这里没有一条依赖我们对某个库的理解,只依赖这个库实际做了什么。
有些已发布的样例不在这个页面上。它们的契约通过了,样例也是活的 —— 但契约里没有一行能当句子读。像 expect(x).toBe(1) 这样的断言,放在它所检验的那个认知旁边,对读者什么也没说。与其登出没人能读的证据,不如空着。