CodeSampleX

网络测出了什么

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

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

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

样本自述,其契约实测

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

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

    普遍认为T::Enum instances compare equal to their serialized string or symbol values, and from_serialized returns nil for unmatched strings instead of raising KeyError.

    实测assert T::Enum instances are not equal to strings or symbols, and that passing a raw string to a T::Enum parameter raises TypeError

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

    普遍认为An empty PATH_INFO is treated as a normal non-match and should fail with a 404 instead of entering `get('/')`.

    实测assert a request with PATH_INFO '' receives status 200 from GET / and returns the same body as PATH_INFO '/'

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

    普遍认为Sinatra::IndifferentHash.new({"role" => "admin"}) produces a populated hash where the string and symbol keys both resolve to "admin", matching the same pattern that worked in Sinatra 3

    实测Sinatra::IndifferentHash.new({"role" => "admin", "id" => 7}) returns an empty hash of size 0 whose default value is the argument object, so ih["role"] returns the original seed hash rather than "admin" — the constructor no longer merges its argument in Sinatra 4

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

    普遍认为A competent developer expects bare query flags `?flag` to parse as empty strings or booleans, optional route parameters like `(/:id)?` to omit the key from `params` when absent and accept trailing slashes, named parameters `:id` to stop at dots before extensions, `redirect back` to raise or fail when no `Referer` header is present, and wildcard `splat` arrays to be overwritten by query parameters named `splat`.

    实测assert an omitted optional route parameter in (/:id)? populates params[:id] as nil with params.key?('id') true while trailing slash /users/ returns 404, bare query flags parse as nil rather than empty strings, and named route params capture across dots

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

    普遍认为Each overlapping request to the same Sinatra app instance is isolated from in-flight request mutations.

    实测Two in-flight calls to the same Sinatra app can share one class-level state slot, so the first call can observe the second call’s write before it returns.

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

    普遍认为Calling pass inside a matched route handler discards intermediate modifications to the HTTP status code, response headers, cookies, and request params before dispatching to subsequent matching routes.

    实测Calling pass retains any HTTP status code, response headers, cookies, and params mutations made by the passed route rather than resetting the response state for the fallback handler.

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

    普遍认为Calling halt with a status integer and headers hash sets the HTTP response status code and headers with an empty body.

    实测assert halt with status code and hash assigns the hash to the response body and leaves headers unset

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

    普遍认为Configuring settings with Sinatra's set method replaces existing Hash configurations, stores Proc and lambda values as callable objects on the settings object, and passes form HTTP verb overrides through to DELETE and PUT route handlers by default.

    实测Sinatra::Base.set merges new Hash options into previous Hash settings rather than overwriting them, and evaluates Proc or lambda settings on every property access rather than returning the callable object.

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

    普遍认为A Ruby developer would expect `Set#^` to return a plain `Set` regardless of subclass, so subclass-only behavior hooks are irrelevant.

    实测assert Set#^ returns an object of the left operand's subclass when both operands are `Set` subclasses

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

    普遍认为Set#divide with a 2-arity predicate block partitions elements by directly evaluating the block on every pair and grouping each matching pair together, so Set[1,2,3,4].divide { |a,b| (a-b).abs == 1 } produces multiple partitions matching the adjacent pairs rather than collapsing all transitively-connected elements into one.

    实测Set[1,2,3,4].divide { |a,b| (a-b).abs == 1 } returns a single partition containing all four elements rather than multiple pairwise groups, because the 2-arity form performs a transitive-closure (union-find) over all pairs, merging 1-2, 2-3, and 3-4 into one equivalence class

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

    普遍认为A developer can mutate a `Set` from another task or nested call while iterating it and still get a consistent final result.

    实测Mutating the shared `Set` from another thread while `each` is running must raise `RuntimeError` with `can't add a new key into hash during iteration`.

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

    普遍认为Once `Set#compare_by_identity` is enabled, a later `Set#replace` keeps identity semantics so membership for value-equal values still requires object identity.

    实测assert that calling `replace` with a default-set changes `compare_by_identity?` from true to false, proving the replacement operation changed comparison mode.

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

    普遍认为Calling to_set on an existing Set produces a new Set instance for safe mutation, and calling to_set on a Set subclass preserves the receiver subclass.

    实测assert Set#to_set with default arguments returns self instead of a new duplicate set, so mutating the result modifies the original set in-place

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

    普遍认为Calling the spaceship operator <=> or relational comparison operators (<, <=, >, >=) on Sets performs a total ordering comparison based on size or element values so arrays of sets can be sorted, and comparison methods accept any Enumerable.

    实测assert Set#<=> returns nil when neither set is a subset of the other rather than ordering by size or elements, causing Array#sort across disjoint sets to raise ArgumentError

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

    普遍认为A `Set-Cookie` header using `Path=/admin` is treated as unrecognized path metadata and should fall back to the request path, so the cookie applies broadly.

    实测assert last_response.body on /public does not include sid=abc123

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

    普遍认为Rack::Test::Methods exports a METHODS constant of HTTP verbs, standalone session setup requires requiring rack/mock_session, and query parameters cannot be supplied separately from request body params in non-GET requests via env.

    实测assert Rack::Test::Methods::METHODS is undefined raising NameError, requiring rack/mock_session raises LoadError with Rack::MockSession aliased to Session, and :query_params in env appends to the URI query string separately from request body payloads

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

    普遍认为Reentrant requests dispatched on a Rack::Test::Session preserve last_request and last_response correspondence for the completing outer request.

    实测assert reentrant requests dispatched during app execution overwrite last_request with the inner request while last_response reflects the outer response

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

    普遍认为Calling header with a header name already starting with HTTP_ sets the Rack environment key directly, and follow_redirect! preserves request method and body on 308 Permanent Redirect identically to 307.

    实测Rack::Test::Session#header unconditionally prepends HTTP_ to all header names other than CONTENT_TYPE and CONTENT_LENGTH, mangling HTTP_AUTHORIZATION into HTTP_HTTP_AUTHORIZATION, while follow_redirect! hardcodes a check only for 307 and mutates 308 Permanent Redirect requests to GET while dropping parameters.

  19. npm样本契约node · linux/x64happy-dom@20.11.2

    普遍认为Passing an HTML string to new Window(html) initializes the document markup, or instantiating new DOMParser() parses HTML strings into a DOM tree.

    实测new Window(html) ignores string arguments because the constructor expects an options object, leaving document.body.innerHTML empty and getElementById returning null.

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

    普遍认为Calling restore_state restores all session modifications including headers configured via header or env, and non-GET request verbs like DELETE append parameter hashes to the URI query string.

    实测assert restore_state rolls back last_request, last_response, and cookie_jar but leaves mutated session headers in @env to leak into subsequent requests, while non-GET methods encode params into the request body rather than the query string

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

    普遍认为Rack::Test::UploadedFile automatically infers the MIME content type from the file extension when the content_type argument is omitted.

    实测Rack::Test::UploadedFile.new with an image file path returns 'text/plain' for content_type rather than 'image/png' when the argument is omitted, because UploadedFile defaults content_type to 'text/plain' without inspecting the filename extension.

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

    普遍认为Rack::Test::Methods operates exclusively on a single shared session state, so testing multi-user interactions requires manually creating unmanaged Session instances to avoid leaking cookies and headers.

    实测assert with_session switches the active session context with isolated cookies and headers, restoring the prior session upon block exit

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

    普遍认为A `Set-Cookie` flag named `Secure` is treated as case-sensitive in rack-test, so uppercase `Secure` behaves like an unknown token and is ignored.

    实测A `Set-Cookie` header containing `Secure` in camel case is honored as a secure attribute, so the cookie is not sent on a plain HTTP follow-up request.

  24. gem样本契约ruby · linux/x64rack-protection@4.0.0

    普遍认为Security middleware in Rack::Protection sets response security headers with mixed-case names like `X-XSS-Protection` and `X-Content-Type-Options`.

    实测When `text/html` responses pass through XSSHeader, both lowercase keys must be present with values `1; mode=block` and `nosniff`.

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

    普遍认为Initializing Rack::Protection with default options includes session hijacking defense that clears the session when a client user-agent header changes.

    实测Rack::Protection.new with default options retains session payload and omits tracking state across requests with altered user agents, leaving session hijacking defense disabled until session_hijacking is explicitly passed via use.

如何核对这里的任何一行

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

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