CodeSampleX

网络测出了什么

下面每一行都是测量结果,不是观点。每一条都链接到一个已发布的样本,其 contract 在断网的固定容器中执行,你可以自己重跑并反驳结论。

操作系统和运行时来自所链接样本记录的环境;缺少该维度的条目会在筛选时排除。

597 条发现,覆盖 8 个生态。

样本自述,其契约实测

正在显示已发布样本测得的第 276–300 条(共 568 条)。

  1. gem样本契约ruby · linux/x64sorbet-runtime@0.6.13427

    普遍认为A method marked with `sig(:final)` is always rejected when a class overrides it through include.

    实测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.

  2. gem样本契约ruby · linux/x64sorbet-runtime@0.6.13427

    普遍认为A model that believes `T.must` rejects all falsey values would expect `false` to raise and never be returned.

    实测Calling `T.must(false)` returns `false`, proving `T.must` only rejects nil, while calling `T.must(nil)` fails.

  3. gem样本契约ruby · linux/x64sorbet-runtime@0.6.13427

    普遍认为JSON.dump on a T::Enum instance raises NoMethodError instead of serializing it

    实测JSON.dump(Color::RED) returns the JSON string "red" using the enum's serialized value.

  4. gem样本契约ruby · linux/x64sinatra@4.2.1

    普遍认为Sinatra automatically removes uploaded file temporary files after the request completes

    实测A multipart upload sent with an allowed localhost Host reaches the Sinatra route, and the received tempfile still exists after the request returns.

  5. gem样本契约ruby · linux/x64set@1.1.1

    普遍认为Changing an object's #hash after adding it to a Set updates its position in the Set automatically

    实测After an element's hash changes, Set#include? returns false while Set#delete? returns nil and the stale entry still counts toward Set#size.

  6. gem样本契约ruby · linux/x64set@1.1.1

    普遍认为Set[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.

    实测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

  7. gem样本契约ruby · linux/x64set@1.1.1

    普遍认为Calling `Set#intersect?` with a scalar will simply return `false`.

    实测Set#intersect?(4) raises `ArgumentError` with message `value must be enumerable`, so invalid scalar input fails instead of returning a boolean.

  8. gem样本契约ruby · linux/x64set@1.1.1

    普遍认为Set#merge accepts only a single enumerable argument at a time, requiring chained or sequential merge calls to combine multiple collections.

    实测Set#merge accepts multiple enumerable arguments in a single invocation, mutating the receiver in place with elements from all passed collections and returning self.

  9. gem样本契约ruby · linux/x64set@1.1.1

    普遍认为Preloading `sorted_set` via `RUBYOPT=-rsorted_set` is a valid way to get deprecated set behavior on this Ruby stream.

    实测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`.

  10. gem样本契约ruby · linux/x64rack-test@2.2.0

    普遍认为A `Rack::Test::UploadedFile` sent through `post` is cleaned up by rack-test, so its backing tempfile is automatically closed when the request finishes.

    实测After a successful multipart `post`, the uploaded tempfile used by `Rack::Test::UploadedFile` remains open.

  11. gem样本契约ruby · linux/x64set@1.1.1

    普遍认为Passing 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.

    实测assert Set.new with a block transforms each element before insertion rather than filtering elements, inserting the boolean return values

  12. gem样本契约ruby · linux/x64rack-test@2.2.0

    普遍认为Passing a Hash payload to Rack::Test request methods with a JSON Content-Type header automatically serializes the body as JSON.

    实测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

  13. gem样本契约ruby · linux/x64rack-test@2.2.0

    普遍认为Calling set_cookie with a secure attribute on a session stores the cookie in the jar for HTTPS requests and accepts a URI string.

    实测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

  14. gem样本契约ruby · linux/x64rack-protection@4.2.1

    普遍认为Protection middleware short-circuits the request pipeline before the inner app runs, so an app behind JsonCsrf only executes when the request is allowed

    实测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

  15. gem样本契约ruby · linux/x64rack-protection@4.2.1

    普遍认为Rack::Protection::HostAuthorization rejects requests with a bare single-label Host header

    实测A direct Rack::Protection::HostAuthorization middleware returns status 200 for a bare single-label Host header when no permitted_hosts restriction is configured.

  16. gem样本契约ruby · linux/x64rack-protection@4.2.1

    普遍认为Developers should expect `Rack::Protection::AuthenticityToken.token(session)` to produce a route-specific token by default.

    实测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.

  17. gem样本契约ruby · linux/x64rack-protection@4.2.1

    普遍认为A 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.

    实测A cross-origin JSON GET with an untrusted Origin returns 200 because JsonCsrf defers to HttpOrigin while HttpOrigin treats GET as safe

  18. gem样本契约ruby · linux/x64json@2.9.1

    普遍认为JSON.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.

    实测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

  19. gem样本契约ruby · linux/x64json@2.9.1

    普遍认为JSON.parse validates all escaped Unicode surrogate sequences identically by rejecting any unpaired surrogate with a ParserError.

    实测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

  20. gem样本契约ruby · linux/x64json@2.9.1

    普遍认为Passing 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.

    实测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

  21. gem样本契约ruby · linux/x64json@2.9.1

    普遍认为JSON.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.

    实测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

  22. gem样本契约ruby · linux/x64json@2.9.1

    普遍认为JSON.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.

    实测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

  23. gem样本契约ruby · linux/x64json@2.9.1

    普遍认为JSON.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.

    实测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

  24. gem样本契约ruby · linux/x64faraday-net_http@3.4.4

    普遍认为Setting 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.

    实测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.

  25. gem样本契约ruby · linux/x64faraday-net_http@3.4.4

    普遍认为Passing 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.

    实测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.

如何核对这里的任何一行

打开样本,读它的 contract,然后运行。contract 就是该样本自己的测试:它在断网的固定容器中运行,那次运行的签名回执才是网络所存储的东西。这里没有一条依赖我们对某个库的理解,只依赖这个库实际做了什么。

有些已发布的样例不在这个页面上。它们的契约通过了,样例也是活的 —— 但契约里没有一行能当句子读。像 expect(x).toBe(1) 这样的断言,放在它所检验的那个认知旁边,对读者什么也没说。与其登出没人能读的证据,不如空着。