@eui/mcp 1.0.3 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +117 -743
- package/dist/config/__tests__/schema.property.test.d.ts +2 -0
- package/dist/config/__tests__/schema.property.test.d.ts.map +1 -0
- package/dist/config/__tests__/schema.property.test.js +203 -0
- package/dist/config/__tests__/schema.property.test.js.map +1 -0
- package/dist/config/__tests__/schema.test.d.ts +2 -0
- package/dist/config/__tests__/schema.test.d.ts.map +1 -0
- package/dist/config/__tests__/schema.test.js +454 -0
- package/dist/config/__tests__/schema.test.js.map +1 -0
- package/dist/config/loader.js +4 -4
- package/dist/config/loader.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/loader/__tests__/cache-manager.property.test.d.ts +2 -0
- package/dist/loader/__tests__/cache-manager.property.test.d.ts.map +1 -0
- package/dist/loader/__tests__/cache-manager.property.test.js +245 -0
- package/dist/loader/__tests__/cache-manager.property.test.js.map +1 -0
- package/dist/loader/__tests__/cache-manager.test.d.ts +2 -0
- package/dist/loader/__tests__/cache-manager.test.d.ts.map +1 -0
- package/dist/loader/__tests__/cache-manager.test.js +256 -0
- package/dist/loader/__tests__/cache-manager.test.js.map +1 -0
- package/dist/loader/__tests__/documentation-loader.integration.test.d.ts +2 -0
- package/dist/loader/__tests__/documentation-loader.integration.test.d.ts.map +1 -0
- package/dist/loader/__tests__/documentation-loader.integration.test.js +498 -0
- package/dist/loader/__tests__/documentation-loader.integration.test.js.map +1 -0
- package/dist/loader/__tests__/documentation-loader.property.test.d.ts +2 -0
- package/dist/loader/__tests__/documentation-loader.property.test.d.ts.map +1 -0
- package/dist/loader/__tests__/documentation-loader.property.test.js +258 -0
- package/dist/loader/__tests__/documentation-loader.property.test.js.map +1 -0
- package/dist/loader/__tests__/errors.test.d.ts +2 -0
- package/dist/loader/__tests__/errors.test.d.ts.map +1 -0
- package/dist/loader/__tests__/errors.test.js +132 -0
- package/dist/loader/__tests__/errors.test.js.map +1 -0
- package/dist/loader/__tests__/http-client.property.test.d.ts +2 -0
- package/dist/loader/__tests__/http-client.property.test.d.ts.map +1 -0
- package/dist/loader/__tests__/http-client.property.test.js +288 -0
- package/dist/loader/__tests__/http-client.property.test.js.map +1 -0
- package/dist/loader/__tests__/http-client.test.d.ts +2 -0
- package/dist/loader/__tests__/http-client.test.d.ts.map +1 -0
- package/dist/loader/__tests__/http-client.test.js +497 -0
- package/dist/loader/__tests__/http-client.test.js.map +1 -0
- package/dist/loader/__tests__/local-documentation-source.property.test.d.ts +2 -0
- package/dist/loader/__tests__/local-documentation-source.property.test.d.ts.map +1 -0
- package/dist/loader/__tests__/local-documentation-source.property.test.js +373 -0
- package/dist/loader/__tests__/local-documentation-source.property.test.js.map +1 -0
- package/dist/loader/__tests__/local-documentation-source.test.d.ts +2 -0
- package/dist/loader/__tests__/local-documentation-source.test.d.ts.map +1 -0
- package/dist/loader/__tests__/local-documentation-source.test.js +544 -0
- package/dist/loader/__tests__/local-documentation-source.test.js.map +1 -0
- package/dist/loader/__tests__/path-type-detector.property.test.d.ts +2 -0
- package/dist/loader/__tests__/path-type-detector.property.test.d.ts.map +1 -0
- package/dist/loader/__tests__/path-type-detector.property.test.js +245 -0
- package/dist/loader/__tests__/path-type-detector.property.test.js.map +1 -0
- package/dist/loader/__tests__/path-type-detector.test.d.ts +2 -0
- package/dist/loader/__tests__/path-type-detector.test.d.ts.map +1 -0
- package/dist/loader/__tests__/path-type-detector.test.js +390 -0
- package/dist/loader/__tests__/path-type-detector.test.js.map +1 -0
- package/dist/loader/__tests__/remote-documentation-source.property.test.d.ts +2 -0
- package/dist/loader/__tests__/remote-documentation-source.property.test.d.ts.map +1 -0
- package/dist/loader/__tests__/remote-documentation-source.property.test.js +462 -0
- package/dist/loader/__tests__/remote-documentation-source.property.test.js.map +1 -0
- package/dist/loader/__tests__/remote-documentation-source.test.d.ts +2 -0
- package/dist/loader/__tests__/remote-documentation-source.test.d.ts.map +1 -0
- package/dist/loader/__tests__/remote-documentation-source.test.js +707 -0
- package/dist/loader/__tests__/remote-documentation-source.test.js.map +1 -0
- package/dist/loader/remote-documentation-source.d.ts +0 -4
- package/dist/loader/remote-documentation-source.d.ts.map +1 -1
- package/dist/loader/remote-documentation-source.js +1 -4
- package/dist/loader/remote-documentation-source.js.map +1 -1
- package/dist/main.js +0 -0
- package/dist/main.js.map +1 -1
- package/dist/mcp/__tests__/server.property.test.d.ts +2 -0
- package/dist/mcp/__tests__/server.property.test.d.ts.map +1 -0
- package/dist/mcp/__tests__/server.property.test.js +286 -0
- package/dist/mcp/__tests__/server.property.test.js.map +1 -0
- package/dist/mcp/__tests__/server.test.d.ts +2 -0
- package/dist/mcp/__tests__/server.test.d.ts.map +1 -0
- package/dist/mcp/__tests__/server.test.js +101 -0
- package/dist/mcp/__tests__/server.test.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +16 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/publish/__tests__/publish-utils.test.d.ts +5 -0
- package/dist/publish/__tests__/publish-utils.test.d.ts.map +1 -0
- package/dist/publish/__tests__/publish-utils.test.js +189 -0
- package/dist/publish/__tests__/publish-utils.test.js.map +1 -0
- package/dist/query/__tests__/deprecation-parser.test.d.ts +2 -0
- package/dist/query/__tests__/deprecation-parser.test.d.ts.map +1 -0
- package/dist/query/__tests__/deprecation-parser.test.js +154 -0
- package/dist/query/__tests__/deprecation-parser.test.js.map +1 -0
- package/dist/query/__tests__/deprecation-query.test.d.ts +2 -0
- package/dist/query/__tests__/deprecation-query.test.d.ts.map +1 -0
- package/dist/query/__tests__/deprecation-query.test.js +199 -0
- package/dist/query/__tests__/deprecation-query.test.js.map +1 -0
- package/dist/query/__tests__/index-builder-debug.test.d.ts +2 -0
- package/dist/query/__tests__/index-builder-debug.test.d.ts.map +1 -0
- package/dist/query/__tests__/index-builder-debug.test.js +34 -0
- package/dist/query/__tests__/index-builder-debug.test.js.map +1 -0
- package/dist/query/__tests__/index-builder.property.test.d.ts +2 -0
- package/dist/query/__tests__/index-builder.property.test.d.ts.map +1 -0
- package/dist/query/__tests__/index-builder.property.test.js +422 -0
- package/dist/query/__tests__/index-builder.property.test.js.map +1 -0
- package/dist/query/__tests__/index-builder.test.d.ts +2 -0
- package/dist/query/__tests__/index-builder.test.d.ts.map +1 -0
- package/dist/query/__tests__/index-builder.test.js +55 -0
- package/dist/query/__tests__/index-builder.test.js.map +1 -0
- package/dist/query/__tests__/result-formatter-deprecation.test.d.ts +2 -0
- package/dist/query/__tests__/result-formatter-deprecation.test.d.ts.map +1 -0
- package/dist/query/__tests__/result-formatter-deprecation.test.js +159 -0
- package/dist/query/__tests__/result-formatter-deprecation.test.js.map +1 -0
- package/dist/query/__tests__/result-formatter.integration.test.d.ts +2 -0
- package/dist/query/__tests__/result-formatter.integration.test.d.ts.map +1 -0
- package/dist/query/__tests__/result-formatter.integration.test.js +140 -0
- package/dist/query/__tests__/result-formatter.integration.test.js.map +1 -0
- package/dist/query/__tests__/result-formatter.property.test.d.ts +2 -0
- package/dist/query/__tests__/result-formatter.property.test.d.ts.map +1 -0
- package/dist/query/__tests__/result-formatter.property.test.js +163 -0
- package/dist/query/__tests__/result-formatter.property.test.js.map +1 -0
- package/dist/query/__tests__/result-formatter.test.d.ts +2 -0
- package/dist/query/__tests__/result-formatter.test.d.ts.map +1 -0
- package/dist/query/__tests__/result-formatter.test.js +85 -0
- package/dist/query/__tests__/result-formatter.test.js.map +1 -0
- package/dist/query/__tests__/search-engine.property.test.d.ts +2 -0
- package/dist/query/__tests__/search-engine.property.test.d.ts.map +1 -0
- package/dist/query/__tests__/search-engine.property.test.js +389 -0
- package/dist/query/__tests__/search-engine.property.test.js.map +1 -0
- package/dist/query/deprecation-parser.d.ts +46 -0
- package/dist/query/deprecation-parser.d.ts.map +1 -0
- package/dist/query/deprecation-parser.js +81 -0
- package/dist/query/deprecation-parser.js.map +1 -0
- package/dist/query/deprecation-query.d.ts +19 -0
- package/dist/query/deprecation-query.d.ts.map +1 -0
- package/dist/query/deprecation-query.js +73 -0
- package/dist/query/deprecation-query.js.map +1 -0
- package/dist/query/result-formatter.d.ts +27 -0
- package/dist/query/result-formatter.d.ts.map +1 -1
- package/dist/query/result-formatter.js +64 -5
- package/dist/query/result-formatter.js.map +1 -1
- package/dist/tools/__tests__/deprecation-tools.test.d.ts +2 -0
- package/dist/tools/__tests__/deprecation-tools.test.d.ts.map +1 -0
- package/dist/tools/__tests__/deprecation-tools.test.js +178 -0
- package/dist/tools/__tests__/deprecation-tools.test.js.map +1 -0
- package/dist/tools/__tests__/get-component-docs.property.test.d.ts +2 -0
- package/dist/tools/__tests__/get-component-docs.property.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-component-docs.property.test.js +594 -0
- package/dist/tools/__tests__/get-component-docs.property.test.js.map +1 -0
- package/dist/tools/__tests__/get-component-docs.test.d.ts +2 -0
- package/dist/tools/__tests__/get-component-docs.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-component-docs.test.js +137 -0
- package/dist/tools/__tests__/get-component-docs.test.js.map +1 -0
- package/dist/tools/__tests__/get-component-examples.property.test.d.ts +2 -0
- package/dist/tools/__tests__/get-component-examples.property.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-component-examples.property.test.js +245 -0
- package/dist/tools/__tests__/get-component-examples.property.test.js.map +1 -0
- package/dist/tools/__tests__/get-component-examples.test.d.ts +2 -0
- package/dist/tools/__tests__/get-component-examples.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-component-examples.test.js +128 -0
- package/dist/tools/__tests__/get-component-examples.test.js.map +1 -0
- package/dist/tools/__tests__/get-component-inputs.property.test.d.ts +2 -0
- package/dist/tools/__tests__/get-component-inputs.property.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-component-inputs.property.test.js +310 -0
- package/dist/tools/__tests__/get-component-inputs.property.test.js.map +1 -0
- package/dist/tools/__tests__/get-component-inputs.test.d.ts +2 -0
- package/dist/tools/__tests__/get-component-inputs.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-component-inputs.test.js +245 -0
- package/dist/tools/__tests__/get-component-inputs.test.js.map +1 -0
- package/dist/tools/__tests__/get-component-outputs.property.test.d.ts +2 -0
- package/dist/tools/__tests__/get-component-outputs.property.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-component-outputs.property.test.js +227 -0
- package/dist/tools/__tests__/get-component-outputs.property.test.js.map +1 -0
- package/dist/tools/__tests__/get-component-outputs.test.d.ts +2 -0
- package/dist/tools/__tests__/get-component-outputs.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-component-outputs.test.js +189 -0
- package/dist/tools/__tests__/get-component-outputs.test.js.map +1 -0
- package/dist/tools/__tests__/get-library-version.property.test.d.ts +2 -0
- package/dist/tools/__tests__/get-library-version.property.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-library-version.property.test.js +115 -0
- package/dist/tools/__tests__/get-library-version.property.test.js.map +1 -0
- package/dist/tools/__tests__/get-library-version.test.d.ts +2 -0
- package/dist/tools/__tests__/get-library-version.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-library-version.test.js +97 -0
- package/dist/tools/__tests__/get-library-version.test.js.map +1 -0
- package/dist/tools/__tests__/list-components.property.test.d.ts +2 -0
- package/dist/tools/__tests__/list-components.property.test.d.ts.map +1 -0
- package/dist/tools/__tests__/list-components.property.test.js +241 -0
- package/dist/tools/__tests__/list-components.property.test.js.map +1 -0
- package/dist/tools/__tests__/list-components.test.d.ts +2 -0
- package/dist/tools/__tests__/list-components.test.d.ts.map +1 -0
- package/dist/tools/__tests__/list-components.test.js +170 -0
- package/dist/tools/__tests__/list-components.test.js.map +1 -0
- package/dist/tools/__tests__/search-components.test.d.ts +2 -0
- package/dist/tools/__tests__/search-components.test.d.ts.map +1 -0
- package/dist/tools/__tests__/search-components.test.js +239 -0
- package/dist/tools/__tests__/search-components.test.js.map +1 -0
- package/dist/tools/get-deprecation-info.d.ts +42 -0
- package/dist/tools/get-deprecation-info.d.ts.map +1 -0
- package/dist/tools/get-deprecation-info.js +55 -0
- package/dist/tools/get-deprecation-info.js.map +1 -0
- package/dist/tools/get-library-version.d.ts +33 -0
- package/dist/tools/get-library-version.d.ts.map +1 -0
- package/dist/tools/get-library-version.js +62 -0
- package/dist/tools/get-library-version.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-deprecated.d.ts +47 -0
- package/dist/tools/list-deprecated.d.ts.map +1 -0
- package/dist/tools/list-deprecated.js +56 -0
- package/dist/tools/list-deprecated.js.map +1 -0
- package/dist/types/compodoc.d.ts +1 -0
- package/dist/types/compodoc.d.ts.map +1 -1
- package/dist/types/deprecation.d.ts +33 -0
- package/dist/types/deprecation.d.ts.map +1 -0
- package/dist/types/deprecation.js +5 -0
- package/dist/types/deprecation.js.map +1 -0
- package/dist/utils/__tests__/credential-masking.property.test.d.ts +2 -0
- package/dist/utils/__tests__/credential-masking.property.test.d.ts.map +1 -0
- package/dist/utils/__tests__/credential-masking.property.test.js +145 -0
- package/dist/utils/__tests__/credential-masking.property.test.js.map +1 -0
- package/dist/utils/__tests__/credential-masking.test.d.ts +2 -0
- package/dist/utils/__tests__/credential-masking.test.d.ts.map +1 -0
- package/dist/utils/__tests__/credential-masking.test.js +188 -0
- package/dist/utils/__tests__/credential-masking.test.js.map +1 -0
- package/dist/utils/__tests__/errors.test.d.ts +2 -0
- package/dist/utils/__tests__/errors.test.d.ts.map +1 -0
- package/dist/utils/__tests__/errors.test.js +110 -0
- package/dist/utils/__tests__/errors.test.js.map +1 -0
- package/dist/utils/__tests__/integration.test.d.ts +2 -0
- package/dist/utils/__tests__/integration.test.d.ts.map +1 -0
- package/dist/utils/__tests__/integration.test.js +142 -0
- package/dist/utils/__tests__/integration.test.js.map +1 -0
- package/dist/utils/__tests__/logger.test.d.ts +2 -0
- package/dist/utils/__tests__/logger.test.d.ts.map +1 -0
- package/dist/utils/__tests__/logger.test.js +119 -0
- package/dist/utils/__tests__/logger.test.js.map +1 -0
- package/dist/utils/__tests__/retry.test.d.ts +2 -0
- package/dist/utils/__tests__/retry.test.d.ts.map +1 -0
- package/dist/utils/__tests__/retry.test.js +84 -0
- package/dist/utils/__tests__/retry.test.js.map +1 -0
- package/dist/utils/credential-masking.js +4 -4
- package/dist/utils/credential-masking.js.map +1 -1
- package/dist/version/__tests__/changelog-commit-grouping.property.test.d.ts +2 -0
- package/dist/version/__tests__/changelog-commit-grouping.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/changelog-commit-grouping.property.test.js +297 -0
- package/dist/version/__tests__/changelog-commit-grouping.property.test.js.map +1 -0
- package/dist/version/__tests__/changelog-commit-parsing.property.test.d.ts +2 -0
- package/dist/version/__tests__/changelog-commit-parsing.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/changelog-commit-parsing.property.test.js +396 -0
- package/dist/version/__tests__/changelog-commit-parsing.property.test.js.map +1 -0
- package/dist/version/__tests__/changelog-file-updates.property.test.d.ts +11 -0
- package/dist/version/__tests__/changelog-file-updates.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/changelog-file-updates.property.test.js +452 -0
- package/dist/version/__tests__/changelog-file-updates.property.test.js.map +1 -0
- package/dist/version/__tests__/dry-run-action.property.test.d.ts +8 -0
- package/dist/version/__tests__/dry-run-action.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/dry-run-action.property.test.js +50 -0
- package/dist/version/__tests__/dry-run-action.property.test.js.map +1 -0
- package/dist/version/__tests__/dry-run-changelog.property.test.d.ts +8 -0
- package/dist/version/__tests__/dry-run-changelog.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/dry-run-changelog.property.test.js +53 -0
- package/dist/version/__tests__/dry-run-changelog.property.test.js.map +1 -0
- package/dist/version/__tests__/dry-run-utils.test.d.ts +7 -0
- package/dist/version/__tests__/dry-run-utils.test.d.ts.map +1 -0
- package/dist/version/__tests__/dry-run-utils.test.js +205 -0
- package/dist/version/__tests__/dry-run-utils.test.js.map +1 -0
- package/dist/version/__tests__/dry-run-version.property.test.d.ts +8 -0
- package/dist/version/__tests__/dry-run-version.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/dry-run-version.property.test.js +59 -0
- package/dist/version/__tests__/dry-run-version.property.test.js.map +1 -0
- package/dist/version/__tests__/git-tag-annotation.property.test.d.ts +11 -0
- package/dist/version/__tests__/git-tag-annotation.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/git-tag-annotation.property.test.js +271 -0
- package/dist/version/__tests__/git-tag-annotation.property.test.js.map +1 -0
- package/dist/version/__tests__/git-tag-format.property.test.d.ts +11 -0
- package/dist/version/__tests__/git-tag-format.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/git-tag-format.property.test.js +411 -0
- package/dist/version/__tests__/git-tag-format.property.test.js.map +1 -0
- package/dist/version/__tests__/git-tag-utils.test.d.ts +2 -0
- package/dist/version/__tests__/git-tag-utils.test.d.ts.map +1 -0
- package/dist/version/__tests__/git-tag-utils.test.js +142 -0
- package/dist/version/__tests__/git-tag-utils.test.js.map +1 -0
- package/dist/version/__tests__/npm-tag-selection.property.test.d.ts +2 -0
- package/dist/version/__tests__/npm-tag-selection.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/npm-tag-selection.property.test.js +79 -0
- package/dist/version/__tests__/npm-tag-selection.property.test.js.map +1 -0
- package/dist/version/__tests__/release-title-format.property.test.d.ts +11 -0
- package/dist/version/__tests__/release-title-format.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/release-title-format.property.test.js +422 -0
- package/dist/version/__tests__/release-title-format.property.test.js.map +1 -0
- package/dist/version/__tests__/release-utils.test.d.ts +7 -0
- package/dist/version/__tests__/release-utils.test.d.ts.map +1 -0
- package/dist/version/__tests__/release-utils.test.js +176 -0
- package/dist/version/__tests__/release-utils.test.js.map +1 -0
- package/dist/version/__tests__/rollback-changelog.property.test.d.ts +8 -0
- package/dist/version/__tests__/rollback-changelog.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/rollback-changelog.property.test.js +61 -0
- package/dist/version/__tests__/rollback-changelog.property.test.js.map +1 -0
- package/dist/version/__tests__/rollback-utils.test.d.ts +7 -0
- package/dist/version/__tests__/rollback-utils.test.d.ts.map +1 -0
- package/dist/version/__tests__/rollback-utils.test.js +74 -0
- package/dist/version/__tests__/rollback-utils.test.js.map +1 -0
- package/dist/version/__tests__/version-manager.property.test.d.ts +2 -0
- package/dist/version/__tests__/version-manager.property.test.d.ts.map +1 -0
- package/dist/version/__tests__/version-manager.property.test.js +143 -0
- package/dist/version/__tests__/version-manager.property.test.js.map +1 -0
- package/dist/version/__tests__/version-manager.test.d.ts +2 -0
- package/dist/version/__tests__/version-manager.test.d.ts.map +1 -0
- package/dist/version/__tests__/version-manager.test.js +203 -0
- package/dist/version/__tests__/version-manager.test.js.map +1 -0
- package/dist/version/version-manager.d.ts.map +1 -1
- package/dist/version/version-manager.js +0 -4
- package/dist/version/version-manager.js.map +1 -1
- package/package.json +1 -1
- package/dist/test-error.ts +0 -1
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property-based tests for conventional commit parsing
|
|
3
|
+
*
|
|
4
|
+
* **Property 9: Conventional Commit Parsing**
|
|
5
|
+
* **Validates: Requirements 7.3**
|
|
6
|
+
*
|
|
7
|
+
* For any commit message following the conventional commit format "type(scope): message",
|
|
8
|
+
* the changelog generator should correctly extract the type, optional scope, and message components.
|
|
9
|
+
*/
|
|
10
|
+
import { describe, it, expect } from '@jest/globals';
|
|
11
|
+
import fc from 'fast-check';
|
|
12
|
+
import { parseConventionalCommit, COMMIT_TYPES, } from '../changelog-utils.js';
|
|
13
|
+
// Arbitrary generators for property-based testing
|
|
14
|
+
/**
|
|
15
|
+
* Generates a valid commit type
|
|
16
|
+
*/
|
|
17
|
+
const commitTypeArb = fc.constantFrom(...COMMIT_TYPES);
|
|
18
|
+
/**
|
|
19
|
+
* Generates a valid scope (alphanumeric with hyphens)
|
|
20
|
+
*/
|
|
21
|
+
const scopeArb = fc.stringMatching(/^[a-z][a-z0-9-]{0,20}$/);
|
|
22
|
+
/**
|
|
23
|
+
* Generates a commit message (non-empty string)
|
|
24
|
+
*/
|
|
25
|
+
const messageArb = fc.string({ minLength: 1, maxLength: 100 }).filter(s => s.trim().length > 0);
|
|
26
|
+
describe('Feature: pipeline-release-support, Property 9: Conventional Commit Parsing', () => {
|
|
27
|
+
describe('Type Extraction', () => {
|
|
28
|
+
/**
|
|
29
|
+
* For any valid commit type and message, parsing should correctly extract the type
|
|
30
|
+
*/
|
|
31
|
+
it('should correctly extract type from commit without scope', () => {
|
|
32
|
+
fc.assert(fc.property(commitTypeArb, messageArb, (type, message) => {
|
|
33
|
+
// Format: type: message
|
|
34
|
+
const commit = `${type}: ${message}`;
|
|
35
|
+
const parsed = parseConventionalCommit(commit);
|
|
36
|
+
// Property: Should successfully parse
|
|
37
|
+
expect(parsed).not.toBeNull();
|
|
38
|
+
// Property: Extracted type should match the input type
|
|
39
|
+
expect(parsed?.type).toBe(type);
|
|
40
|
+
// Property: Scope should be undefined when not provided
|
|
41
|
+
expect(parsed?.scope).toBeUndefined();
|
|
42
|
+
// Property: Message should match the input message
|
|
43
|
+
expect(parsed?.message).toBe(message);
|
|
44
|
+
return true;
|
|
45
|
+
}), { numRuns: 100 });
|
|
46
|
+
});
|
|
47
|
+
/**
|
|
48
|
+
* For any valid commit type with scope and message, parsing should correctly extract the type
|
|
49
|
+
*/
|
|
50
|
+
it('should correctly extract type from commit with scope', () => {
|
|
51
|
+
fc.assert(fc.property(commitTypeArb, scopeArb, messageArb, (type, scope, message) => {
|
|
52
|
+
// Format: type(scope): message
|
|
53
|
+
const commit = `${type}(${scope}): ${message}`;
|
|
54
|
+
const parsed = parseConventionalCommit(commit);
|
|
55
|
+
// Property: Should successfully parse
|
|
56
|
+
expect(parsed).not.toBeNull();
|
|
57
|
+
// Property: Extracted type should match the input type
|
|
58
|
+
expect(parsed?.type).toBe(type);
|
|
59
|
+
return true;
|
|
60
|
+
}), { numRuns: 100 });
|
|
61
|
+
});
|
|
62
|
+
/**
|
|
63
|
+
* Type extraction should be case-sensitive (lowercase only per spec)
|
|
64
|
+
*/
|
|
65
|
+
it('should reject commits with uppercase or mixed-case types', () => {
|
|
66
|
+
fc.assert(fc.property(fc.constantFrom('FEAT', 'Fix', 'Chore', 'DOCS', 'Refactor'), messageArb, (invalidType, message) => {
|
|
67
|
+
const commit = `${invalidType}: ${message}`;
|
|
68
|
+
const parsed = parseConventionalCommit(commit);
|
|
69
|
+
// Property: Should return null for non-lowercase types
|
|
70
|
+
expect(parsed).toBeNull();
|
|
71
|
+
return true;
|
|
72
|
+
}), { numRuns: 100 });
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
describe('Scope Extraction', () => {
|
|
76
|
+
/**
|
|
77
|
+
* For any commit with a scope, parsing should correctly extract the scope
|
|
78
|
+
*/
|
|
79
|
+
it('should correctly extract scope when present', () => {
|
|
80
|
+
fc.assert(fc.property(commitTypeArb, scopeArb, messageArb, (type, scope, message) => {
|
|
81
|
+
// Format: type(scope): message
|
|
82
|
+
const commit = `${type}(${scope}): ${message}`;
|
|
83
|
+
const parsed = parseConventionalCommit(commit);
|
|
84
|
+
// Property: Should successfully parse
|
|
85
|
+
expect(parsed).not.toBeNull();
|
|
86
|
+
// Property: Extracted scope should match the input scope
|
|
87
|
+
expect(parsed?.scope).toBe(scope);
|
|
88
|
+
return true;
|
|
89
|
+
}), { numRuns: 100 });
|
|
90
|
+
});
|
|
91
|
+
/**
|
|
92
|
+
* For any commit without a scope, parsing should set scope to undefined
|
|
93
|
+
*/
|
|
94
|
+
it('should set scope to undefined when not present', () => {
|
|
95
|
+
fc.assert(fc.property(commitTypeArb, messageArb, (type, message) => {
|
|
96
|
+
// Format: type: message (no scope)
|
|
97
|
+
const commit = `${type}: ${message}`;
|
|
98
|
+
const parsed = parseConventionalCommit(commit);
|
|
99
|
+
// Property: Should successfully parse
|
|
100
|
+
expect(parsed).not.toBeNull();
|
|
101
|
+
// Property: Scope should be undefined
|
|
102
|
+
expect(parsed?.scope).toBeUndefined();
|
|
103
|
+
return true;
|
|
104
|
+
}), { numRuns: 100 });
|
|
105
|
+
});
|
|
106
|
+
/**
|
|
107
|
+
* Scope can contain various valid characters
|
|
108
|
+
*/
|
|
109
|
+
it('should handle scopes with hyphens and numbers', () => {
|
|
110
|
+
fc.assert(fc.property(commitTypeArb, fc.constantFrom('api', 'ui-component', 'auth-service', 'v2', 'module-1', 'core-utils'), messageArb, (type, scope, message) => {
|
|
111
|
+
const commit = `${type}(${scope}): ${message}`;
|
|
112
|
+
const parsed = parseConventionalCommit(commit);
|
|
113
|
+
// Property: Should successfully parse
|
|
114
|
+
expect(parsed).not.toBeNull();
|
|
115
|
+
// Property: Scope should be extracted correctly
|
|
116
|
+
expect(parsed?.scope).toBe(scope);
|
|
117
|
+
return true;
|
|
118
|
+
}), { numRuns: 100 });
|
|
119
|
+
});
|
|
120
|
+
/**
|
|
121
|
+
* Empty scope should be rejected
|
|
122
|
+
*/
|
|
123
|
+
it('should reject commits with empty scope', () => {
|
|
124
|
+
fc.assert(fc.property(commitTypeArb, messageArb, (type, message) => {
|
|
125
|
+
// Format: type(): message (empty scope)
|
|
126
|
+
const commit = `${type}(): ${message}`;
|
|
127
|
+
const parsed = parseConventionalCommit(commit);
|
|
128
|
+
// Property: Should return null for empty scope
|
|
129
|
+
expect(parsed).toBeNull();
|
|
130
|
+
return true;
|
|
131
|
+
}), { numRuns: 100 });
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
describe('Message Extraction', () => {
|
|
135
|
+
/**
|
|
136
|
+
* For any valid commit, parsing should correctly extract the message
|
|
137
|
+
*/
|
|
138
|
+
it('should correctly extract message from commit without scope', () => {
|
|
139
|
+
fc.assert(fc.property(commitTypeArb, messageArb, (type, message) => {
|
|
140
|
+
// Format: type: message
|
|
141
|
+
const commit = `${type}: ${message}`;
|
|
142
|
+
const parsed = parseConventionalCommit(commit);
|
|
143
|
+
// Property: Should successfully parse
|
|
144
|
+
expect(parsed).not.toBeNull();
|
|
145
|
+
// Property: Extracted message should match the input message
|
|
146
|
+
expect(parsed?.message).toBe(message);
|
|
147
|
+
return true;
|
|
148
|
+
}), { numRuns: 100 });
|
|
149
|
+
});
|
|
150
|
+
/**
|
|
151
|
+
* For any valid commit with scope, parsing should correctly extract the message
|
|
152
|
+
*/
|
|
153
|
+
it('should correctly extract message from commit with scope', () => {
|
|
154
|
+
fc.assert(fc.property(commitTypeArb, scopeArb, messageArb, (type, scope, message) => {
|
|
155
|
+
// Format: type(scope): message
|
|
156
|
+
const commit = `${type}(${scope}): ${message}`;
|
|
157
|
+
const parsed = parseConventionalCommit(commit);
|
|
158
|
+
// Property: Should successfully parse
|
|
159
|
+
expect(parsed).not.toBeNull();
|
|
160
|
+
// Property: Extracted message should match the input message
|
|
161
|
+
expect(parsed?.message).toBe(message);
|
|
162
|
+
return true;
|
|
163
|
+
}), { numRuns: 100 });
|
|
164
|
+
});
|
|
165
|
+
/**
|
|
166
|
+
* Message can contain special characters and punctuation
|
|
167
|
+
*/
|
|
168
|
+
it('should handle messages with special characters', () => {
|
|
169
|
+
fc.assert(fc.property(commitTypeArb, fc.constantFrom('add support for @mentions', 'fix issue #123', 'update version to 1.2.3', 'remove deprecated API (breaking)', 'add feature: new component', 'fix: nested colons work', 'update [config] settings', 'add {new} syntax support'), (type, message) => {
|
|
170
|
+
const commit = `${type}: ${message}`;
|
|
171
|
+
const parsed = parseConventionalCommit(commit);
|
|
172
|
+
// Property: Should successfully parse
|
|
173
|
+
expect(parsed).not.toBeNull();
|
|
174
|
+
// Property: Message should be preserved exactly
|
|
175
|
+
expect(parsed?.message).toBe(message);
|
|
176
|
+
return true;
|
|
177
|
+
}), { numRuns: 100 });
|
|
178
|
+
});
|
|
179
|
+
/**
|
|
180
|
+
* Message must not be empty
|
|
181
|
+
*/
|
|
182
|
+
it('should reject commits with empty message', () => {
|
|
183
|
+
fc.assert(fc.property(commitTypeArb, (type) => {
|
|
184
|
+
// Format: type: (empty message - just space)
|
|
185
|
+
const commit = `${type}: `;
|
|
186
|
+
const parsed = parseConventionalCommit(commit);
|
|
187
|
+
// Property: Should return null for empty message
|
|
188
|
+
expect(parsed).toBeNull();
|
|
189
|
+
return true;
|
|
190
|
+
}), { numRuns: 100 });
|
|
191
|
+
});
|
|
192
|
+
/**
|
|
193
|
+
* Message can contain multiple words and spaces
|
|
194
|
+
*/
|
|
195
|
+
it('should preserve spaces and multiple words in message', () => {
|
|
196
|
+
fc.assert(fc.property(commitTypeArb, fc.array(fc.string({ minLength: 1, maxLength: 20 }), { minLength: 2, maxLength: 10 })
|
|
197
|
+
.map(words => words.join(' '))
|
|
198
|
+
.filter(s => s.trim().length > 0), (type, message) => {
|
|
199
|
+
const commit = `${type}: ${message}`;
|
|
200
|
+
const parsed = parseConventionalCommit(commit);
|
|
201
|
+
// Property: Should successfully parse
|
|
202
|
+
expect(parsed).not.toBeNull();
|
|
203
|
+
// Property: Message should preserve all spaces
|
|
204
|
+
expect(parsed?.message).toBe(message);
|
|
205
|
+
return true;
|
|
206
|
+
}), { numRuns: 100 });
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
describe('Complete Parsing', () => {
|
|
210
|
+
/**
|
|
211
|
+
* For any valid conventional commit, all components should be extracted correctly
|
|
212
|
+
*/
|
|
213
|
+
it('should extract all components correctly from complete commit', () => {
|
|
214
|
+
fc.assert(fc.property(commitTypeArb, fc.option(scopeArb, { nil: undefined }), messageArb, (type, scope, message) => {
|
|
215
|
+
// Build commit with or without scope
|
|
216
|
+
const scopePart = scope ? `(${scope})` : '';
|
|
217
|
+
const commit = `${type}${scopePart}: ${message}`;
|
|
218
|
+
const parsed = parseConventionalCommit(commit);
|
|
219
|
+
// Property: Should successfully parse
|
|
220
|
+
expect(parsed).not.toBeNull();
|
|
221
|
+
// Property: All components should match
|
|
222
|
+
expect(parsed?.type).toBe(type);
|
|
223
|
+
expect(parsed?.scope).toBe(scope);
|
|
224
|
+
expect(parsed?.message).toBe(message);
|
|
225
|
+
// Property: Raw should preserve original commit
|
|
226
|
+
expect(parsed?.raw).toBe(commit);
|
|
227
|
+
return true;
|
|
228
|
+
}), { numRuns: 100 });
|
|
229
|
+
});
|
|
230
|
+
/**
|
|
231
|
+
* Parsing should handle commits with breaking change marker
|
|
232
|
+
*/
|
|
233
|
+
it('should extract components correctly from commits with breaking change marker', () => {
|
|
234
|
+
fc.assert(fc.property(commitTypeArb, fc.option(scopeArb, { nil: undefined }), messageArb, (type, scope, message) => {
|
|
235
|
+
// Build commit with breaking change marker
|
|
236
|
+
const scopePart = scope ? `(${scope})` : '';
|
|
237
|
+
const commit = `${type}${scopePart}!: ${message}`;
|
|
238
|
+
const parsed = parseConventionalCommit(commit);
|
|
239
|
+
// Property: Should successfully parse
|
|
240
|
+
expect(parsed).not.toBeNull();
|
|
241
|
+
// Property: All components should match (excluding the !)
|
|
242
|
+
expect(parsed?.type).toBe(type);
|
|
243
|
+
expect(parsed?.scope).toBe(scope);
|
|
244
|
+
expect(parsed?.message).toBe(message);
|
|
245
|
+
// Property: Breaking flag should be set
|
|
246
|
+
expect(parsed?.breaking).toBe(true);
|
|
247
|
+
return true;
|
|
248
|
+
}), { numRuns: 100 });
|
|
249
|
+
});
|
|
250
|
+
/**
|
|
251
|
+
* Parsing should handle multi-line commits (with body)
|
|
252
|
+
*/
|
|
253
|
+
it('should extract header components from multi-line commits', () => {
|
|
254
|
+
fc.assert(fc.property(commitTypeArb, fc.option(scopeArb, { nil: undefined }), messageArb, fc.string({ minLength: 10, maxLength: 200 }), (type, scope, message, body) => {
|
|
255
|
+
// Build multi-line commit
|
|
256
|
+
const scopePart = scope ? `(${scope})` : '';
|
|
257
|
+
const commit = `${type}${scopePart}: ${message}\n\n${body}`;
|
|
258
|
+
const parsed = parseConventionalCommit(commit);
|
|
259
|
+
// Property: Should successfully parse
|
|
260
|
+
expect(parsed).not.toBeNull();
|
|
261
|
+
// Property: Header components should be extracted correctly
|
|
262
|
+
expect(parsed?.type).toBe(type);
|
|
263
|
+
expect(parsed?.scope).toBe(scope);
|
|
264
|
+
expect(parsed?.message).toBe(message);
|
|
265
|
+
// Property: Raw should include the full commit
|
|
266
|
+
expect(parsed?.raw).toBe(commit);
|
|
267
|
+
return true;
|
|
268
|
+
}), { numRuns: 100 });
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
describe('Invalid Format Rejection', () => {
|
|
272
|
+
/**
|
|
273
|
+
* Parsing should reject commits that don't follow the format
|
|
274
|
+
*/
|
|
275
|
+
it('should return null for commits missing colon', () => {
|
|
276
|
+
fc.assert(fc.property(commitTypeArb, messageArb, (type, message) => {
|
|
277
|
+
// Missing colon
|
|
278
|
+
const commit = `${type} ${message}`;
|
|
279
|
+
const parsed = parseConventionalCommit(commit);
|
|
280
|
+
// Property: Should return null
|
|
281
|
+
expect(parsed).toBeNull();
|
|
282
|
+
return true;
|
|
283
|
+
}), { numRuns: 100 });
|
|
284
|
+
});
|
|
285
|
+
/**
|
|
286
|
+
* Parsing should reject commits missing space after colon
|
|
287
|
+
*/
|
|
288
|
+
it('should return null for commits missing space after colon', () => {
|
|
289
|
+
fc.assert(fc.property(commitTypeArb,
|
|
290
|
+
// Use a message that doesn't start with space to ensure no space after colon
|
|
291
|
+
fc.string({ minLength: 1, maxLength: 100 }).filter(s => s.length > 0 && s[0] !== ' '), (type, message) => {
|
|
292
|
+
// No space after colon
|
|
293
|
+
const commit = `${type}:${message}`;
|
|
294
|
+
const parsed = parseConventionalCommit(commit);
|
|
295
|
+
// Property: Should return null
|
|
296
|
+
expect(parsed).toBeNull();
|
|
297
|
+
return true;
|
|
298
|
+
}), { numRuns: 100 });
|
|
299
|
+
});
|
|
300
|
+
/**
|
|
301
|
+
* Parsing should reject completely invalid formats
|
|
302
|
+
*/
|
|
303
|
+
it('should return null for non-conventional commit messages', () => {
|
|
304
|
+
const invalidCommits = [
|
|
305
|
+
'just a regular commit message',
|
|
306
|
+
'Fix: capitalized type',
|
|
307
|
+
'feat missing colon',
|
|
308
|
+
'feat:no space after colon',
|
|
309
|
+
'',
|
|
310
|
+
'feat(): empty scope',
|
|
311
|
+
'feat: ',
|
|
312
|
+
'123: numbers as type',
|
|
313
|
+
'feat(scope: missing closing paren',
|
|
314
|
+
'feat)scope(: wrong order',
|
|
315
|
+
];
|
|
316
|
+
invalidCommits.forEach(commit => {
|
|
317
|
+
const parsed = parseConventionalCommit(commit);
|
|
318
|
+
// Property: Should return null for invalid formats
|
|
319
|
+
expect(parsed).toBeNull();
|
|
320
|
+
});
|
|
321
|
+
});
|
|
322
|
+
/**
|
|
323
|
+
* Parsing should handle null and undefined inputs gracefully
|
|
324
|
+
*/
|
|
325
|
+
it('should return null for null or undefined input', () => {
|
|
326
|
+
expect(parseConventionalCommit(null)).toBeNull();
|
|
327
|
+
expect(parseConventionalCommit(undefined)).toBeNull();
|
|
328
|
+
expect(parseConventionalCommit('')).toBeNull();
|
|
329
|
+
});
|
|
330
|
+
});
|
|
331
|
+
describe('Edge Cases', () => {
|
|
332
|
+
/**
|
|
333
|
+
* Parsing should handle very long messages
|
|
334
|
+
*/
|
|
335
|
+
it('should handle very long messages', () => {
|
|
336
|
+
fc.assert(fc.property(commitTypeArb, fc.string({ minLength: 100, maxLength: 500 }).filter(s => s.trim().length > 0), (type, longMessage) => {
|
|
337
|
+
const commit = `${type}: ${longMessage}`;
|
|
338
|
+
const parsed = parseConventionalCommit(commit);
|
|
339
|
+
// Property: Should successfully parse
|
|
340
|
+
expect(parsed).not.toBeNull();
|
|
341
|
+
// Property: Message should be preserved completely
|
|
342
|
+
expect(parsed?.message).toBe(longMessage);
|
|
343
|
+
return true;
|
|
344
|
+
}), { numRuns: 100 });
|
|
345
|
+
});
|
|
346
|
+
/**
|
|
347
|
+
* Parsing should handle messages with leading/trailing spaces
|
|
348
|
+
*/
|
|
349
|
+
it('should preserve leading/trailing spaces in message', () => {
|
|
350
|
+
fc.assert(fc.property(commitTypeArb, fc.string({ minLength: 1, maxLength: 50 }).filter(s => s.trim().length > 0), fc.nat(5), fc.nat(5), (type, message, leadingSpaces, trailingSpaces) => {
|
|
351
|
+
const paddedMessage = ' '.repeat(leadingSpaces) + message + ' '.repeat(trailingSpaces);
|
|
352
|
+
const commit = `${type}: ${paddedMessage}`;
|
|
353
|
+
const parsed = parseConventionalCommit(commit);
|
|
354
|
+
// Property: Should successfully parse
|
|
355
|
+
expect(parsed).not.toBeNull();
|
|
356
|
+
// Property: Message should preserve padding
|
|
357
|
+
expect(parsed?.message).toBe(paddedMessage);
|
|
358
|
+
return true;
|
|
359
|
+
}), { numRuns: 100 });
|
|
360
|
+
});
|
|
361
|
+
/**
|
|
362
|
+
* Parsing should handle scope with various valid characters
|
|
363
|
+
*/
|
|
364
|
+
it('should handle complex but valid scopes', () => {
|
|
365
|
+
fc.assert(fc.property(commitTypeArb, fc.constantFrom('a', 'api-v2', 'ui-component-library', 'auth-service-v3', 'module123', 'core-utils-2024'), messageArb, (type, scope, message) => {
|
|
366
|
+
const commit = `${type}(${scope}): ${message}`;
|
|
367
|
+
const parsed = parseConventionalCommit(commit);
|
|
368
|
+
// Property: Should successfully parse
|
|
369
|
+
expect(parsed).not.toBeNull();
|
|
370
|
+
// Property: Scope should be extracted correctly
|
|
371
|
+
expect(parsed?.scope).toBe(scope);
|
|
372
|
+
return true;
|
|
373
|
+
}), { numRuns: 100 });
|
|
374
|
+
});
|
|
375
|
+
});
|
|
376
|
+
describe('Idempotency', () => {
|
|
377
|
+
/**
|
|
378
|
+
* Parsing the same commit multiple times should produce identical results
|
|
379
|
+
*/
|
|
380
|
+
it('should produce identical results when parsing the same commit multiple times', () => {
|
|
381
|
+
fc.assert(fc.property(commitTypeArb, fc.option(scopeArb, { nil: undefined }), messageArb, (type, scope, message) => {
|
|
382
|
+
const scopePart = scope ? `(${scope})` : '';
|
|
383
|
+
const commit = `${type}${scopePart}: ${message}`;
|
|
384
|
+
// Parse multiple times
|
|
385
|
+
const parsed1 = parseConventionalCommit(commit);
|
|
386
|
+
const parsed2 = parseConventionalCommit(commit);
|
|
387
|
+
const parsed3 = parseConventionalCommit(commit);
|
|
388
|
+
// Property: All results should be identical
|
|
389
|
+
expect(parsed1).toEqual(parsed2);
|
|
390
|
+
expect(parsed2).toEqual(parsed3);
|
|
391
|
+
return true;
|
|
392
|
+
}), { numRuns: 100 });
|
|
393
|
+
});
|
|
394
|
+
});
|
|
395
|
+
});
|
|
396
|
+
//# sourceMappingURL=changelog-commit-parsing.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changelog-commit-parsing.property.test.js","sourceRoot":"","sources":["../../../src/version/__tests__/changelog-commit-parsing.property.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property-based tests for changelog file updates
|
|
3
|
+
*
|
|
4
|
+
* **Property 10: Changelog File Update Idempotence**
|
|
5
|
+
* **Validates: Requirements 7.4, 7.5**
|
|
6
|
+
*
|
|
7
|
+
* For any existing CHANGELOG.md file, adding a new version section should preserve
|
|
8
|
+
* all existing version sections and place the new section at the top.
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=changelog-file-updates.property.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changelog-file-updates.property.test.d.ts","sourceRoot":"","sources":["../../../src/version/__tests__/changelog-file-updates.property.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|