网络测出了什么
下面每一行都是测量结果,不是观点。每一条都链接到一个已发布的样本,其 contract 在断网的固定容器中执行,你可以自己重跑并反驳结论。
操作系统和运行时来自所链接样本记录的环境;缺少该维度的条目会在筛选时排除。
597 条发现,覆盖 8 个生态。
- cargo
- composer
- gem
- golang
- hex
- npm
- pub
- pypi
样本自述,其契约实测
正在显示已发布样本测得的第 326–350 条(共 568 条)。
-
pub样本契约dart · linux/x64equatable@2.1.0
普遍认为A class extending Equatable automatically formats its fields in toString() output by iterating over its overridden props.
实测if (User('alice').toString() != 'User') throw 'toString defaults to just the class name, not the formatted props';
-
pub样本契约dart · linux/x64equatable@2.1.0
普遍认为Extending Equatable automatically includes instance properties in toString() output without requiring explicit configuration or debug assert flags.
实测Calling toString() on an Equatable instance without explicit stringify overrides returns only the runtimeType string 'DefaultItem' rather than 'DefaultItem(a, 42)' when assertions are not enabled.
-
pub样本契约dart · linux/x64equatable@2.0.8
普遍认为Equatable evaluates two instances holding maps with different keys as non-equal even if all values in those maps are null.
实测Comparing Equatable objects containing maps with disjoint keys like {'keyA': null} and {'keyB': null} evaluates to false because missing keys are checked with containsKey rather than resolving to null.
-
pub样本契约dart · linux/x64crypto@3.0.6
普遍认为Passing integers outside 0..255 to Hash.convert raises an ArgumentError or RangeError on invalid byte values.
实测sha256.convert([256, -1, 300]) raises no error and silently masks each integer to 8 bits, returning the exact same digest as sha256.convert([0, 255, 44]) rather than throwing an ArgumentError
-
pub样本契约dart · linux/x64collection@1.19.1
普遍认为binarySearch returns the index of the first occurrence of the target element in the sorted list.
实测if (binarySearch(list, 2) != 3) throw 'binarySearch returns an arbitrary match (3) rather than the first occurrence (1)';
-
pub样本契约dart · linux/x64crypto@3.0.7
普遍认为A Digest constructed from a byte list is immutable and copies the backing list to prevent modification of its hash representation, and comparing two digests' bytes directly via the == operator checks for value equality.
实测assert that a Digest constructed with a mutable List holds that list by reference, so modifying the list externally alters the Digest's bytes, its hex string representation, and its hash code
-
pub样本契约dart · linux/x64collection@1.19.0
普遍认为Calling removeAll on a PriorityQueue empties the queue and returns all elements sorted in priority order.
实测PriorityQueue.removeAll empties the queue and returns elements in unsorted internal binary heap storage order (yielding [5, 20, 10, 40, 50, 30] for elements [40, 10, 30, 20, 50, 5]) rather than priority order [5, 10, 20, 30, 40, 50], which requires repeatedly calling removeFirst.
-
pub样本契约dart · linux/x64collection@1.18.0
普遍认为Slicing a ListSlice of a ListSlice returns a sub-slice with elements offset by the sum of both slice start indices.
实测Slicing a ListSlice of a ListSlice yields a sub-slice with the correct offset relative to the parent slice.
-
pub样本契约dart · linux/x64collection@1.19.1
普遍认为A priority queue should return the largest value first when no comparator is supplied.
实测A `PriorityQueue` without a comparator argument is a min-heap, so `removeFirst()` returns 1 before 3 from [3, 1, 5].
-
pub样本契约dart · linux/x64collection@1.19.1
普遍认为Assigning a value to an invalid key on a CanonicalizedMap throws an ArgumentError, and putIfAbsent rejects invalid keys identically.
实测CanonicalizedMap operator []= silently discards assignments for keys rejected by isValidKey without throwing an ArgumentError, leaving map length at 0 and containsKey returning false.
-
pub样本契约dart · linux/x64collection@1.19.1
普遍认为Calling cast on a CanonicalizedMap returns a valid Map wrapper that soundly checks and casts its keys and values for runtime lookups and iterations.
实测Calling cast on a CanonicalizedMap returns a map view that throws a TypeError on value retrieval, because it delegates to the underlying map containing MapEntry elements instead of unpacking them.
-
pub样本契约dart · linux/x64collection@1.19.0
普遍认为Calling `mergeSort` with an explicit supertype, such as `mergeSort<num>`, should be treated as a normal typed call even when the argument is a `List<int>`.
实测`mergeSort<num>` on a `List<int>` completes without throwing and sorts the list in place.
-
pub样本契约dart · linux/x64args@2.6.0
普遍认为When an option expecting a value is immediately followed by a registered flag like --verbose, ArgParser.parse throws an ArgParserException for a missing option value and evaluates --verbose as a flag.
实测ArgParser.parse consumes an immediately following --verbose flag token as the literal string value of an option expecting a value, leaving the flag unparsed and false.
-
pub样本契约dart · linux/x64args@2.4.2
普遍认为Omitting a mandatory option when parsing command line arguments with ArgParser causes parse() to throw an ArgParserException during the parse call.
实测ArgParser.parse() in args 2.4.2 returns an ArgResults instance when a mandatory option is omitted, deferring mandatory validation failure to ArgResults operator [] access where it throws ArgumentError instead of throwing during parse() as in args 2.4.1.
-
pub样本契约dart · linux/x64args@2.7.0
普遍认为Concurrent invocations of CommandRunner.run maintain isolated argResults and globalResults bindings for each command execution across asynchronous await points.
实测Calling CommandRunner.run concurrently while a command is awaiting an asynchronous operation overwrites Command.argResults and Command.globalResults mid-execution with the newly parsed values.
-
pub样本契约dart · linux/x64args@2.7.0
普遍认为A multi-option should keep each argument token as one string unless parsing rules are explicitly changed.
实测ArgParser.addMultiOption splits comma-separated values by default, so passing '--define env=prod,region=us-east' yields ['env=prod', 'region=us-east'] rather than the original single string.
-
pub样本契约dart · linux/x64args@2.7.0
普遍认为ArgResults allows retrieving parsed option and flag values using either their canonical name or any configured alias.
实测ArgResults throws an ArgumentError when queried with an alias name via operator [] or wasParsed(), requiring all lookups to use the canonical option name regardless of how the option was supplied on the command line.
-
pub样本契约dart · linux/x64args@2.7.0
普遍认为ArgParser.parse always throws an ArgParserException when a mandatory option is missing from the arguments.
实测ArgParser.parse does not throw an ArgParserException when a missing mandatory option has no callback, returning a successful ArgResults instead.
-
pub样本契约dart · linux/x64args@2.7.0
普遍认为When allowTrailingOptions is false, option-like arguments after the first positional argument still trigger validation, and the double-dash separator is consumed as a special token.
实测Disabling allowTrailingOptions causes option-like arguments and the double-dash separator after a positional argument to be treated as literal positional arguments in results.rest rather than being parsed or consumed.
-
npm样本契约node · linux/x64vue@3.5.41
普遍认为Reading a nested property from a shallowRef inside watchEffect makes that nested property reactive, so direct nested mutations rerun the effect.
实测assert directly mutating a nested property inside shallowRef does not rerun watchEffect even after the next scheduler tick
-
npm样本契约node · linux/x64react-dom@18.3.1
普遍认为renderToPipeableStream returns a Node.js Readable stream or a Promise resolving to one, while renderToString throws when encountering suspended components
实测renderToPipeableStream returns a synchronous { pipe, abort } controller object that is neither a Readable stream nor a Promise, where pipe(dest) returns the passed writable destination
-
npm样本契约node · linux/x64puppeteer@24.43.1
普遍认为Custom query handlers in Puppeteer can be registered globally via puppeteer.registerCustomQueryHandler with hyphenated or snake_case names.
实测puppeteer.registerCustomQueryHandler is undefined in Puppeteer v24 and custom query handlers must be registered via the named customQueryHandlers export using names matching only [a-zA-Z].
-
npm样本契约node · linux/x64puppeteer@24.2.1
普遍认为A CDPSession continues attempting raw protocol message dispatch when sent a command, even after its underlying connection is marked closed.
实测In puppeteer 24.2.1 compared to 24.2.0, calling send() on a CDPSession whose underlying CDP connection is closed immediately rejects with TargetCloseError.
-
npm样本契约node · linux/x64marked@18.0.0
普遍认为Unlike walkTokens which mutates tokens in-place without a return value, Marked's processAllTokens hook requires returning the modified token list.
实测A processAllTokens hook that mutates tokens in-place without returning them causes Marked.parse to throw a TypeError: Cannot read properties of undefined (reading 'length'), whereas explicitly returning the modified token array permits successful rendering.
-
npm样本契约node · linux/x64marked@18.0.6
普遍认为An ordered list starting with a number other than 1 cannot interrupt a blockquote and is instead parsed as a lazy continuation of the blockquote paragraph, matching standard paragraph interruption rules.
实测An ordered list starting with a number other than 1 that immediately follows a blockquote parses as a sibling ordered list rather than being nested inside the blockquote.
如何核对这里的任何一行
打开样本,读它的 contract,然后运行。contract 就是该样本自己的测试:它在断网的固定容器中运行,那次运行的签名回执才是网络所存储的东西。这里没有一条依赖我们对某个库的理解,只依赖这个库实际做了什么。
有些已发布的样例不在这个页面上。它们的契约通过了,样例也是活的 —— 但契约里没有一行能当句子读。像 expect(x).toBe(1) 这样的断言,放在它所检验的那个认知旁边,对读者什么也没说。与其登出没人能读的证据,不如空着。