@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,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit Tests for GitLab Release Utilities
|
|
3
|
+
*
|
|
4
|
+
* Tests the functions used for creating GitLab releases.
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect } from '@jest/globals';
|
|
7
|
+
import { writeFileSync, mkdirSync, rmSync } from 'node:fs';
|
|
8
|
+
import { join } from 'node:path';
|
|
9
|
+
import { extractVersion, formatReleaseTitle, getChangelogContent, createArtifactLink, createReleasePayload, } from '../release-utils.js';
|
|
10
|
+
describe('extractVersion', () => {
|
|
11
|
+
it('should remove v prefix from tag', () => {
|
|
12
|
+
expect(extractVersion('v1.2.3')).toBe('1.2.3');
|
|
13
|
+
});
|
|
14
|
+
it('should return version unchanged if no v prefix', () => {
|
|
15
|
+
expect(extractVersion('1.2.3')).toBe('1.2.3');
|
|
16
|
+
});
|
|
17
|
+
it('should handle edge cases', () => {
|
|
18
|
+
expect(extractVersion('v0.0.0')).toBe('0.0.0');
|
|
19
|
+
expect(extractVersion('v10.20.30')).toBe('10.20.30');
|
|
20
|
+
expect(extractVersion('0.0.1')).toBe('0.0.1');
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe('formatReleaseTitle', () => {
|
|
24
|
+
it('should format release title with v prefix', () => {
|
|
25
|
+
expect(formatReleaseTitle('v1.2.3')).toBe('Release v1.2.3');
|
|
26
|
+
});
|
|
27
|
+
it('should add v prefix if not present', () => {
|
|
28
|
+
expect(formatReleaseTitle('1.2.3')).toBe('Release v1.2.3');
|
|
29
|
+
});
|
|
30
|
+
it('should handle various version formats', () => {
|
|
31
|
+
expect(formatReleaseTitle('v0.0.1')).toBe('Release v0.0.1');
|
|
32
|
+
expect(formatReleaseTitle('v10.20.30')).toBe('Release v10.20.30');
|
|
33
|
+
expect(formatReleaseTitle('2.0.0')).toBe('Release v2.0.0');
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
describe('getChangelogContent', () => {
|
|
37
|
+
const testDir = join(process.cwd(), 'test-temp-changelog');
|
|
38
|
+
const testChangelogPath = join(testDir, 'CHANGELOG.md');
|
|
39
|
+
beforeEach(() => {
|
|
40
|
+
// Create test directory
|
|
41
|
+
mkdirSync(testDir, { recursive: true });
|
|
42
|
+
});
|
|
43
|
+
afterEach(() => {
|
|
44
|
+
// Clean up test directory
|
|
45
|
+
rmSync(testDir, { recursive: true, force: true });
|
|
46
|
+
});
|
|
47
|
+
it('should extract the most recent version section', () => {
|
|
48
|
+
const changelog = `# Changelog
|
|
49
|
+
|
|
50
|
+
## [1.2.0] - 2024-01-15
|
|
51
|
+
|
|
52
|
+
### Features
|
|
53
|
+
- Add new feature X
|
|
54
|
+
- Implement feature Y
|
|
55
|
+
|
|
56
|
+
### Bug Fixes
|
|
57
|
+
- Fix issue Z
|
|
58
|
+
|
|
59
|
+
## [1.1.0] - 2024-01-01
|
|
60
|
+
|
|
61
|
+
### Features
|
|
62
|
+
- Old feature
|
|
63
|
+
`;
|
|
64
|
+
writeFileSync(testChangelogPath, changelog);
|
|
65
|
+
const content = getChangelogContent(testChangelogPath);
|
|
66
|
+
expect(content).toContain('## [1.2.0] - 2024-01-15');
|
|
67
|
+
expect(content).toContain('### Features');
|
|
68
|
+
expect(content).toContain('- Add new feature X');
|
|
69
|
+
expect(content).not.toContain('## [1.1.0]');
|
|
70
|
+
expect(content).not.toContain('Old feature');
|
|
71
|
+
});
|
|
72
|
+
it('should return default message if no version sections found', () => {
|
|
73
|
+
const changelog = `# Changelog
|
|
74
|
+
|
|
75
|
+
No releases yet.
|
|
76
|
+
`;
|
|
77
|
+
writeFileSync(testChangelogPath, changelog);
|
|
78
|
+
const content = getChangelogContent(testChangelogPath);
|
|
79
|
+
expect(content).toBe('Release notes not available.');
|
|
80
|
+
});
|
|
81
|
+
it('should return default message if file does not exist', () => {
|
|
82
|
+
const content = getChangelogContent(join(testDir, 'nonexistent.md'));
|
|
83
|
+
expect(content).toBe('Release notes not available.');
|
|
84
|
+
});
|
|
85
|
+
it('should handle changelog with only one version', () => {
|
|
86
|
+
const changelog = `# Changelog
|
|
87
|
+
|
|
88
|
+
## [1.0.0] - 2024-01-01
|
|
89
|
+
|
|
90
|
+
Initial release
|
|
91
|
+
`;
|
|
92
|
+
writeFileSync(testChangelogPath, changelog);
|
|
93
|
+
const content = getChangelogContent(testChangelogPath);
|
|
94
|
+
expect(content).toContain('## [1.0.0] - 2024-01-01');
|
|
95
|
+
expect(content).toContain('Initial release');
|
|
96
|
+
});
|
|
97
|
+
it('should skip main title and extract only version section', () => {
|
|
98
|
+
const changelog = `# Changelog
|
|
99
|
+
|
|
100
|
+
All notable changes to this project will be documented in this file.
|
|
101
|
+
|
|
102
|
+
## [2.0.0] - 2024-02-01
|
|
103
|
+
|
|
104
|
+
### Breaking Changes
|
|
105
|
+
- Major refactor
|
|
106
|
+
|
|
107
|
+
## [1.0.0] - 2024-01-01
|
|
108
|
+
|
|
109
|
+
Initial release
|
|
110
|
+
`;
|
|
111
|
+
writeFileSync(testChangelogPath, changelog);
|
|
112
|
+
const content = getChangelogContent(testChangelogPath);
|
|
113
|
+
expect(content).not.toContain('# Changelog');
|
|
114
|
+
expect(content).not.toContain('All notable changes');
|
|
115
|
+
expect(content).toContain('## [2.0.0] - 2024-02-01');
|
|
116
|
+
expect(content).toContain('### Breaking Changes');
|
|
117
|
+
expect(content).not.toContain('## [1.0.0]');
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
describe('createArtifactLink', () => {
|
|
121
|
+
it('should create artifact link with correct format', () => {
|
|
122
|
+
const link = createArtifactLink('https://gitlab.com/user/project', '12345');
|
|
123
|
+
expect(link).toEqual({
|
|
124
|
+
name: 'dist',
|
|
125
|
+
url: 'https://gitlab.com/user/project/-/jobs/12345/artifacts/download',
|
|
126
|
+
link_type: 'package',
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
it('should handle different project URLs', () => {
|
|
130
|
+
const link = createArtifactLink('https://gitlab.example.com/org/repo', '67890');
|
|
131
|
+
expect(link).toEqual({
|
|
132
|
+
name: 'dist',
|
|
133
|
+
url: 'https://gitlab.example.com/org/repo/-/jobs/67890/artifacts/download',
|
|
134
|
+
link_type: 'package',
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
it('should handle numeric job IDs as strings', () => {
|
|
138
|
+
const link = createArtifactLink('https://gitlab.com/project', '999');
|
|
139
|
+
expect(link.url).toContain('/jobs/999/');
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
describe('createReleasePayload', () => {
|
|
143
|
+
it('should create valid release payload', () => {
|
|
144
|
+
const assetLinks = [
|
|
145
|
+
{
|
|
146
|
+
name: 'dist',
|
|
147
|
+
url: 'https://gitlab.com/project/-/jobs/123/artifacts/download',
|
|
148
|
+
link_type: 'package',
|
|
149
|
+
},
|
|
150
|
+
];
|
|
151
|
+
const payload = createReleasePayload('v1.2.3', 'Release v1.2.3', 'Release notes content', assetLinks);
|
|
152
|
+
expect(payload).toEqual({
|
|
153
|
+
tag_name: 'v1.2.3',
|
|
154
|
+
name: 'Release v1.2.3',
|
|
155
|
+
description: 'Release notes content',
|
|
156
|
+
assets: {
|
|
157
|
+
links: assetLinks,
|
|
158
|
+
},
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
it('should handle empty asset links', () => {
|
|
162
|
+
const payload = createReleasePayload('v1.0.0', 'Release v1.0.0', 'Notes', []);
|
|
163
|
+
expect(payload.assets.links).toEqual([]);
|
|
164
|
+
});
|
|
165
|
+
it('should handle multiple asset links', () => {
|
|
166
|
+
const assetLinks = [
|
|
167
|
+
{ name: 'dist', url: 'https://example.com/dist', link_type: 'package' },
|
|
168
|
+
{ name: 'docs', url: 'https://example.com/docs', link_type: 'other' },
|
|
169
|
+
];
|
|
170
|
+
const payload = createReleasePayload('v2.0.0', 'Release v2.0.0', 'Notes', assetLinks);
|
|
171
|
+
expect(payload.assets.links).toHaveLength(2);
|
|
172
|
+
expect(payload.assets.links[0].name).toBe('dist');
|
|
173
|
+
expect(payload.assets.links[1].name).toBe('docs');
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
//# sourceMappingURL=release-utils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-utils.test.js","sourceRoot":"","sources":["../../../src/version/__tests__/release-utils.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollback-changelog.property.test.d.ts","sourceRoot":"","sources":["../../../src/version/__tests__/rollback-changelog.property.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property Tests for Rollback Changelog Format
|
|
3
|
+
*
|
|
4
|
+
* Property 18: Rollback Changelog Entry Format
|
|
5
|
+
* Validates: Requirements 11.5
|
|
6
|
+
*/
|
|
7
|
+
import { describe, it, expect } from '@jest/globals';
|
|
8
|
+
import fc from 'fast-check';
|
|
9
|
+
import { formatRollbackChangelogEntry } from '../rollback-utils.js';
|
|
10
|
+
describe('Feature: pipeline-release-support, Property 18: Rollback Changelog Entry Format', () => {
|
|
11
|
+
const versionArb = fc.record({
|
|
12
|
+
major: fc.nat(100),
|
|
13
|
+
minor: fc.nat(100),
|
|
14
|
+
patch: fc.nat(100),
|
|
15
|
+
}).map(v => `${v.major}.${v.minor}.${v.patch}`);
|
|
16
|
+
it('should always include version and rollback marker', () => {
|
|
17
|
+
fc.assert(fc.property(versionArb, fc.option(fc.stringOf(fc.char(), { minLength: 5, maxLength: 50 }), { nil: undefined }), (version, reason) => {
|
|
18
|
+
const entry = formatRollbackChangelogEntry(version, reason);
|
|
19
|
+
// Should contain version (without v prefix)
|
|
20
|
+
const cleanVersion = version.startsWith('v') ? version.slice(1) : version;
|
|
21
|
+
expect(entry).toContain(cleanVersion);
|
|
22
|
+
// Should contain rollback marker
|
|
23
|
+
expect(entry).toContain('Rollback');
|
|
24
|
+
expect(entry).toContain('Rolled back to version');
|
|
25
|
+
// Should contain reason if provided
|
|
26
|
+
if (reason) {
|
|
27
|
+
expect(entry).toContain(reason);
|
|
28
|
+
expect(entry).toContain('Reason:');
|
|
29
|
+
}
|
|
30
|
+
}));
|
|
31
|
+
});
|
|
32
|
+
it('should include current date in ISO format', () => {
|
|
33
|
+
fc.assert(fc.property(versionArb, (version) => {
|
|
34
|
+
const entry = formatRollbackChangelogEntry(version);
|
|
35
|
+
const today = new Date().toISOString().split('T')[0];
|
|
36
|
+
expect(entry).toContain(today);
|
|
37
|
+
}));
|
|
38
|
+
});
|
|
39
|
+
it('should produce valid markdown format', () => {
|
|
40
|
+
fc.assert(fc.property(versionArb, fc.option(fc.stringOf(fc.char(), { minLength: 5, maxLength: 50 }), { nil: undefined }), (version, _reason) => {
|
|
41
|
+
const entry = formatRollbackChangelogEntry(version);
|
|
42
|
+
// Should start with markdown header
|
|
43
|
+
expect(entry).toMatch(/^## \d+\.\d+\.\d+ \(\d{4}-\d{2}-\d{2}\)/);
|
|
44
|
+
// Should contain markdown subheader
|
|
45
|
+
expect(entry).toContain('### Rollback');
|
|
46
|
+
// Should contain markdown list item
|
|
47
|
+
expect(entry).toContain('* Rolled back');
|
|
48
|
+
}));
|
|
49
|
+
});
|
|
50
|
+
it('should handle version with v prefix correctly', () => {
|
|
51
|
+
fc.assert(fc.property(versionArb, (version) => {
|
|
52
|
+
const withV = `v${version}`;
|
|
53
|
+
const entry = formatRollbackChangelogEntry(withV);
|
|
54
|
+
// Should not duplicate v prefix in header
|
|
55
|
+
expect(entry).not.toContain('## v');
|
|
56
|
+
// Should contain clean version
|
|
57
|
+
expect(entry).toContain(`## ${version}`);
|
|
58
|
+
}));
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=rollback-changelog.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollback-changelog.property.test.js","sourceRoot":"","sources":["../../../src/version/__tests__/rollback-changelog.property.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollback-utils.test.d.ts","sourceRoot":"","sources":["../../../src/version/__tests__/rollback-utils.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit Tests for Rollback Utilities
|
|
3
|
+
*
|
|
4
|
+
* Tests rollback validation and changelog formatting.
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect } from '@jest/globals';
|
|
7
|
+
import { validateRollbackVersion, formatRollbackChangelogEntry, generateRollbackTag, } from '../rollback-utils.js';
|
|
8
|
+
describe('Rollback Utilities', () => {
|
|
9
|
+
describe('validateRollbackVersion', () => {
|
|
10
|
+
it('should accept valid version format', () => {
|
|
11
|
+
const result = validateRollbackVersion('1.2.3', '1.2.4');
|
|
12
|
+
expect(result.valid).toBe(true);
|
|
13
|
+
expect(result.error).toBeUndefined();
|
|
14
|
+
});
|
|
15
|
+
it('should accept version with v prefix', () => {
|
|
16
|
+
const result = validateRollbackVersion('v1.2.3', '1.2.4');
|
|
17
|
+
expect(result.valid).toBe(true);
|
|
18
|
+
});
|
|
19
|
+
it('should reject invalid version format', () => {
|
|
20
|
+
const result = validateRollbackVersion('invalid', '1.2.3');
|
|
21
|
+
expect(result.valid).toBe(false);
|
|
22
|
+
expect(result.error).toContain('Invalid version format');
|
|
23
|
+
});
|
|
24
|
+
it('should reject rollback to current version', () => {
|
|
25
|
+
const result = validateRollbackVersion('1.2.3', '1.2.3');
|
|
26
|
+
expect(result.valid).toBe(false);
|
|
27
|
+
expect(result.error).toContain('Cannot rollback to current version');
|
|
28
|
+
});
|
|
29
|
+
it('should reject rollback to current version with v prefix', () => {
|
|
30
|
+
const result = validateRollbackVersion('v1.2.3', '1.2.3');
|
|
31
|
+
expect(result.valid).toBe(false);
|
|
32
|
+
expect(result.error).toContain('Cannot rollback to current version');
|
|
33
|
+
});
|
|
34
|
+
it('should handle version with leading zeros', () => {
|
|
35
|
+
const result = validateRollbackVersion('01.02.03', '1.2.3');
|
|
36
|
+
expect(result.valid).toBe(false);
|
|
37
|
+
expect(result.error).toContain('Invalid version format');
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
describe('formatRollbackChangelogEntry', () => {
|
|
41
|
+
it('should format basic rollback entry', () => {
|
|
42
|
+
const entry = formatRollbackChangelogEntry('1.2.3');
|
|
43
|
+
expect(entry).toContain('## 1.2.3');
|
|
44
|
+
expect(entry).toContain('### Rollback');
|
|
45
|
+
expect(entry).toContain('Rolled back to version 1.2.3');
|
|
46
|
+
});
|
|
47
|
+
it('should include reason when provided', () => {
|
|
48
|
+
const entry = formatRollbackChangelogEntry('1.2.3', 'Critical bug in 1.2.4');
|
|
49
|
+
expect(entry).toContain('Rolled back to version 1.2.3');
|
|
50
|
+
expect(entry).toContain('Reason: Critical bug in 1.2.4');
|
|
51
|
+
});
|
|
52
|
+
it('should handle version with v prefix', () => {
|
|
53
|
+
const entry = formatRollbackChangelogEntry('v1.2.3');
|
|
54
|
+
expect(entry).toContain('## 1.2.3');
|
|
55
|
+
expect(entry).not.toContain('## v1.2.3');
|
|
56
|
+
});
|
|
57
|
+
it('should include current date', () => {
|
|
58
|
+
const entry = formatRollbackChangelogEntry('1.2.3');
|
|
59
|
+
const today = new Date().toISOString().split('T')[0];
|
|
60
|
+
expect(entry).toContain(today);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
describe('generateRollbackTag', () => {
|
|
64
|
+
it('should generate tag with v prefix', () => {
|
|
65
|
+
const tag = generateRollbackTag('1.2.3');
|
|
66
|
+
expect(tag).toBe('v1.2.3');
|
|
67
|
+
});
|
|
68
|
+
it('should not duplicate v prefix', () => {
|
|
69
|
+
const tag = generateRollbackTag('v1.2.3');
|
|
70
|
+
expect(tag).toBe('v1.2.3');
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=rollback-utils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollback-utils.test.js","sourceRoot":"","sources":["../../../src/version/__tests__/rollback-utils.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-manager.property.test.d.ts","sourceRoot":"","sources":["../../../src/version/__tests__/version-manager.property.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property-based tests for version management utilities
|
|
3
|
+
*
|
|
4
|
+
* **Property 2: Semantic Version Bumping Rules**
|
|
5
|
+
* **Validates: Requirements 3.2, 3.3, 3.4**
|
|
6
|
+
*
|
|
7
|
+
* For any starting semantic version and release type (patch, minor, major),
|
|
8
|
+
* the version manager should increment the version according to semantic
|
|
9
|
+
* versioning rules: patch increments the PATCH number, minor increments
|
|
10
|
+
* MINOR and resets PATCH to 0, major increments MAJOR and resets MINOR
|
|
11
|
+
* and PATCH to 0.
|
|
12
|
+
*/
|
|
13
|
+
import { describe, it } from '@jest/globals';
|
|
14
|
+
import fc from 'fast-check';
|
|
15
|
+
import { bumpVersion, parseVersion, formatVersion, } from '../version-manager.js';
|
|
16
|
+
describe('Feature: pipeline-release-support, Property 2: Semantic Version Bumping Rules', () => {
|
|
17
|
+
it('should correctly bump patch versions according to semantic versioning rules', () => {
|
|
18
|
+
fc.assert(fc.property(fc.record({
|
|
19
|
+
major: fc.nat(1000),
|
|
20
|
+
minor: fc.nat(1000),
|
|
21
|
+
patch: fc.nat(1000),
|
|
22
|
+
}), (version) => {
|
|
23
|
+
const result = bumpVersion(version, 'patch');
|
|
24
|
+
// Patch bump should increment patch by 1
|
|
25
|
+
// Major and minor should remain unchanged
|
|
26
|
+
return (result.major === version.major &&
|
|
27
|
+
result.minor === version.minor &&
|
|
28
|
+
result.patch === version.patch + 1);
|
|
29
|
+
}), { numRuns: 100 });
|
|
30
|
+
});
|
|
31
|
+
it('should correctly bump minor versions according to semantic versioning rules', () => {
|
|
32
|
+
fc.assert(fc.property(fc.record({
|
|
33
|
+
major: fc.nat(1000),
|
|
34
|
+
minor: fc.nat(1000),
|
|
35
|
+
patch: fc.nat(1000),
|
|
36
|
+
}), (version) => {
|
|
37
|
+
const result = bumpVersion(version, 'minor');
|
|
38
|
+
// Minor bump should increment minor by 1 and reset patch to 0
|
|
39
|
+
// Major should remain unchanged
|
|
40
|
+
return (result.major === version.major &&
|
|
41
|
+
result.minor === version.minor + 1 &&
|
|
42
|
+
result.patch === 0);
|
|
43
|
+
}), { numRuns: 100 });
|
|
44
|
+
});
|
|
45
|
+
it('should correctly bump major versions according to semantic versioning rules', () => {
|
|
46
|
+
fc.assert(fc.property(fc.record({
|
|
47
|
+
major: fc.nat(1000),
|
|
48
|
+
minor: fc.nat(1000),
|
|
49
|
+
patch: fc.nat(1000),
|
|
50
|
+
}), (version) => {
|
|
51
|
+
const result = bumpVersion(version, 'major');
|
|
52
|
+
// Major bump should increment major by 1 and reset minor and patch to 0
|
|
53
|
+
return (result.major === version.major + 1 &&
|
|
54
|
+
result.minor === 0 &&
|
|
55
|
+
result.patch === 0);
|
|
56
|
+
}), { numRuns: 100 });
|
|
57
|
+
});
|
|
58
|
+
it('should apply correct bumping rules for any version and release type combination', () => {
|
|
59
|
+
fc.assert(fc.property(fc.record({
|
|
60
|
+
major: fc.nat(1000),
|
|
61
|
+
minor: fc.nat(1000),
|
|
62
|
+
patch: fc.nat(1000),
|
|
63
|
+
}), fc.constantFrom('patch', 'minor', 'major'), (version, releaseType) => {
|
|
64
|
+
const result = bumpVersion(version, releaseType);
|
|
65
|
+
if (releaseType === 'patch') {
|
|
66
|
+
return (result.major === version.major &&
|
|
67
|
+
result.minor === version.minor &&
|
|
68
|
+
result.patch === version.patch + 1);
|
|
69
|
+
}
|
|
70
|
+
else if (releaseType === 'minor') {
|
|
71
|
+
return (result.major === version.major &&
|
|
72
|
+
result.minor === version.minor + 1 &&
|
|
73
|
+
result.patch === 0);
|
|
74
|
+
}
|
|
75
|
+
else { // major
|
|
76
|
+
return (result.major === version.major + 1 &&
|
|
77
|
+
result.minor === 0 &&
|
|
78
|
+
result.patch === 0);
|
|
79
|
+
}
|
|
80
|
+
}), { numRuns: 100 });
|
|
81
|
+
});
|
|
82
|
+
it('should never produce negative version components', () => {
|
|
83
|
+
fc.assert(fc.property(fc.record({
|
|
84
|
+
major: fc.nat(1000),
|
|
85
|
+
minor: fc.nat(1000),
|
|
86
|
+
patch: fc.nat(1000),
|
|
87
|
+
}), fc.constantFrom('patch', 'minor', 'major'), (version, releaseType) => {
|
|
88
|
+
const result = bumpVersion(version, releaseType);
|
|
89
|
+
// All components must be non-negative
|
|
90
|
+
return result.major >= 0 && result.minor >= 0 && result.patch >= 0;
|
|
91
|
+
}), { numRuns: 100 });
|
|
92
|
+
});
|
|
93
|
+
it('should produce valid semantic version strings after bumping', () => {
|
|
94
|
+
fc.assert(fc.property(fc.record({
|
|
95
|
+
major: fc.nat(1000),
|
|
96
|
+
minor: fc.nat(1000),
|
|
97
|
+
patch: fc.nat(1000),
|
|
98
|
+
}), fc.constantFrom('patch', 'minor', 'major'), (version, releaseType) => {
|
|
99
|
+
const result = bumpVersion(version, releaseType);
|
|
100
|
+
const versionString = formatVersion(result);
|
|
101
|
+
// The formatted version should be parseable back to the same version
|
|
102
|
+
const parsed = parseVersion(versionString);
|
|
103
|
+
return (parsed.major === result.major &&
|
|
104
|
+
parsed.minor === result.minor &&
|
|
105
|
+
parsed.patch === result.patch);
|
|
106
|
+
}), { numRuns: 100 });
|
|
107
|
+
});
|
|
108
|
+
it('should not mutate the original version object', () => {
|
|
109
|
+
fc.assert(fc.property(fc.record({
|
|
110
|
+
major: fc.nat(1000),
|
|
111
|
+
minor: fc.nat(1000),
|
|
112
|
+
patch: fc.nat(1000),
|
|
113
|
+
}), fc.constantFrom('patch', 'minor', 'major'), (version, releaseType) => {
|
|
114
|
+
const originalMajor = version.major;
|
|
115
|
+
const originalMinor = version.minor;
|
|
116
|
+
const originalPatch = version.patch;
|
|
117
|
+
bumpVersion(version, releaseType);
|
|
118
|
+
// Original version should remain unchanged
|
|
119
|
+
return (version.major === originalMajor &&
|
|
120
|
+
version.minor === originalMinor &&
|
|
121
|
+
version.patch === originalPatch);
|
|
122
|
+
}), { numRuns: 100 });
|
|
123
|
+
});
|
|
124
|
+
it('should always increase the version (lexicographically)', () => {
|
|
125
|
+
fc.assert(fc.property(fc.record({
|
|
126
|
+
major: fc.nat(1000),
|
|
127
|
+
minor: fc.nat(1000),
|
|
128
|
+
patch: fc.nat(1000),
|
|
129
|
+
}), fc.constantFrom('patch', 'minor', 'major'), (version, releaseType) => {
|
|
130
|
+
const result = bumpVersion(version, releaseType);
|
|
131
|
+
// The bumped version should be greater than the original
|
|
132
|
+
// Compare as version tuples
|
|
133
|
+
if (result.major > version.major)
|
|
134
|
+
return true;
|
|
135
|
+
if (result.major === version.major && result.minor > version.minor)
|
|
136
|
+
return true;
|
|
137
|
+
if (result.major === version.major && result.minor === version.minor && result.patch > version.patch)
|
|
138
|
+
return true;
|
|
139
|
+
return false;
|
|
140
|
+
}), { numRuns: 100 });
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
//# sourceMappingURL=version-manager.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-manager.property.test.js","sourceRoot":"","sources":["../../../src/version/__tests__/version-manager.property.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-manager.test.d.ts","sourceRoot":"","sources":["../../../src/version/__tests__/version-manager.test.ts"],"names":[],"mappings":""}
|