CodeSampleX

Пример

jest-util 30.4.1: convertDescriptorToString

Проверенный пример — npm jest-util 30.4.1: convertDescriptorToString. Контракт выполнен на node 22 · linux debian/x64 · docker и пройден.

sha256:30c641168fbadfeb872def18e3e1799c662339e637beb30bb778c9bb7c94fbb7

Эта сеть предлагает одно: образец, который собирается. Она запустила его в песочнице и сохранила подписанную квитанцию. Она ничего не оценивает и ничего не гарантирует — собирается ли тот же код у вас, она не измеряла. Сколько различных ключей подписи подали пройденную квитанцию контракта. Один — только автор; больше одного — значит, кто-то ещё тоже собрал. Ключ создаётся сам и не имеет зарегистрированной личности, поэтому считаются ключи, а не люди. MIT-0

Свидетельства выполнения

Заявленное окружение и подписанные запуски разделены, чтобы вы точно видели, что этот образец запускал и где.

Основа свидетельства
Подписанный контракт пройден
Квитанции проверки
1
Ключи подписи, собравшие его
1
Заявленная среда linux 24 · ubuntu · glibc 2.39 x64 npm

Среды запусков проверки

Окружение Контракт Этапы Запуск
node 22 · linux debian/x64 · docker ed25519:c1973797be207ac4 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · node-typescript@1node:22@sha256:8a34c4ab3ea2…
2026-09-06

Кейс

HOW
Цель
verify jest-util.convertDescriptorToString in pkg:npm/jest-util@30.4.1
Пакеты
Символы
  • jest-util.convertDescriptorToString
Создан
2026-09-06T00:29:03Z

Контракт

  1. convertDescriptorToString returns string descriptor as is
  2. convertDescriptorToString converts number descriptor to string representation
  3. convertDescriptorToString converts undefined descriptor to string 'undefined'
  4. convertDescriptorToString extracts function name from named function or ES6 class
  5. convertDescriptorToString throws Error when descriptor is an anonymous function without a name
  6. convertDescriptorToString throws Error when descriptor is null, boolean, object, or bigint
  7. formatTestBlockName helper formats test block names using convertDescriptorToString

Файлы

  • PROMPT.md
  • csx.json
  • index.mjs
  • package-lock.json
  • package.json
  • spec.json
  • test/contract.mjs

Скачать артефакт с исходным кодом (tar.gz)

Исходный код

PROMPT.md
Clean-room public code sample — generation instructions

Write a brand-new, minimal, self-contained code sample in this clean-room directory.
Do not copy, paraphrase, or reference any existing project source. Work only from this spec.

A csx.json manifest scaffold already exists. Do not recreate it from memory. Preserve its case.goal, packages and symbols; fill its empty case.contract with exact assertions and correct its environment, commands and verifierAdapter for the files you generate.

Goal: verify jest-util.convertDescriptorToString in pkg:npm/jest-util@30.4.1
Kind: HOW

Use EXACTLY these public packages and versions:
  - pkg:npm/jest-util@30.4.1
Demonstrate these symbols/APIs:
  - jest-util.convertDescriptorToString

Rules:
  - One focused purpose; the smallest project that proves the goal.
  - Include a contract test (test/contract.*) that runs OFFLINE and exits 0 exactly when the goal behavior works.
  - Pin every dependency with a lockfile so resolution is reproducible.
  - No secrets, credentials, or tokens. No real URLs (only example.com or localhost). No absolute paths.
  - No personal names, emails, company names, or project identifiers of any kind.
  - No binaries and no generated output (node_modules, dist, target, venv, .git, .env).
  - Keep it under 200 files and 256KB packed.
