From 6e670a3ab03929ef8d428d22b84f678efe8db74c Mon Sep 17 00:00:00 2001 From: Ashton Eby Date: Fri, 4 Oct 2024 15:23:16 -0700 Subject: [PATCH 1/6] extend makeFaunaRequest to include request body --- src/lib/db.mjs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/lib/db.mjs b/src/lib/db.mjs index 1d6afa68..b6367464 100644 --- a/src/lib/db.mjs +++ b/src/lib/db.mjs @@ -6,6 +6,7 @@ export async function makeFaunaRequest({ path, params, method, + body, shouldThrow = true, }) { const fetch = container.resolve("fetch"); @@ -21,10 +22,14 @@ export async function makeFaunaRequest({ throw e; } - const response = await fetch(fullUrl, { + const fetchArgs = { method, headers: { AUTHORIZATION: `Bearer ${secret}` }, - }); + }; + + if (body) fetchArgs.body = body; + + const response = await fetch(fullUrl, fetchArgs); const obj = await response.json(); From 38c0fb88c2c400446b69ca126ba4f8bfcd4fcdf5 Mon Sep 17 00:00:00 2001 From: Ashton Eby Date: Fri, 4 Oct 2024 15:32:45 -0700 Subject: [PATCH 2/6] rewrite schema push to use makeFaunaRequest --- src/yargs-commands/schema/push.mjs | 121 ++++++++++++----------------- yargs-test/schema/push.mjs | 8 +- 2 files changed, 57 insertions(+), 72 deletions(-) diff --git a/src/yargs-commands/schema/push.mjs b/src/yargs-commands/schema/push.mjs index 13b135ec..bfbc5e2b 100644 --- a/src/yargs-commands/schema/push.mjs +++ b/src/yargs-commands/schema/push.mjs @@ -4,85 +4,66 @@ import { commonQueryOptions } from "../../lib/command-helpers.mjs"; async function doPush(argv) { const logger = container.resolve("logger"); - const fetch = container.resolve("fetch"); + const makeFaunaRequest = container.resolve("makeFaunaRequest"); const gatherFSL = container.resolve("gatherFSL"); - try { - const fsl = await gatherFSL(argv.dir); - if (argv.force) { - const params = new URLSearchParams(); - if (argv.force) params.set("force", "true"); - if (argv.staged) params.set("staged", "true"); + const fsl = await gatherFSL(argv.dir); + if (argv.force) { + const params = new URLSearchParams({ + force: argv.force, + staged: argv.staged, + }); - const path = new URL(`/schema/1/update?${params}`, argv.url); - const res = await fetch(path.toString(), { - method: "POST", - headers: { AUTHORIZATION: `Bearer ${argv.secret}` }, - body: fsl, - // https://github.com/nodejs/node/issues/46221 - // https://github.com/microsoft/TypeScript-DOM-lib-generator/issues/1483 - duplex: "half", - }); + await makeFaunaRequest({ + baseUrl: argv.url, + path: `/schema/1/update?${params}`, + body: fsl, + secret: argv.secret, + method: "POST", + }); + } else { + // Confirm diff, then push it. `force` is set on `validate` so we don't + // need to pass the last known schema version through. + const params = new URLSearchParams({ force: true }); + if (argv.color) params.set("color", "ansi"); - const json = await res.json(); - if (json.error) { - logger.stderr(json.error?.message ?? json.error); - } - } else { - // Confirm diff, then push it. `force` is set on `validate` so we don't - // need to pass the last known schema version through. - const params = new URLSearchParams({ force: true }); - if (argv.color) params.set("color", "ansi"); - const path = new URL(`/schema/1/validate?${params}`, argv.url); - const res = await fetch(path, { - method: "POST", - headers: { AUTHORIZATION: `Bearer ${argv.secret}` }, - body: fsl, - duplex: "half", - }); + const response = await makeFaunaRequest({ + baseUrl: argv.url, + path: `/schema/1/validate?${params}`, + body: fsl, + secret: argv.secret, + method: "POST", + }); - const json = await res.json(); - if (json.error) { - logger.stderr(json.error?.message ?? json.error); - } + let message = "Accept and push changes?"; + if (response.diff) { + logger.stdout(`Proposed diff:\n`); + logger.stdout(response.diff); + } else { + logger.stdout("No logical changes."); + message = "Push file contents anyway?"; + } + const confirmed = await confirm({ + message, + default: false, + }); - let message = "Accept and push changes?"; - if (json.diff) { - logger.stdout(`Proposed diff:\n`); - logger.stdout(json.diff); - } else { - logger.stdout("No logical changes."); - message = "Push file contents anyway?"; - } - const confirmed = await confirm({ - message, - default: false, + if (confirmed) { + const params = new URLSearchParams({ + version: response.version, + staged: argv.staged ? "true" : "false", }); - if (confirmed) { - const params = new URLSearchParams({ - version: json.version, - staged: argv.staged ? "true" : "false", - }); - - const path = new URL(`/schema/1/update?${params}`, argv.url); - const res = await fetch(path, { - method: "POST", - headers: { AUTHORIZATION: `Bearer ${argv.secret}` }, - body: fsl, - duplex: "half", - }); - - const json0 = await res.json(); - if (json0.error) { - logger.stderr(json0.error.message); - } - } else { - logger.stdout("Push cancelled"); - } + await makeFaunaRequest({ + baseUrl: argv.url, + path: `/schema/1/update?${params}`, + body: fsl, + secret: argv.secret, + method: "POST", + }); + } else { + logger.stdout("Push cancelled"); } - } catch (err) { - logger.stderr(err); } } diff --git a/yargs-test/schema/push.mjs b/yargs-test/schema/push.mjs index 2941b042..09a25189 100644 --- a/yargs-test/schema/push.mjs +++ b/yargs-test/schema/push.mjs @@ -1,12 +1,17 @@ +import * as awilix from "awilix/lib/awilix.module.mjs"; import { expect } from "chai"; import { run } from "../../src/cli.mjs"; import { setupTestContainer as setupContainer } from "../../src/config/setup-test-container.mjs"; +import { makeFaunaRequest } from "../../src/lib/db.mjs"; describe("schema push", function () { let container; beforeEach(() => { container = setupContainer(); + container.register({ + makeFaunaRequest: awilix.asValue(makeFaunaRequest), + }); }); it("can force push schema", async function () { @@ -25,12 +30,11 @@ describe("schema push", function () { expect(gatherFSL).to.have.been.calledWith("."); expect(fetch).to.have.been.calledWith( - "https://db.fauna.com/schema/1/update?force=true", + "https://db.fauna.com/schema/1/update?force=true&staged=false", { method: "POST", headers: { AUTHORIZATION: "Bearer secret" }, body: '[{"name":"coll.fsl","content":"collection MyColl {\\n name: String\\n index byName {\\n terms [.name]\\n }\\n}\\n"}]', - duplex: "half", } ); From 5fb7daf889640aa1cc7daae013424161c4cd3025 Mon Sep 17 00:00:00 2001 From: Ashton Eby Date: Fri, 4 Oct 2024 15:47:36 -0700 Subject: [PATCH 3/6] fix URL constructors and error handlers --- src/yargs-commands/schema/abandon.mjs | 13 +++++-------- src/yargs-commands/schema/commit.mjs | 19 +++++++------------ yargs-test/schema/pull.mjs | 2 +- 3 files changed, 13 insertions(+), 21 deletions(-) diff --git a/src/yargs-commands/schema/abandon.mjs b/src/yargs-commands/schema/abandon.mjs index 54e31147..144ad488 100644 --- a/src/yargs-commands/schema/abandon.mjs +++ b/src/yargs-commands/schema/abandon.mjs @@ -6,7 +6,6 @@ import { container } from "../../cli.mjs"; async function doAbandon(argv) { const makeFaunaRequest = container.resolve("makeFaunaRequest"); const logger = container.resolve("logger"); - const exit = container.resolve("exit"); if (argv.force) { const params = new URLSearchParams({ @@ -15,7 +14,7 @@ async function doAbandon(argv) { await makeFaunaRequest({ baseUrl: argv.url, - path: new URL(`/schema/1/staged/abandon?${params}`, argv.url).href, + path: `/schema/1/staged/abandon?${params}`, secret: argv.secret, method: "POST", }); @@ -27,15 +26,13 @@ async function doAbandon(argv) { const response = await makeFaunaRequest({ baseUrl: argv.url, - path: new URL(`/schema/1/staged/status?${params}`, argv.url).href, + path: `/schema/1/staged/status?${params}`, secret: argv.secret, method: "GET", }); - if (response.status === "none") { - logger.stderr("There is no staged schema to abandon"); - exit(1); - } + if (response.status === "none") + throw new Error("There is no staged schema to abandon"); logger.stdout(response.diff); @@ -49,7 +46,7 @@ async function doAbandon(argv) { await makeFaunaRequest({ baseUrl: argv.url, - path: new URL(`/schema/1/staged/abandon?${params}`, argv.url).href, + path: `/schema/1/staged/abandon?${params}`, secret: argv.secret, method: "POST", }); diff --git a/src/yargs-commands/schema/commit.mjs b/src/yargs-commands/schema/commit.mjs index 382829be..b3f012e5 100644 --- a/src/yargs-commands/schema/commit.mjs +++ b/src/yargs-commands/schema/commit.mjs @@ -6,7 +6,6 @@ import { container } from "../../cli.mjs"; async function doCommit(argv) { const makeFaunaRequest = container.resolve("makeFaunaRequest"); const logger = container.resolve("logger"); - const exit = container.resolve("exit"); if (argv.force) { const params = new URLSearchParams({ @@ -15,7 +14,7 @@ async function doCommit(argv) { await makeFaunaRequest({ baseUrl: argv.url, - path: new URL(`/schema/1/staged/commit?${params}`, argv.url).href, + path: `/schema/1/staged/commit?${params}`, secret: argv.secret, method: "POST", }); @@ -28,22 +27,18 @@ async function doCommit(argv) { const response = await makeFaunaRequest({ baseUrl: argv.url, - path: new URL(`/schema/1/staged/status?${params}`, argv.url).href, + path: `/schema/1/staged/status?${params}`, secret: argv.secret, method: "GET", }); - if (response.status === "none") { - logger.stderr("There is no staged schema to commit"); - exit(1); - } + if (response.status === "none") + throw new Error("There is no staged schema to commit"); logger.stdout(response.diff); - if (response.status !== "ready") { - logger.stderr("Schema is not ready to be committed"); - exit(1); - } + if (response.status !== "ready") + throw new Error("Schema is not ready to be committed"); const confirmed = await confirm({ message: "Accept and commit these changes?", @@ -55,7 +50,7 @@ async function doCommit(argv) { await makeFaunaRequest({ baseUrl: argv.url, - path: new URL(`/schema/1/staged/commit?${params}`, argv.url).href, + path: `/schema/1/staged/commit?${params}`, secret: argv.secret, method: "POST", }); diff --git a/yargs-test/schema/pull.mjs b/yargs-test/schema/pull.mjs index b8f5fbfc..83b8a0f6 100644 --- a/yargs-test/schema/pull.mjs +++ b/yargs-test/schema/pull.mjs @@ -198,7 +198,7 @@ describe("schema pull", function () { ); const [error] = await tryToCatch(() => - run(`schema pull --secret "secret" --verbosity 5`, container) + run(`schema pull --secret "secret"`, container) ); expect(error).to.have.property("code", 1); expect(container.resolve("gatherFSL")).to.not.have.been.called; From 7bd4b4038b30af9c8e4a5e51c08c2ccc472eb8c9 Mon Sep 17 00:00:00 2001 From: Ashton Eby Date: Fri, 4 Oct 2024 15:49:45 -0700 Subject: [PATCH 4/6] remove @cloudcmd/stub in favor of sinon --- package.json | 1 - yargs-test/login.mjs | 7 +++---- yarn.lock | 43 ------------------------------------------- 3 files changed, 3 insertions(+), 48 deletions(-) diff --git a/package.json b/package.json index 342b0504..2c1e9b2e 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,6 @@ }, "devDependencies": { "@babel/eslint-parser": "^7.17.0", - "@cloudcmd/stub": "^4.0.1", "@eslint/eslintrc": "^3.1.0", "@eslint/js": "^9.11.1", "@inquirer/testing": "^2.1.7", diff --git a/yargs-test/login.mjs b/yargs-test/login.mjs index 94bf5929..4911c65a 100644 --- a/yargs-test/login.mjs +++ b/yargs-test/login.mjs @@ -2,8 +2,7 @@ import { expect } from "chai"; import { run } from "../src/cli.mjs"; import { setupTestContainer as setupContainer } from "../src/config/setup-test-container.mjs"; import * as awilix from "awilix/lib/awilix.module.mjs"; -// TODO: this breaks if we swap the stub implementation to sinon. ugh -import stub from "@cloudcmd/stub"; +import { stub, spy } from "sinon"; describe("login", function () { let container; @@ -11,10 +10,10 @@ describe("login", function () { let handlers = {}; return { - _receiveAuthCode: stub(async () => { + _receiveAuthCode: spy(async () => { await handlers.auth_code_received(); }), - start: stub(async () => { + start: spy(async () => { await handlers.ready(); }), getOAuthParams: () => { diff --git a/yarn.lock b/yarn.lock index 9112a680..11e04a3b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -316,15 +316,6 @@ jest-diff "^25.1.0" strip-ansi "^6.0.0" -"@cloudcmd/stub@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@cloudcmd/stub/-/stub-4.0.1.tgz#73d646e25d4d25b262e8c4147658b3362ff9b950" - integrity sha512-7x7tVxJZOdQowHv/VKwHLo9aoNNoVRc6PdKYqyKcDHX+xrF78jSXnqEWrOplnD/gF+tCnyFafu1Is+lFfWCILw== - dependencies: - chalk "^4.0.0" - jest-diff "^27.0.6" - strip-ansi "^6.0.0" - "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -2821,11 +2812,6 @@ diff-sequences@^25.2.6: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== - diff-sequences@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" @@ -4343,16 +4329,6 @@ jest-diff@^25.1.0: jest-get-type "^25.2.6" pretty-format "^25.5.0" -jest-diff@^27.0.6: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - jest-diff@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" @@ -4398,11 +4374,6 @@ jest-get-type@^25.2.6: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== - jest-get-type@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" @@ -6023,15 +5994,6 @@ pretty-format@^25.5.0: ansi-styles "^4.0.0" react-is "^16.12.0" -pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" @@ -6157,11 +6119,6 @@ react-is@^16.12.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - react-is@^18.0.0: version "18.3.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" From b74e85b8c11ee7fe122ebb15b9f54120d8ddf383 Mon Sep 17 00:00:00 2001 From: Ashton Eby Date: Fri, 4 Oct 2024 15:59:32 -0700 Subject: [PATCH 5/6] add test watch mode and junit reporter --- .gitignore | 1 + package.json | 6 ++++-- yarn.lock | 45 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 33d53969..d6d8c93d 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ experiments *# .log coverage +test-results.xml diff --git a/package.json b/package.json index 2c1e9b2e..0b468f1c 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "husky": "^7.0.4", "jest": "^29.7.0", "mocha": "^10.7.3", + "mocha-junit-reporter": "^2.2.1", "mock-require": "^3.0.3", "nock": "^14.0.0-beta.8", "oclif": "^3.9.2", @@ -117,11 +118,12 @@ "prepack": "yarn build && oclif manifest", "pretest": "yarn fixlint", "local": "export $(cat .env | xargs); node bin/run", - "local-test": "export $(cat .env | xargs); mocha \"test/**/*.test.{js,ts}\"", + "local-test-old": "export $(cat .env | xargs); mocha \"test/**/*.test.{js,ts}\"", + "local-test": "mocha --watch --recursive ./yargs-test --require ./yargs-test/mocha-root-hooks.mjs --experimental-require-module", "lint": "eslint .", "fixlint": "eslint . --fix", "test-old": "c8 -r html mocha --forbid-only \"test/**/*.test.{js,ts}\"", - "test": "mocha --recursive ./yargs-test --require ./yargs-test/mocha-root-hooks.mjs", + "test": "mocha --recursive ./yargs-test --require ./yargs-test/mocha-root-hooks.mjs --reporter spec --reporter mocha-junit-reporter", "version": "oclif-dev readme && git add README.md", "fmt": "prettier -w src" }, diff --git a/yarn.lock b/yarn.lock index 11e04a3b..eaf91878 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2366,6 +2366,11 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +charenc@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + check-error@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" @@ -2682,6 +2687,11 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +crypt@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== + csv-parse@^5.0.4: version "5.5.6" resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-5.5.6.tgz#0d726d58a60416361358eec291a9f93abe0b6b1a" @@ -4001,6 +4011,11 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-buffer@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + is-callable@^1.1.3: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" @@ -5001,6 +5016,15 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" +md5@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" + integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== + dependencies: + charenc "0.0.2" + crypt "0.0.2" + is-buffer "~1.1.6" + "mem-fs-editor@^8.1.2 || ^9.0.0", mem-fs-editor@^9.0.0: version "9.7.0" resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-9.7.0.tgz#dbb458b8acb885c84013645e93f71aa267a7fdf6" @@ -5201,6 +5225,22 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkdirp@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== + +mocha-junit-reporter@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/mocha-junit-reporter/-/mocha-junit-reporter-2.2.1.tgz#739f5595d0f051d07af9d74e32c416e13a41cde5" + integrity sha512-iDn2tlKHn8Vh8o4nCzcUVW4q7iXp7cC4EB78N0cDHIobLymyHNwe0XG8HEHHjc3hJlXm0Vy6zcrxaIhnI2fWmw== + dependencies: + debug "^4.3.4" + md5 "^2.3.0" + mkdirp "^3.0.0" + strip-ansi "^6.0.1" + xml "^1.0.1" + mocha@^10.7.3: version "10.7.3" resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.7.3.tgz#ae32003cabbd52b59aece17846056a68eb4b0752" @@ -7332,6 +7372,11 @@ xml2js@0.6.2: sax ">=0.6.0" xmlbuilder "~11.0.0" +xml@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" + integrity sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw== + xmlbuilder@~11.0.0: version "11.0.1" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" From e1fa9b07e2386a18be41809131b9a74361e3444b Mon Sep 17 00:00:00 2001 From: echo-bravo-yahoo Date: Fri, 4 Oct 2024 16:02:14 -0700 Subject: [PATCH 6/6] Updated config.yml --- .circleci/config.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 869c931a..74891cfd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -23,6 +23,9 @@ commands: name: Run Tests command: yarn test + - store_test_results: + path: test-results.xml + - store_artifacts: path: coverage