diff --git a/.github/workflows/check-restricted-files.yaml b/.github/workflows/check-restricted-files.yaml index 7468d4b950..f9c4aff16e 100644 --- a/.github/workflows/check-restricted-files.yaml +++ b/.github/workflows/check-restricted-files.yaml @@ -46,6 +46,6 @@ jobs: echo This PR contains changes to files that should not be changed: echo - git diff --compact-summary origin/${{ github.event.pull_request.base.ref }} origin/${{ github.event.pull_request.head.ref }} -- versions/ + git diff --compact-summary origin/${{ github.event.pull_request.base.ref }} -- versions/ exit 1 diff --git a/.github/workflows/sync-dev-to-vX.Y-dev.yaml b/.github/workflows/sync-dev-to-vX.Y-dev.yaml index d408870bc1..f1bff10252 100644 --- a/.github/workflows/sync-dev-to-vX.Y-dev.yaml +++ b/.github/workflows/sync-dev-to-vX.Y-dev.yaml @@ -45,9 +45,9 @@ jobs: git checkout -b $SYNC origin/$SYNC || git checkout -b $SYNC origin/$BASE git merge origin/$HEAD -m "Merge $HEAD into $SYNC" - git checkout origin/$BASE src/* - git checkout origin/$BASE tests/* - git commit -m "Restored src/* and tests/*" || echo "" + git checkout origin/$BASE src/ + git checkout origin/$BASE tests/schema/ + git commit -m "Restored src/ and tests/schema/" || echo "" git push -u origin $SYNC EXISTS=$(gh pr list --base $BASE --head $SYNC \ diff --git a/.github/workflows/sync-main-to-dev.yaml b/.github/workflows/sync-main-to-dev.yaml index ea2a1b901e..1ceba51c9a 100644 --- a/.github/workflows/sync-main-to-dev.yaml +++ b/.github/workflows/sync-main-to-dev.yaml @@ -41,9 +41,9 @@ jobs: git checkout -b $SYNC origin/$SYNC || git checkout -b $SYNC origin/$BASE git merge origin/$HEAD -m "Merge $HEAD into $SYNC" - git checkout origin/$BASE src/* - git checkout origin/$BASE tests/* - git commit -m "Restored src/* and tests/*" || echo "" + git checkout origin/$BASE src/ + git checkout origin/$BASE tests/schema/ + git commit -m "Restored src/ and tests/schema/" || echo "" git push -u origin $SYNC EXISTS=$(gh pr list --base $BASE --head $SYNC \ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e7edfff765..9810bf71d1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -371,9 +371,9 @@ For information on the branch and release strategy for OAS 3.0.4 and 3.1.1 and e * `main` is used to publish finished work and hold the authoritative versions of general documentation such as this document, which can be merged out to other branches as needed. The `src` tree is _**not**_ present on `main`. * `dev` is the primary branch for working with the `src` tree. Development infrastructure that is not needed on `main` is maintained here, and can be merged out to other non-`main` branches as needed. - Changes on `main` are automatically included in a pull request to `dev` (see the (section on [branch sync](#branch-sync-automation)). + Changes on `main` are automatically included in a pull request to `dev` (see the section on [branch sync](#branch-sync-automation)). * `vX.Y-dev` is the minor release line development branch for X.Y, including both the initial X.Y.0 minor version and all subsequent X.Y.Z patch versions. All PRs are made to oldest active `vX.Y-dev` branch to which the change is relevant, and then merged forward as shown in the diagram further down in this document. -* `vX.Y.Z-rel` is the release branch for an X.Y.Z release (including when Z == 0). It exists primarily for `git mv`-ing `src/oas.md` to the appropriate `versions/X.Y.Z.md` location and removing schema-related files before merging back to `main`, and can also be used for any emergency post-release fixes that come up, such as when a 3rd party changes URLs in a way that breaks published links. +* `vX.Y.Z-rel` is the release branch for an X.Y.Z release (including when Z == 0). It exists primarily for `git mv`-ing `src/oas.md` to the appropriate `versions/X.Y.Z.md` location and removing schema-related files before merging back to `main`, and is deleted once merged into `main` via a pull request. ### Branching and merging (3.1.2, 3.2.0, and later) @@ -403,14 +403,14 @@ config: git2: "#eedd88" git3: "#ccbb66" git4: "#aa9944" - git5: "#887722" - git6: "#99ccff" - git7: "#77aadd" + git5: "#44ff77" + git6: "#22cc22" + git7: "#11aa11" gitBranchLabel1: "#000000" gitBranchLabel2: "#000000" gitBranchLabel3: "#000000" gitBranchLabel4: "#000000" - gitBranchLabel5: "#ffffff" + gitBranchLabel5: "#000000" gitBranchLabel6: "#000000" gitBranchLabel7: "#000000" --- @@ -425,9 +425,8 @@ gitGraph TB: commit id:"update version in src/oas.md to 3.2.0" commit id:"some 3.2.0 work" checkout v3.1-dev - commit id:"a 3.1.x fix" - checkout v3.2-dev - merge v3.1-dev id:"merge 3.1.2 fixes" + commit id:"a 3.1.2 fix" + checkout v3.1-dev branch v3.1.2-rel order:3 commit id:"rename src/oas.md to versions/3.1.2.md" @@ -444,10 +443,9 @@ gitGraph TB: commit id:"more 3.2.0 work" checkout v3.1-dev commit id:"update version in src/oas.md to 3.1.3" - commit id:"another 3.1.x fix" + commit id:"a 3.1.3 fix" checkout v3.2-dev commit id:"still more 3.2.0 work" - merge v3.1-dev id:"merge 3.1.3 fixes before releasing" checkout v3.1-dev branch v3.1.3-rel order:4 @@ -476,30 +474,18 @@ gitGraph TB: checkout v3.2-dev branch v3.3-dev order:9 - checkout v3.1-dev - commit id:"update version in src/oas.md to 3.1.4" checkout v3.2-dev commit id:"update version in src/oas.md to 3.2.1" checkout v3.3-dev commit id:"update version in src/oas.md to 3.3.0" - checkout v3.1-dev - commit id:"a 3.1.4 fix" checkout v3.2-dev commit id:"a 3.2.1 fix" - merge v3.1-dev id:"merge 3.1.4 fixes before releasing" - checkout v3.3-dev - merge v3.2-dev id:"merge 3.1.4 / 3.2.1 fixes" - checkout v3.1-dev - branch v3.1.4-rel order:5 - commit id:"rename src/oas.md to versions/3.1.4.md" checkout v3.2-dev branch v3.2.1-rel order:8 commit id:"rename src/oas.md to versions/3.2.1.md" - checkout main - merge v3.1.4-rel tag:"3.1.4" checkout dev merge main id:" auto-sync from main" checkout v3.1-dev @@ -534,7 +520,7 @@ To keep changes in sync, we have some GitHub actions that open pull requests to - `sync-dev-to-vX.Y-dev` opens pull requests with all the changes from `dev` that aren't yet included on the corresponding `vX.Y-dev` branch. These pull requests are automatically merged if all required status checks pass. The aim is to bring build script and repository documentation changes to the other branches. -Published versions of the specifications and schemas will also move across branches with this approach. +Published versions of the specifications will also move across branches with this approach. ## Appendix: Issue Automation diff --git a/package-lock.json b/package-lock.json index b2da46d6ce..47df660686 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "devDependencies": { "@hyperjump/json-schema-coverage": "^1.1.2", "@umbrelladocs/linkspector": "^0.4.7", - "@vitest/coverage-v8": "^4.0.4", + "@vitest/coverage-v8": "^4.0.5", "c8": "^10.1.3", "markdownlint-cli2": "^0.18.1", "vitest": "^4.0.1", @@ -1530,14 +1530,14 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.4.tgz", - "integrity": "sha512-YM7gDj2TX2AXyGLz0p/B7hvTsTfaQc+kSV/LU0nEnKlep/ZfbdCDppPND4YQiQC43OXyrhkG3y8ZSTqYb2CKqQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.5.tgz", + "integrity": "sha512-Yn5Dx0UVvllE3uatQw+ftObWtM/TjAOdbd8WvygaR04iyFXdNmtvZ/nJ2/JndyzfPQtbAWw0F+GJY5+lgM/7qg==", "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^1.0.2", - "@vitest/utils": "4.0.4", + "@vitest/utils": "4.0.5", "ast-v8-to-istanbul": "^0.3.5", "debug": "^4.4.3", "istanbul-lib-coverage": "^3.2.2", @@ -1552,8 +1552,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "4.0.4", - "vitest": "4.0.4" + "@vitest/browser": "4.0.5", + "vitest": "4.0.5" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -1562,16 +1562,16 @@ } }, "node_modules/@vitest/expect": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.4.tgz", - "integrity": "sha512-0ioMscWJtfpyH7+P82sGpAi3Si30OVV73jD+tEqXm5+rIx9LgnfdaOn45uaFkKOncABi/PHL00Yn0oW/wK4cXw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.5.tgz", + "integrity": "sha512-DJctLVlKoddvP/G389oGmKWNG6GD9frm2FPXARziU80Rjo7SIYxQzb2YFzmQ4fVD3Q5utUYY8nUmWrqsuIlIXQ==", "dev": true, "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.0.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.0.4", - "@vitest/utils": "4.0.4", + "@vitest/spy": "4.0.5", + "@vitest/utils": "4.0.5", "chai": "^6.0.1", "tinyrainbow": "^3.0.3" }, @@ -1580,13 +1580,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.4.tgz", - "integrity": "sha512-UTtKgpjWj+pvn3lUM55nSg34098obGhSHH+KlJcXesky8b5wCUgg7s60epxrS6yAG8slZ9W8T9jGWg4PisMf5Q==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.5.tgz", + "integrity": "sha512-iYHIy72LfbK+mL5W8zXROp6oOcJKXWeKcNjcPPsqoa18qIEDrhB6/Z08o0wRajTd6SSSDNw8NCSIHVNOMpz0mw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.0.4", + "@vitest/spy": "4.0.5", "estree-walker": "^3.0.3", "magic-string": "^0.30.19" }, @@ -1607,9 +1607,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.4.tgz", - "integrity": "sha512-lHI2rbyrLVSd1TiHGJYyEtbOBo2SDndIsN3qY4o4xe2pBxoJLD6IICghNCvD7P+BFin6jeyHXiUICXqgl6vEaQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.5.tgz", + "integrity": "sha512-t1T/sSdsYyNc5AZl0EMeD0jW9cpJe2cODP0R++ZQe1kTkpgrwEfxGFR/yCG4w8ZybizbXRTHU7lE8sTDD/QsGw==", "dev": true, "license": "MIT", "dependencies": { @@ -1620,13 +1620,13 @@ } }, "node_modules/@vitest/runner": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.4.tgz", - "integrity": "sha512-99EDqiCkncCmvIZj3qJXBZbyoQ35ghOwVWNnQ5nj0Hnsv4Qm40HmrMJrceewjLVvsxV/JSU4qyx2CGcfMBmXJw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.5.tgz", + "integrity": "sha512-CQVVe+YEeKSiFBD5gBAmRDQglm4PnMBYzeTmt06t5iWtsUN9StQeeKhYCea/oaqBYilf8sARG6fSctUcEL/UmQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.0.4", + "@vitest/utils": "4.0.5", "pathe": "^2.0.3" }, "funding": { @@ -1634,13 +1634,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.4.tgz", - "integrity": "sha512-XICqf5Gi4648FGoBIeRgnHWSNDp+7R5tpclGosFaUUFzY6SfcpsfHNMnC7oDu/iOLBxYfxVzaQpylEvpgii3zw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.5.tgz", + "integrity": "sha512-jfmSAeR6xYNEvcD+/RxFGA1bzpqHtkVhgxo2cxXia+Q3xX7m6GpZij07rz+WyQcA/xEGn4eIS1OItkMyWsGBmQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.4", + "@vitest/pretty-format": "4.0.5", "magic-string": "^0.30.19", "pathe": "^2.0.3" }, @@ -1649,9 +1649,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.4.tgz", - "integrity": "sha512-G9L13AFyYECo40QG7E07EdYnZZYCKMTSp83p9W8Vwed0IyCG1GnpDLxObkx8uOGPXfDpdeVf24P1Yka8/q1s9g==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.5.tgz", + "integrity": "sha512-TUmVQpAQign7r8+EnZsgTF3vY9BdGofTUge1rGNbnHn2IN3FChiQoT9lrPz7A7AVUZJU2LAZXl4v66HhsNMhoA==", "dev": true, "license": "MIT", "funding": { @@ -1659,13 +1659,13 @@ } }, "node_modules/@vitest/utils": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.4.tgz", - "integrity": "sha512-4bJLmSvZLyVbNsYFRpPYdJViG9jZyRvMZ35IF4ymXbRZoS+ycYghmwTGiscTXduUg2lgKK7POWIyXJNute1hjw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.5.tgz", + "integrity": "sha512-V5RndUgCB5/AfNvK9zxGCrRs99IrPYtMTIdUzJMMFs9nrmE5JXExIEfjVtUteyTRiLfCm+dCRMHf/Uu7Mm8/dg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.4", + "@vitest/pretty-format": "4.0.5", "tinyrainbow": "^3.0.3" }, "funding": { @@ -6286,19 +6286,19 @@ } }, "node_modules/vitest": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.4.tgz", - "integrity": "sha512-hV31h0/bGbtmDQc0KqaxsTO1v4ZQeF8ojDFuy4sZhFadwAqqvJA0LDw68QUocctI5EDpFMql/jVWKuPYHIf2Ew==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.5.tgz", + "integrity": "sha512-4H+J28MI5oeYgGg3h5BFSkQ1g/2GKK1IR8oorH3a6EQQbb7CwjbnyBjH4PGxw9/6vpwAPNzaeUMp4Js4WJmdXQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "4.0.4", - "@vitest/mocker": "4.0.4", - "@vitest/pretty-format": "4.0.4", - "@vitest/runner": "4.0.4", - "@vitest/snapshot": "4.0.4", - "@vitest/spy": "4.0.4", - "@vitest/utils": "4.0.4", + "@vitest/expect": "4.0.5", + "@vitest/mocker": "4.0.5", + "@vitest/pretty-format": "4.0.5", + "@vitest/runner": "4.0.5", + "@vitest/snapshot": "4.0.5", + "@vitest/spy": "4.0.5", + "@vitest/utils": "4.0.5", "debug": "^4.4.3", "es-module-lexer": "^1.7.0", "expect-type": "^1.2.2", @@ -6326,10 +6326,10 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.0.4", - "@vitest/browser-preview": "4.0.4", - "@vitest/browser-webdriverio": "4.0.4", - "@vitest/ui": "4.0.4", + "@vitest/browser-playwright": "4.0.5", + "@vitest/browser-preview": "4.0.5", + "@vitest/browser-webdriverio": "4.0.5", + "@vitest/ui": "4.0.5", "happy-dom": "*", "jsdom": "*" }, diff --git a/package.json b/package.json index d67380e4f3..7cc0b2bf54 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "devDependencies": { "@hyperjump/json-schema-coverage": "^1.1.2", "@umbrelladocs/linkspector": "^0.4.7", - "@vitest/coverage-v8": "^4.0.4", + "@vitest/coverage-v8": "^4.0.5", "c8": "^10.1.3", "markdownlint-cli2": "^0.18.1", "vitest": "^4.0.1", diff --git a/vitest.config.mjs b/vitest.config.mjs index 8b0bcff6d9..8f16741867 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -8,13 +8,13 @@ export default defineConfig({ coverage: { include: ["src/schemas/validation/**/*.yaml"], thresholds: process.env.BASE !== "dev" ? { - statements: 99.42, // should be 100% but we are missing some tests - lines: 99.42, // should be 100% but we are missing some tests - functions: 92.58, // should be 100% but we are missing some tests - // branches: 56.77, // need to discuss whether we should check/increase this + statements: 100, // JSON Schema keywords + lines: 100, + // functions: 100, // subschemas, for example with `properties` - to be discussed + // branches: 56.77, // branch coverage isn't that useful } : {} }, forceRerunTriggers: ['**/scripts/**', '**/tests/**'], - testTimeout: 10000, // 10 seconds + testTimeout: 20000, // 20 seconds, sometimes needed on slower machines }, })