csx.json
{"case":{"caseId":"case:sha256:98f6203eab480b9dba821f09f5d188a9fde593b9a059e759c50f7a9971512736","contract":["convertDescriptorToString returns string descriptor as is","convertDescriptorToString converts number descriptor to string representation","convertDescriptorToString converts undefined descriptor to string 'undefined'","convertDescriptorToString extracts function name from named function or ES6 class","convertDescriptorToString throws Error when descriptor is an anonymous function without a name","convertDescriptorToString throws Error when descriptor is null, boolean, object, or bigint","formatTestBlockName helper formats test block names using convertDescriptorToString"],"goal":"verify jest-util.convertDescriptorToString in pkg:npm/jest-util@30.4.1","kind":"HOW","packages":["pkg:npm/jest-util@30.4.1"],"schemaVersion":1,"symbols":["jest-util.convertDescriptorToString"]},"contractCommand":["node","test/contract.mjs"],"environment":{"arch":"x64","distro":"ubuntu","ecosystem":"npm","libc":"glibc","libcVersion":"2.39","os":"linux","osVersionBucket":"24","packageManager":"npm","schemaVersion":1},"license":"MIT-0","packages":["pkg:npm/jest-util@30.4.1"],"schemaVersion":1,"subject":"pkg:npm/jest-util@30.4.1","symbols":["jest-util.convertDescriptorToString"],"verifierAdapter":"node-typescript@1"}
index.mjs
import { convertDescriptorToString } from 'jest-util';

export { convertDescriptorToString };

/**
 * Formats a descriptor (string, number, named function/class, or undefined)
 * into a test block title.
 *
 * @param {string | number | Function | undefined} descriptor - The descriptor to format.
 * @param {string} [prefix] - Optional prefix for the formatted title.
 * @returns {string} The formatted descriptor string.
 */
