@eui/mcp 1.0.3 → 1.2.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/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,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property-based tests for npm tag selection
|
|
3
|
+
*
|
|
4
|
+
* **Property 11: Environment-Based npm Tag Selection**
|
|
5
|
+
* **Validates: Requirements 10.1, 10.2**
|
|
6
|
+
*
|
|
7
|
+
* For any environment configuration (staging or production), the pipeline
|
|
8
|
+
* should select the correct npm distribution tag: "beta" for staging and
|
|
9
|
+
* "latest" for production.
|
|
10
|
+
*/
|
|
11
|
+
import { describe, it, expect } from '@jest/globals';
|
|
12
|
+
import fc from 'fast-check';
|
|
13
|
+
import { selectNpmTag } from '../version-manager.js';
|
|
14
|
+
describe('Feature: pipeline-release-support, Property 11: Environment-Based npm Tag Selection', () => {
|
|
15
|
+
it('should always return "beta" for staging environment', () => {
|
|
16
|
+
fc.assert(fc.property(fc.constant('staging'), (environment) => {
|
|
17
|
+
const tag = selectNpmTag(environment);
|
|
18
|
+
return tag === 'beta';
|
|
19
|
+
}), { numRuns: 100 });
|
|
20
|
+
});
|
|
21
|
+
it('should always return "latest" for production environment', () => {
|
|
22
|
+
fc.assert(fc.property(fc.constant('production'), (environment) => {
|
|
23
|
+
const tag = selectNpmTag(environment);
|
|
24
|
+
return tag === 'latest';
|
|
25
|
+
}), { numRuns: 100 });
|
|
26
|
+
});
|
|
27
|
+
it('should select correct npm tag for any valid environment', () => {
|
|
28
|
+
fc.assert(fc.property(fc.constantFrom('staging', 'production'), (environment) => {
|
|
29
|
+
const tag = selectNpmTag(environment);
|
|
30
|
+
// Verify the mapping is correct
|
|
31
|
+
if (environment === 'staging') {
|
|
32
|
+
return tag === 'beta';
|
|
33
|
+
}
|
|
34
|
+
else if (environment === 'production') {
|
|
35
|
+
return tag === 'latest';
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}), { numRuns: 100 });
|
|
39
|
+
});
|
|
40
|
+
it('should always return a valid npm tag (beta or latest)', () => {
|
|
41
|
+
fc.assert(fc.property(fc.constantFrom('staging', 'production'), (environment) => {
|
|
42
|
+
const tag = selectNpmTag(environment);
|
|
43
|
+
// Tag must be one of the valid npm tags
|
|
44
|
+
return tag === 'beta' || tag === 'latest';
|
|
45
|
+
}), { numRuns: 100 });
|
|
46
|
+
});
|
|
47
|
+
it('should be deterministic - same environment always produces same tag', () => {
|
|
48
|
+
fc.assert(fc.property(fc.constantFrom('staging', 'production'), (environment) => {
|
|
49
|
+
const tag1 = selectNpmTag(environment);
|
|
50
|
+
const tag2 = selectNpmTag(environment);
|
|
51
|
+
// Multiple calls with same environment should return same tag
|
|
52
|
+
return tag1 === tag2;
|
|
53
|
+
}), { numRuns: 100 });
|
|
54
|
+
});
|
|
55
|
+
it('should produce different tags for different environments', () => {
|
|
56
|
+
const stagingTag = selectNpmTag('staging');
|
|
57
|
+
const productionTag = selectNpmTag('production');
|
|
58
|
+
// Staging and production should use different tags
|
|
59
|
+
expect(stagingTag).not.toBe(productionTag);
|
|
60
|
+
expect(stagingTag).toBe('beta');
|
|
61
|
+
expect(productionTag).toBe('latest');
|
|
62
|
+
});
|
|
63
|
+
it('should maintain the environment-to-tag mapping invariant', () => {
|
|
64
|
+
fc.assert(fc.property(fc.constantFrom('staging', 'production'), (environment) => {
|
|
65
|
+
const tag = selectNpmTag(environment);
|
|
66
|
+
// The mapping must satisfy the requirement:
|
|
67
|
+
// staging → beta, production → latest
|
|
68
|
+
const expectedTag = environment === 'staging' ? 'beta' : 'latest';
|
|
69
|
+
return tag === expectedTag;
|
|
70
|
+
}), { numRuns: 100 });
|
|
71
|
+
});
|
|
72
|
+
it('should never return undefined or null', () => {
|
|
73
|
+
fc.assert(fc.property(fc.constantFrom('staging', 'production'), (environment) => {
|
|
74
|
+
const tag = selectNpmTag(environment);
|
|
75
|
+
return tag !== undefined && tag !== null && typeof tag === 'string';
|
|
76
|
+
}), { numRuns: 100 });
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=npm-tag-selection.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm-tag-selection.property.test.js","sourceRoot":"","sources":["../../../src/version/__tests__/npm-tag-selection.property.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property-based tests for GitLab release title format
|
|
3
|
+
*
|
|
4
|
+
* **Property 6: GitLab Release Title Format**
|
|
5
|
+
* **Validates: Requirements 6.4**
|
|
6
|
+
*
|
|
7
|
+
* For any semantic version number, the generated GitLab release title should follow
|
|
8
|
+
* the format "Release v{MAJOR}.{MINOR}.{PATCH}".
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=release-title-format.property.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-title-format.property.test.d.ts","sourceRoot":"","sources":["../../../src/version/__tests__/release-title-format.property.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property-based tests for GitLab release title format
|
|
3
|
+
*
|
|
4
|
+
* **Property 6: GitLab Release Title Format**
|
|
5
|
+
* **Validates: Requirements 6.4**
|
|
6
|
+
*
|
|
7
|
+
* For any semantic version number, the generated GitLab release title should follow
|
|
8
|
+
* the format "Release v{MAJOR}.{MINOR}.{PATCH}".
|
|
9
|
+
*/
|
|
10
|
+
import { describe, it, expect } from '@jest/globals';
|
|
11
|
+
import fc from 'fast-check';
|
|
12
|
+
import { formatReleaseTitle } from '../release-utils.js';
|
|
13
|
+
// Arbitrary generators for property-based testing
|
|
14
|
+
/**
|
|
15
|
+
* Generates a version string in format "MAJOR.MINOR.PATCH"
|
|
16
|
+
*/
|
|
17
|
+
const versionStringArb = fc.tuple(fc.nat(1000), fc.nat(1000), fc.nat(1000)).map(([major, minor, patch]) => `${major}.${minor}.${patch}`);
|
|
18
|
+
/**
|
|
19
|
+
* Generates a version string with 'v' prefix in format "vMAJOR.MINOR.PATCH"
|
|
20
|
+
*/
|
|
21
|
+
const tagNameArb = fc.tuple(fc.nat(1000), fc.nat(1000), fc.nat(1000)).map(([major, minor, patch]) => `v${major}.${minor}.${patch}`);
|
|
22
|
+
/**
|
|
23
|
+
* Validates that a release title follows the format "Release v{MAJOR}.{MINOR}.{PATCH}"
|
|
24
|
+
* where each component is a non-negative integer
|
|
25
|
+
*/
|
|
26
|
+
function isValidReleaseTitleFormat(title) {
|
|
27
|
+
// Must start with "Release v"
|
|
28
|
+
if (!title.startsWith('Release v')) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
// Extract version part after "Release v"
|
|
32
|
+
const versionPart = title.slice('Release v'.length);
|
|
33
|
+
const parts = versionPart.split('.');
|
|
34
|
+
// Must have exactly 3 parts
|
|
35
|
+
if (parts.length !== 3) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
// Each part must be a non-negative integer
|
|
39
|
+
for (const part of parts) {
|
|
40
|
+
// Must not be empty
|
|
41
|
+
if (part.length === 0) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
// Must be all digits (non-negative integer)
|
|
45
|
+
if (!/^\d+$/.test(part)) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
// Must be a valid number
|
|
49
|
+
const num = parseInt(part, 10);
|
|
50
|
+
if (isNaN(num) || num < 0) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Extracts version components from a release title
|
|
58
|
+
*/
|
|
59
|
+
function extractVersionComponents(title) {
|
|
60
|
+
if (!title.startsWith('Release v')) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
const versionPart = title.slice('Release v'.length);
|
|
64
|
+
const parts = versionPart.split('.');
|
|
65
|
+
if (parts.length !== 3) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const major = parseInt(parts[0], 10);
|
|
69
|
+
const minor = parseInt(parts[1], 10);
|
|
70
|
+
const patch = parseInt(parts[2], 10);
|
|
71
|
+
if (isNaN(major) || isNaN(minor) || isNaN(patch)) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
return { major, minor, patch };
|
|
75
|
+
}
|
|
76
|
+
describe('Feature: pipeline-release-support, Property 6: GitLab Release Title Format', () => {
|
|
77
|
+
describe('Format Validation', () => {
|
|
78
|
+
/**
|
|
79
|
+
* For any semantic version, the release title should follow the "Release v{MAJOR}.{MINOR}.{PATCH}" format
|
|
80
|
+
*/
|
|
81
|
+
it('should generate release titles in the correct format for any version string', () => {
|
|
82
|
+
fc.assert(fc.property(versionStringArb, (versionString) => {
|
|
83
|
+
const title = formatReleaseTitle(versionString);
|
|
84
|
+
// Property: Title should follow the correct format
|
|
85
|
+
expect(isValidReleaseTitleFormat(title)).toBe(true);
|
|
86
|
+
return true;
|
|
87
|
+
}), { numRuns: 100 });
|
|
88
|
+
});
|
|
89
|
+
/**
|
|
90
|
+
* For any tag name (with v prefix), the release title should follow the correct format
|
|
91
|
+
*/
|
|
92
|
+
it('should generate release titles in the correct format for any tag name', () => {
|
|
93
|
+
fc.assert(fc.property(tagNameArb, (tagName) => {
|
|
94
|
+
const title = formatReleaseTitle(tagName);
|
|
95
|
+
// Property: Title should follow the correct format
|
|
96
|
+
expect(isValidReleaseTitleFormat(title)).toBe(true);
|
|
97
|
+
return true;
|
|
98
|
+
}), { numRuns: 100 });
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
describe('Prefix Requirement', () => {
|
|
102
|
+
/**
|
|
103
|
+
* For any version, the release title should start with "Release v"
|
|
104
|
+
*/
|
|
105
|
+
it('should always start with "Release v" prefix', () => {
|
|
106
|
+
fc.assert(fc.property(versionStringArb, (versionString) => {
|
|
107
|
+
const title = formatReleaseTitle(versionString);
|
|
108
|
+
// Property: Title must start with "Release v"
|
|
109
|
+
expect(title.startsWith('Release v')).toBe(true);
|
|
110
|
+
expect(title.slice(0, 9)).toBe('Release v');
|
|
111
|
+
return true;
|
|
112
|
+
}), { numRuns: 100 });
|
|
113
|
+
});
|
|
114
|
+
/**
|
|
115
|
+
* For any tag name with v prefix, should not duplicate the v in the title
|
|
116
|
+
*/
|
|
117
|
+
it('should not duplicate v prefix when tag already has it', () => {
|
|
118
|
+
fc.assert(fc.property(tagNameArb, (tagName) => {
|
|
119
|
+
const title = formatReleaseTitle(tagName);
|
|
120
|
+
// Property: Should have exactly one 'v' after "Release "
|
|
121
|
+
expect(title.startsWith('Release v')).toBe(true);
|
|
122
|
+
expect(title.startsWith('Release vv')).toBe(false);
|
|
123
|
+
return true;
|
|
124
|
+
}), { numRuns: 100 });
|
|
125
|
+
});
|
|
126
|
+
/**
|
|
127
|
+
* For any version string without v prefix, should add it in the title
|
|
128
|
+
*/
|
|
129
|
+
it('should add v prefix when version string does not have it', () => {
|
|
130
|
+
fc.assert(fc.property(versionStringArb, (versionString) => {
|
|
131
|
+
const title = formatReleaseTitle(versionString);
|
|
132
|
+
// Property: Should have "Release v" prefix
|
|
133
|
+
expect(title.startsWith('Release v')).toBe(true);
|
|
134
|
+
// Property: Should contain the version after "Release v"
|
|
135
|
+
expect(title).toBe(`Release v${versionString}`);
|
|
136
|
+
return true;
|
|
137
|
+
}), { numRuns: 100 });
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
describe('Component Structure', () => {
|
|
141
|
+
/**
|
|
142
|
+
* For any version, the release title should have exactly three numeric components
|
|
143
|
+
*/
|
|
144
|
+
it('should have exactly three numeric components separated by dots', () => {
|
|
145
|
+
fc.assert(fc.property(versionStringArb, (versionString) => {
|
|
146
|
+
const title = formatReleaseTitle(versionString);
|
|
147
|
+
// Extract version part after "Release v"
|
|
148
|
+
const versionPart = title.slice('Release v'.length);
|
|
149
|
+
const parts = versionPart.split('.');
|
|
150
|
+
// Property: Must have exactly 3 parts
|
|
151
|
+
expect(parts.length).toBe(3);
|
|
152
|
+
// Property: Each part must be numeric
|
|
153
|
+
for (const part of parts) {
|
|
154
|
+
expect(/^\d+$/.test(part)).toBe(true);
|
|
155
|
+
}
|
|
156
|
+
return true;
|
|
157
|
+
}), { numRuns: 100 });
|
|
158
|
+
});
|
|
159
|
+
/**
|
|
160
|
+
* For any version, each component should be a non-negative integer
|
|
161
|
+
*/
|
|
162
|
+
it('should have non-negative integer components', () => {
|
|
163
|
+
fc.assert(fc.property(versionStringArb, (versionString) => {
|
|
164
|
+
const title = formatReleaseTitle(versionString);
|
|
165
|
+
const components = extractVersionComponents(title);
|
|
166
|
+
// Property: Components should be extractable
|
|
167
|
+
expect(components).not.toBeNull();
|
|
168
|
+
// Property: Each component should be non-negative
|
|
169
|
+
expect(components.major).toBeGreaterThanOrEqual(0);
|
|
170
|
+
expect(components.minor).toBeGreaterThanOrEqual(0);
|
|
171
|
+
expect(components.patch).toBeGreaterThanOrEqual(0);
|
|
172
|
+
// Property: Each component should be an integer
|
|
173
|
+
expect(Number.isInteger(components.major)).toBe(true);
|
|
174
|
+
expect(Number.isInteger(components.minor)).toBe(true);
|
|
175
|
+
expect(Number.isInteger(components.patch)).toBe(true);
|
|
176
|
+
return true;
|
|
177
|
+
}), { numRuns: 100 });
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
describe('Version Preservation', () => {
|
|
181
|
+
/**
|
|
182
|
+
* For any version string, the title should preserve the exact version numbers
|
|
183
|
+
*/
|
|
184
|
+
it('should preserve the exact version numbers in the title', () => {
|
|
185
|
+
fc.assert(fc.property(fc.tuple(fc.nat(1000), fc.nat(1000), fc.nat(1000)), ([major, minor, patch]) => {
|
|
186
|
+
const versionString = `${major}.${minor}.${patch}`;
|
|
187
|
+
const title = formatReleaseTitle(versionString);
|
|
188
|
+
const components = extractVersionComponents(title);
|
|
189
|
+
// Property: Components should match the input version
|
|
190
|
+
expect(components).not.toBeNull();
|
|
191
|
+
expect(components.major).toBe(major);
|
|
192
|
+
expect(components.minor).toBe(minor);
|
|
193
|
+
expect(components.patch).toBe(patch);
|
|
194
|
+
return true;
|
|
195
|
+
}), { numRuns: 100 });
|
|
196
|
+
});
|
|
197
|
+
/**
|
|
198
|
+
* For any tag name, the title should preserve the exact version numbers
|
|
199
|
+
*/
|
|
200
|
+
it('should preserve the exact version numbers from tag name', () => {
|
|
201
|
+
fc.assert(fc.property(fc.tuple(fc.nat(1000), fc.nat(1000), fc.nat(1000)), ([major, minor, patch]) => {
|
|
202
|
+
const tagName = `v${major}.${minor}.${patch}`;
|
|
203
|
+
const title = formatReleaseTitle(tagName);
|
|
204
|
+
const components = extractVersionComponents(title);
|
|
205
|
+
// Property: Components should match the input version
|
|
206
|
+
expect(components).not.toBeNull();
|
|
207
|
+
expect(components.major).toBe(major);
|
|
208
|
+
expect(components.minor).toBe(minor);
|
|
209
|
+
expect(components.patch).toBe(patch);
|
|
210
|
+
return true;
|
|
211
|
+
}), { numRuns: 100 });
|
|
212
|
+
});
|
|
213
|
+
/**
|
|
214
|
+
* For any version, the title should be reconstructible to the original version
|
|
215
|
+
*/
|
|
216
|
+
it('should allow reconstruction of the original version from the title', () => {
|
|
217
|
+
fc.assert(fc.property(fc.tuple(fc.nat(1000), fc.nat(1000), fc.nat(1000)), ([major, minor, patch]) => {
|
|
218
|
+
const versionString = `${major}.${minor}.${patch}`;
|
|
219
|
+
const title = formatReleaseTitle(versionString);
|
|
220
|
+
// Property: Should be able to reconstruct the version
|
|
221
|
+
const reconstructed = title.slice('Release v'.length);
|
|
222
|
+
expect(reconstructed).toBe(versionString);
|
|
223
|
+
return true;
|
|
224
|
+
}), { numRuns: 100 });
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
describe('Edge Cases', () => {
|
|
228
|
+
/**
|
|
229
|
+
* For version 0.0.0, the title should be "Release v0.0.0"
|
|
230
|
+
*/
|
|
231
|
+
it('should handle version 0.0.0 correctly', () => {
|
|
232
|
+
const title = formatReleaseTitle('0.0.0');
|
|
233
|
+
// Property: Should follow the format
|
|
234
|
+
expect(isValidReleaseTitleFormat(title)).toBe(true);
|
|
235
|
+
expect(title).toBe('Release v0.0.0');
|
|
236
|
+
});
|
|
237
|
+
/**
|
|
238
|
+
* For any version with zero components, the title should still be valid
|
|
239
|
+
*/
|
|
240
|
+
it('should handle versions with zero components', () => {
|
|
241
|
+
fc.assert(fc.property(fc.tuple(fc.constantFrom(0), fc.nat(100), fc.nat(100)), ([major, minor, patch]) => {
|
|
242
|
+
const versionString = `${major}.${minor}.${patch}`;
|
|
243
|
+
const title = formatReleaseTitle(versionString);
|
|
244
|
+
// Property: Should follow the format
|
|
245
|
+
expect(isValidReleaseTitleFormat(title)).toBe(true);
|
|
246
|
+
// Property: Should preserve the zero
|
|
247
|
+
expect(title.startsWith('Release v0.')).toBe(true);
|
|
248
|
+
return true;
|
|
249
|
+
}), { numRuns: 100 });
|
|
250
|
+
});
|
|
251
|
+
/**
|
|
252
|
+
* For large version numbers, the title should still be valid
|
|
253
|
+
*/
|
|
254
|
+
it('should handle large version numbers', () => {
|
|
255
|
+
fc.assert(fc.property(fc.tuple(fc.integer({ min: 1000, max: 999999 }), fc.integer({ min: 1000, max: 999999 }), fc.integer({ min: 1000, max: 999999 })), ([major, minor, patch]) => {
|
|
256
|
+
const versionString = `${major}.${minor}.${patch}`;
|
|
257
|
+
const title = formatReleaseTitle(versionString);
|
|
258
|
+
// Property: Should follow the format
|
|
259
|
+
expect(isValidReleaseTitleFormat(title)).toBe(true);
|
|
260
|
+
// Property: Should preserve large numbers
|
|
261
|
+
const components = extractVersionComponents(title);
|
|
262
|
+
expect(components.major).toBe(major);
|
|
263
|
+
expect(components.minor).toBe(minor);
|
|
264
|
+
expect(components.patch).toBe(patch);
|
|
265
|
+
return true;
|
|
266
|
+
}), { numRuns: 100 });
|
|
267
|
+
});
|
|
268
|
+
/**
|
|
269
|
+
* For single-digit components, the title should not add leading zeros
|
|
270
|
+
*/
|
|
271
|
+
it('should not add leading zeros to single-digit components', () => {
|
|
272
|
+
fc.assert(fc.property(fc.tuple(fc.integer({ min: 0, max: 9 }), fc.integer({ min: 0, max: 9 }), fc.integer({ min: 0, max: 9 })), ([major, minor, patch]) => {
|
|
273
|
+
const versionString = `${major}.${minor}.${patch}`;
|
|
274
|
+
const title = formatReleaseTitle(versionString);
|
|
275
|
+
// Property: Should not have leading zeros
|
|
276
|
+
const versionPart = title.slice('Release v'.length);
|
|
277
|
+
const parts = versionPart.split('.');
|
|
278
|
+
for (let i = 0; i < parts.length; i++) {
|
|
279
|
+
const part = parts[i];
|
|
280
|
+
const value = [major, minor, patch][i];
|
|
281
|
+
// If value is 0, part should be "0", not "00" or "000"
|
|
282
|
+
// If value is non-zero, part should not start with "0"
|
|
283
|
+
if (value === 0) {
|
|
284
|
+
expect(part).toBe('0');
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
expect(part).toBe(value.toString());
|
|
288
|
+
expect(part.startsWith('0')).toBe(false);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return true;
|
|
292
|
+
}), { numRuns: 100 });
|
|
293
|
+
});
|
|
294
|
+
});
|
|
295
|
+
describe('Format Consistency', () => {
|
|
296
|
+
/**
|
|
297
|
+
* For any version, the title format should be consistent across multiple calls
|
|
298
|
+
*/
|
|
299
|
+
it('should produce consistent format across multiple calls', () => {
|
|
300
|
+
fc.assert(fc.property(versionStringArb, (versionString) => {
|
|
301
|
+
const title1 = formatReleaseTitle(versionString);
|
|
302
|
+
const title2 = formatReleaseTitle(versionString);
|
|
303
|
+
const title3 = formatReleaseTitle(versionString);
|
|
304
|
+
// Property: Multiple calls should produce identical results
|
|
305
|
+
expect(title1).toBe(title2);
|
|
306
|
+
expect(title2).toBe(title3);
|
|
307
|
+
return true;
|
|
308
|
+
}), { numRuns: 100 });
|
|
309
|
+
});
|
|
310
|
+
/**
|
|
311
|
+
* For any version, both input formats (with and without v) should produce the same title
|
|
312
|
+
*/
|
|
313
|
+
it('should produce same title from version string and tag name', () => {
|
|
314
|
+
fc.assert(fc.property(fc.tuple(fc.nat(1000), fc.nat(1000), fc.nat(1000)), ([major, minor, patch]) => {
|
|
315
|
+
const versionString = `${major}.${minor}.${patch}`;
|
|
316
|
+
const tagName = `v${major}.${minor}.${patch}`;
|
|
317
|
+
const titleFromVersion = formatReleaseTitle(versionString);
|
|
318
|
+
const titleFromTag = formatReleaseTitle(tagName);
|
|
319
|
+
// Property: Both input formats should produce identical titles
|
|
320
|
+
expect(titleFromVersion).toBe(titleFromTag);
|
|
321
|
+
return true;
|
|
322
|
+
}), { numRuns: 100 });
|
|
323
|
+
});
|
|
324
|
+
});
|
|
325
|
+
describe('No Extra Characters', () => {
|
|
326
|
+
/**
|
|
327
|
+
* For any version, the title should not contain extra characters
|
|
328
|
+
*/
|
|
329
|
+
it('should not contain any extra characters beyond the format', () => {
|
|
330
|
+
fc.assert(fc.property(versionStringArb, (versionString) => {
|
|
331
|
+
const title = formatReleaseTitle(versionString);
|
|
332
|
+
// Property: Should match the exact format with no extras
|
|
333
|
+
const expectedPattern = /^Release v\d+\.\d+\.\d+$/;
|
|
334
|
+
expect(title).toMatch(expectedPattern);
|
|
335
|
+
// Property: Should not contain extra spaces, hyphens, or other characters
|
|
336
|
+
expect(title.split(' ').length).toBe(2); // Only "Release" and "v{version}"
|
|
337
|
+
expect(title).not.toContain('-');
|
|
338
|
+
expect(title).not.toContain('_');
|
|
339
|
+
expect(title).not.toContain('+');
|
|
340
|
+
expect(title).not.toContain('\n');
|
|
341
|
+
expect(title).not.toContain('\t');
|
|
342
|
+
return true;
|
|
343
|
+
}), { numRuns: 100 });
|
|
344
|
+
});
|
|
345
|
+
/**
|
|
346
|
+
* For any version, the title should have the exact expected length
|
|
347
|
+
*/
|
|
348
|
+
it('should have the expected length based on component digits', () => {
|
|
349
|
+
fc.assert(fc.property(fc.tuple(fc.nat(1000), fc.nat(1000), fc.nat(1000)), ([major, minor, patch]) => {
|
|
350
|
+
const versionString = `${major}.${minor}.${patch}`;
|
|
351
|
+
const title = formatReleaseTitle(versionString);
|
|
352
|
+
// Calculate expected length: "Release v" + digits + 2 dots
|
|
353
|
+
const majorDigits = major.toString().length;
|
|
354
|
+
const minorDigits = minor.toString().length;
|
|
355
|
+
const patchDigits = patch.toString().length;
|
|
356
|
+
const expectedLength = 'Release v'.length + majorDigits + 1 + minorDigits + 1 + patchDigits;
|
|
357
|
+
// Property: Length should match expected
|
|
358
|
+
expect(title.length).toBe(expectedLength);
|
|
359
|
+
return true;
|
|
360
|
+
}), { numRuns: 100 });
|
|
361
|
+
});
|
|
362
|
+
});
|
|
363
|
+
describe('Regex Pattern Matching', () => {
|
|
364
|
+
/**
|
|
365
|
+
* For any version, the title should match the standard release title pattern
|
|
366
|
+
*/
|
|
367
|
+
it('should match the standard release title pattern', () => {
|
|
368
|
+
fc.assert(fc.property(versionStringArb, (versionString) => {
|
|
369
|
+
const title = formatReleaseTitle(versionString);
|
|
370
|
+
// Property: Should match the release title pattern
|
|
371
|
+
const releaseTitlePattern = /^Release v\d+\.\d+\.\d+$/;
|
|
372
|
+
expect(title).toMatch(releaseTitlePattern);
|
|
373
|
+
return true;
|
|
374
|
+
}), { numRuns: 100 });
|
|
375
|
+
});
|
|
376
|
+
/**
|
|
377
|
+
* For any tag name, the title should match the standard release title pattern
|
|
378
|
+
*/
|
|
379
|
+
it('should match the standard release title pattern for tag names', () => {
|
|
380
|
+
fc.assert(fc.property(tagNameArb, (tagName) => {
|
|
381
|
+
const title = formatReleaseTitle(tagName);
|
|
382
|
+
// Property: Should match the release title pattern
|
|
383
|
+
const releaseTitlePattern = /^Release v\d+\.\d+\.\d+$/;
|
|
384
|
+
expect(title).toMatch(releaseTitlePattern);
|
|
385
|
+
return true;
|
|
386
|
+
}), { numRuns: 100 });
|
|
387
|
+
});
|
|
388
|
+
});
|
|
389
|
+
describe('Requirement Validation', () => {
|
|
390
|
+
/**
|
|
391
|
+
* Validates Requirement 6.4: Release title should contain version number
|
|
392
|
+
*/
|
|
393
|
+
it('should mark the release with the version number as the title (Requirement 6.4)', () => {
|
|
394
|
+
fc.assert(fc.property(fc.tuple(fc.nat(1000), fc.nat(1000), fc.nat(1000)), ([major, minor, patch]) => {
|
|
395
|
+
const versionString = `${major}.${minor}.${patch}`;
|
|
396
|
+
const title = formatReleaseTitle(versionString);
|
|
397
|
+
// Property: Title must contain the version number
|
|
398
|
+
expect(title).toContain(versionString);
|
|
399
|
+
// Property: Title must be in the format "Release v{version}"
|
|
400
|
+
expect(title).toBe(`Release v${versionString}`);
|
|
401
|
+
return true;
|
|
402
|
+
}), { numRuns: 100 });
|
|
403
|
+
});
|
|
404
|
+
/**
|
|
405
|
+
* Validates that the title format is suitable for GitLab releases
|
|
406
|
+
*/
|
|
407
|
+
it('should produce titles suitable for GitLab release API', () => {
|
|
408
|
+
fc.assert(fc.property(versionStringArb, (versionString) => {
|
|
409
|
+
const title = formatReleaseTitle(versionString);
|
|
410
|
+
// Property: Title should be a non-empty string
|
|
411
|
+
expect(title.length).toBeGreaterThan(0);
|
|
412
|
+
// Property: Title should be human-readable
|
|
413
|
+
expect(title.startsWith('Release')).toBe(true);
|
|
414
|
+
// Property: Title should contain version information
|
|
415
|
+
expect(title).toContain('v');
|
|
416
|
+
expect(title).toContain('.');
|
|
417
|
+
return true;
|
|
418
|
+
}), { numRuns: 100 });
|
|
419
|
+
});
|
|
420
|
+
});
|
|
421
|
+
});
|
|
422
|
+
//# sourceMappingURL=release-title-format.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-title-format.property.test.js","sourceRoot":"","sources":["../../../src/version/__tests__/release-title-format.property.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,kDAAkD;AAElD;;GAEG;AACH,MAAM,gBAAgB,GAAG,EAAE,CAAC,KAAK,CAC/B,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EACZ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EACZ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CACb,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;AAE/D;;GAEG;AACH,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CACzB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EACZ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EACZ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CACb,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;AAEhE;;;GAGG;AACH,SAAS,yBAAyB,CAAC,KAAa;IAC9C,8BAA8B;IAC9B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yCAAyC;IACzC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAErC,4BAA4B;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,2CAA2C;IAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,oBAAoB;QACpB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,yBAAyB;QACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,KAAa;IAC7C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAErC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAErC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACjC,CAAC;AAED,QAAQ,CAAC,4EAA4E,EAAE,GAAG,EAAE;IAC1F,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC;;WAEG;QACH,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;YACrF,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,CAAC,aAAa,EAAE,EAAE;gBAChB,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAEhD,mDAAmD;gBACnD,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEpD,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;YAC/E,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,UAAU,EACV,CAAC,OAAO,EAAE,EAAE;gBACV,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAE1C,mDAAmD;gBACnD,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEpD,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC;;WAEG;QACH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,CAAC,aAAa,EAAE,EAAE;gBAChB,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAEhD,8CAA8C;gBAC9C,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAE5C,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,UAAU,EACV,CAAC,OAAO,EAAE,EAAE;gBACV,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAE1C,yDAAyD;gBACzD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEnD,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAClE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,CAAC,aAAa,EAAE,EAAE;gBAChB,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAEhD,2CAA2C;gBAC3C,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEjD,yDAAyD;gBACzD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,aAAa,EAAE,CAAC,CAAC;gBAEhD,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC;;WAEG;QACH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACxE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,CAAC,aAAa,EAAE,EAAE;gBAChB,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAEhD,yCAAyC;gBACzC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACpD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAErC,sCAAsC;gBACtC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAE7B,sCAAsC;gBACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxC,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,CAAC,aAAa,EAAE,EAAE;gBAChB,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAChD,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;gBAEnD,6CAA6C;gBAC7C,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAElC,kDAAkD;gBAClD,MAAM,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;gBACpD,MAAM,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;gBACpD,MAAM,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;gBAEpD,gDAAgD;gBAChD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEvD,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC;;WAEG;QACH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAClD,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;gBACxB,MAAM,aAAa,GAAG,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAChD,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;gBAEnD,sDAAsD;gBACtD,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAClC,MAAM,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtC,MAAM,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtC,MAAM,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEtC,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAClD,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;gBACxB,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBAC9C,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAC1C,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;gBAEnD,sDAAsD;gBACtD,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAClC,MAAM,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtC,MAAM,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtC,MAAM,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEtC,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;YAC5E,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAClD,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;gBACxB,MAAM,aAAa,GAAG,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAEhD,sDAAsD;gBACtD,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAEtD,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAE1C,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B;;WAEG;QACH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAE1C,qCAAqC;YACrC,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,KAAK,CACN,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAClB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EACX,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CACZ,EACD,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;gBACxB,MAAM,aAAa,GAAG,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAEhD,qCAAqC;gBACrC,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEpD,qCAAqC;gBACrC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEnD,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,KAAK,CACN,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EACtC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EACtC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CACvC,EACD,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;gBACxB,MAAM,aAAa,GAAG,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAEhD,qCAAqC;gBACrC,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEpD,0CAA0C;gBAC1C,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;gBACnD,MAAM,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtC,MAAM,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtC,MAAM,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEtC,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,KAAK,CACN,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAC9B,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAC9B,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAC/B,EACD,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;gBACxB,MAAM,aAAa,GAAG,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAEhD,0CAA0C;gBAC1C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACpD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACtB,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAEvC,uDAAuD;oBACvD,uDAAuD;oBACvD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;wBAChB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;wBACpC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC;;WAEG;QACH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,CAAC,aAAa,EAAE,EAAE;gBAChB,MAAM,MAAM,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAEjD,4DAA4D;gBAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAE5B,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAClD,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;gBACxB,MAAM,aAAa,GAAG,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACnD,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBAE9C,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAC3D,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAEjD,+DAA+D;gBAC/D,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAE5C,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC;;WAEG;QACH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,CAAC,aAAa,EAAE,EAAE;gBAChB,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAEhD,yDAAyD;gBACzD,MAAM,eAAe,GAAG,0BAA0B,CAAC;gBACnD,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBAEvC,0EAA0E;gBAC1E,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC;gBAC3E,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACjC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACjC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACjC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAElC,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAClD,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;gBACxB,MAAM,aAAa,GAAG,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAEhD,2DAA2D;gBAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAC5C,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,GAAG,WAAW,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,GAAG,WAAW,CAAC;gBAE5F,yCAAyC;gBACzC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAE1C,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC;;WAEG;QACH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,CAAC,aAAa,EAAE,EAAE;gBAChB,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAEhD,mDAAmD;gBACnD,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;gBACvD,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;gBAE3C,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;YACvE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,UAAU,EACV,CAAC,OAAO,EAAE,EAAE;gBACV,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAE1C,mDAAmD;gBACnD,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;gBACvD,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;gBAE3C,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC;;WAEG;QACH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;YACxF,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAClD,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;gBACxB,MAAM,aAAa,GAAG,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAEhD,kDAAkD;gBAClD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBAEvC,6DAA6D;gBAC7D,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,aAAa,EAAE,CAAC,CAAC;gBAEhD,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,CAAC,aAAa,EAAE,EAAE;gBAChB,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAEhD,+CAA+C;gBAC/C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBAExC,2CAA2C;gBAC3C,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE/C,qDAAqD;gBACrD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAE7B,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-utils.test.d.ts","sourceRoot":"","sources":["../../../src/version/__tests__/release-utils.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|