export function formatTestBlockName(descriptor, prefix = '') {
  const converted = convertDescriptorToString(descriptor);
  return prefix ? `${prefix}: ${converted}` : converted;
}
package-lock.json
{
  "name": "sample-jest-util-convert-descriptor-to-string",
  "version": "1.0.0",
  "lockfileVersion": 3,
  "requires": true,
  "packages": {
    "": {
      "name": "sample-jest-util-convert-descriptor-to-string",
      "version": "1.0.0",
      "license": "MIT-0",
      "dependencies": {
        "jest-util": "30.4.1"
      }
    },
    "node_modules/@jest/pattern": {
      "version": "30.4.0",
      "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.4.0.tgz",
      "integrity": "sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==",
      "license": "MIT",
      "dependencies": {
        "@types/node": "*",
        "jest-regex-util": "30.4.0"
      },
      "engines": {
        "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
      }
    },
    "node_modules/@jest/schemas": {
      "version": "30.4.1",
      "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz",
      "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==",
      "license": "MIT",
      "dependencies": {
        "@sinclair/typebox": "^0.34.0"
      },
      "engines": {
        "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
      }
    },
    "node_modules/@jest/types": {
      "version": "30.4.1",
      "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.4.1.tgz",
      "integrity": "sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==",
      "license": "MIT",
      "dependencies": {
        "@jest/pattern": "30.4.0",
        "@jest/schemas": "30.4.1",
        "@types/istanbul-lib-coverage": "^2.0.6",
        "@types/istanbul-reports": "^3.0.4",
        "@types/node": "*",
        "@types/yargs": "^17.0.33",
        "chalk": "^4.1.2"
      },
      "engines": {
        "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
      }
    },
    "node_modules/@sinclair/typebox": {
      "version": "0.34.52",
      "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.52.tgz",
      "integrity": "sha512-XiMQh7qqVlxZzcVD+kkGMNGMzcTrDMLWI7S4x7z1MkCkbDPrekpZXEUK0eZqZFMuHQg2a2DZOcDIh9o5v3Gonw==",
      "license": "MIT"
    },
    "node_modules/@types/istanbul-lib-coverage": {
      "version": "2.0.6",
      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
      "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
      "license": "MIT"
    },
    "node_modules/@types/istanbul-lib-report": {
      "version": "3.0.3",
      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
      "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
      "license": "MIT",
      "dependencies": {
        "@types/istanbul-lib-coverage": "*"
      }
    },
    "node_modules/@types/istanbul-reports": {
      "version": "3.0.4",
      "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
      "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
      "license": "MIT",
      "dependencies": {
        "@types/istanbul-lib-report": "*"
      }
    },
    "node_modules/@types/node": {
      "version": "26.4.1",
      "resolved": "https://registry.npmjs.org/@types/node/-/node-26.4.1.tgz",
      "integrity": "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==",
      "license": "MIT",
      "dependencies": {
        "undici-types": "~8.3.0"
      }
    },
    "node_modules/@types/yargs": {
      "version": "17.0.35",
      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz",
      "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==",
      "license": "MIT",
      "dependencies": {
        "@types/yargs-parser": "*"
      }
    },
    "node_modules/@types/yargs-parser": {
      "version": "21.0.3",
      "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
      "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
      "license": "MIT"
    },
    "node_modules/ansi-styles": {
      "version": "4.3.0",
      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
      "license": "MIT",
      "dependencies": {
        "color-convert": "^2.0.1"
      },
      "engines": {
        "node": ">=8"
      },
      "funding": {
        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
      }
    },
    "node_modules/chalk": {
      "version": "4.1.2",
      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
      "license": "MIT",
      "dependencies": {
        "ansi-styles": "^4.1.0",
        "supports-color": "^7.1.0"
      },
      "engines": {
        "node": ">=10"
      },
      "funding": {
        "url": "https://github.com/chalk/chalk?sponsor=1"
      }
    },
    "node_modules/ci-info": {
      "version": "4.4.0",
      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz",
      "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==",
      "funding": [
        {
          "type": "github",
          "url": "https://github.com/sponsors/sibiraj-s"
        }
      ],
      "license": "MIT",
      "engines": {
        "node": ">=8"
      }
    },
    "node_modules/color-convert": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
      "license": "MIT",
      "dependencies": {
        "color-name": "~1.1.4"
      },
      "engines": {
        "node": ">=7.0.0"
      }
    },
    "node_modules/color-name": {
      "version": "1.1.4",
      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
      "license": "MIT"
    },
    "node_modules/graceful-fs": {
      "version": "4.2.11",
      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
      "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
      "license": "ISC"
    },
    "node_modules/has-flag": {
      "version": "4.0.0",
      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
      "license": "MIT",
      "engines": {
        "node": ">=8"
      }
    },
    "node_modules/jest-regex-util": {
      "version": "30.4.0",
      "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.4.0.tgz",
      "integrity": "sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==",
      "license": "MIT",
      "engines": {
        "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
      }
    },
    "node_modules/jest-util": {
      "version": "30.4.1",
      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.4.1.tgz",
      "integrity": "sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==",
      "license": "MIT",
      "dependencies": {
        "@jest/types": "30.4.1",
        "@types/node": "*",
        "chalk": "^4.1.2",
        "ci-info": "^4.2.0",
        "graceful-fs": "^4.2.11",
        "picomatch": "^4.0.3"
      },
      "engines": {
        "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
      }
    },
    "node_modules/picomatch": {
      "version": "4.0.7",
      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",
      "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==",
      "license": "MIT",
      "engines": {
        "node": ">=12"
      },
      "funding": {
        "url": "https://github.com/sponsors/jonschlinkert"
      }
    },
    "node_modules/supports-color": {
      "version": "7.2.0",
      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
      "license": "MIT",
      "dependencies": {
        "has-flag": "^4.0.0"
      },
      "engines": {
        "node": ">=8"
      }
    },
    "node_modules/undici-types": {
      "version": "8.3.0",
      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz",
      "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==",
      "license": "MIT"
    }
  }
}
package.json
{
  "name": "sample-jest-util-convert-descriptor-to-string",
  "version": "1.0.0",
  "description": "Clean-room verification sample for jest-util.convertDescriptorToString",
  "license": "MIT-0",
  "type": "module",
  "main": "index.mjs",
  "scripts": {
    "test": "node test/contract.mjs"
  },
  "dependencies": {
    "jest-util": "30.4.1"
  }
}
spec.json
{
  "schemaVersion": 1,
  "goal": "verify jest-util.convertDescriptorToString in pkg:npm/jest-util@30.4.1",
  "kind": "HOW",
  "packages": [
    "pkg:npm/jest-util@30.4.1"
  ],
  "symbols": [
    "jest-util.convertDescriptorToString"
  ]
}
test/contract.mjs
import assert from 'node:assert/strict';
import { convertDescriptorToString } from 'jest-util';
import { formatTestBlockName } from '../index.mjs';

// 1. convertDescriptorToString returns string descriptor as is
{
  assert.equal(
    convertDescriptorToString('user authentication service'),
    'user authentication service',
    'String descriptor should be returned unchanged'
  );
  assert.equal(
    convertDescriptorToString(''),
    '',
    'Empty string descriptor should be returned unchanged'
  );
}

// 2. convertDescriptorToString converts number descriptor to string representation
{
  assert.equal(
    convertDescriptorToString(42),
    '42',
    'Positive integer descriptor should be stringified'
  );
  assert.equal(
    convertDescriptorToString(0),
    '0',
    'Zero number descriptor should be stringified'
  );
  assert.equal(
    convertDescriptorToString(-10.5),
    '-10.5',
    'Negative decimal descriptor should be stringified'
  );
  assert.equal(
    convertDescriptorToString(NaN),
    'NaN',
    'NaN descriptor should be stringified'
  );
}

// 3. convertDescriptorToString converts undefined descriptor to string 'undefined'
{
  assert.equal(
    convertDescriptorToString(undefined),
    'undefined',
    'Explicit undefined descriptor should return "undefined"'
  );
  assert.equal(
    convertDescriptorToString(),
    'undefined',
    'Implicit undefined (missing argument) should return "undefined"'
  );
}

// 4. convertDescriptorToString extracts function name from named function or ES6 class
{
  function testSuiteHandler() {}
  class AuthenticationController {}
  const arrowHandler = () => {};

  assert.equal(
    convertDescriptorToString(testSuiteHandler),
    'testSuiteHandler',
    'Named function descriptor should return function name'
  );
  assert.equal(
    convertDescriptorToString(AuthenticationController),
    'AuthenticationController',
    'Named ES6 class descriptor should return class name'
  );
  assert.equal(
    convertDescriptorToString(arrowHandler),
    'arrowHandler',
    'Named arrow function descriptor should return identifier name'
  );

  const customNamed = () => {};
  Object.defineProperty(customNamed, 'name', { value: 'customSuiteName' });
  assert.equal(
    convertDescriptorToString(customNamed),
    'customSuiteName',
    'Function with custom name property should return that name'
  );
}

// 5. convertDescriptorToString throws Error when descriptor is an anonymous function without a name
{
  const anonymousFn = (function () {
    return function () {};
  })();
  Object.defineProperty(anonymousFn, 'name', { value: '' });

  assert.throws(
    () => convertDescriptorToString(anonymousFn),
    {
      name: 'Error',
      message: 'Invalid first argument, function () {}. It must be a named class, named function, number, or string.',
    },
    'Anonymous function with empty name property should throw Error'
  );
}

// 6. convertDescriptorToString throws Error when descriptor is null, boolean, object, or bigint
{
  const invalidCases = [
    { value: null, expectedMsg: 'Invalid first argument, null. It must be a named class, named function, number, or string.' },
    { value: true, expectedMsg: 'Invalid first argument, true. It must be a named class, named function, number, or string.' },
    { value: false, expectedMsg: 'Invalid first argument, false. It must be a named class, named function, number, or string.' },
    { value: {}, expectedMsg: 'Invalid first argument, [object Object]. It must be a named class, named function, number, or string.' },
    { value: [1, 2], expectedMsg: 'Invalid first argument, 1,2. It must be a named class, named function, number, or string.' },
    { value: 123n, expectedMsg: 'Invalid first argument, 123. It must be a named class, named function, number, or string.' },
  ];

  for (const { value, expectedMsg } of invalidCases) {
    assert.throws(
      () => convertDescriptorToString(value),
      {
        name: 'Error',
        message: expectedMsg,
      },
      `Descriptor ${String(value)} should throw invalid first argument Error`
    );
  }
}

// 7. formatTestBlockName helper formats test block names using convertDescriptorToString
{
  assert.equal(
    formatTestBlockName('Data Parser'),
    'Data Parser',
    'Helper should format string descriptor without prefix'
  );
  assert.equal(
    formatTestBlockName(100, 'Test ID'),
    'Test ID: 100',
    'Helper should format number descriptor with prefix'
  );
  class UserService {}
  assert.equal(
    formatTestBlockName(UserService, 'Suite'),
    'Suite: UserService',
    'Helper should format class descriptor with prefix'
  );
}

console.log('All jest-util.convertDescriptorToString contract assertions passed successfully.');

Исходный сидер

аноним