movehat 0.1.8 → 0.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/README.md +2 -2
- package/dist/__tests__/deployContract.test.d.ts +2 -0
- package/dist/__tests__/deployContract.test.d.ts.map +1 -0
- package/dist/__tests__/deployContract.test.js +368 -0
- package/dist/__tests__/deployContract.test.js.map +1 -0
- package/dist/__tests__/errors.test.d.ts +2 -0
- package/dist/__tests__/errors.test.d.ts.map +1 -0
- package/dist/__tests__/errors.test.js +46 -0
- package/dist/__tests__/errors.test.js.map +1 -0
- package/dist/__tests__/fixtures/sigint-deploy-harness.d.ts +24 -0
- package/dist/__tests__/fixtures/sigint-deploy-harness.d.ts.map +1 -0
- package/dist/__tests__/fixtures/sigint-deploy-harness.js +82 -0
- package/dist/__tests__/fixtures/sigint-deploy-harness.js.map +1 -0
- package/dist/__tests__/fork/api.test.d.ts +2 -0
- package/dist/__tests__/fork/api.test.d.ts.map +1 -0
- package/dist/__tests__/fork/api.test.js +110 -0
- package/dist/__tests__/fork/api.test.js.map +1 -0
- package/dist/__tests__/harness/Harness.createLive.test.d.ts +2 -0
- package/dist/__tests__/harness/Harness.createLive.test.d.ts.map +1 -0
- package/dist/__tests__/harness/Harness.createLive.test.js +53 -0
- package/dist/__tests__/harness/Harness.createLive.test.js.map +1 -0
- package/dist/__tests__/harness/Harness.proxy.test.d.ts +2 -0
- package/dist/__tests__/harness/Harness.proxy.test.d.ts.map +1 -0
- package/dist/__tests__/harness/Harness.proxy.test.js +93 -0
- package/dist/__tests__/harness/Harness.proxy.test.js.map +1 -0
- package/dist/__tests__/harness/_fixture.d.ts +54 -0
- package/dist/__tests__/harness/_fixture.d.ts.map +1 -0
- package/dist/__tests__/harness/_fixture.js +69 -0
- package/dist/__tests__/harness/_fixture.js.map +1 -0
- package/dist/__tests__/harness/codeObject.deploy.test.d.ts +2 -0
- package/dist/__tests__/harness/codeObject.deploy.test.d.ts.map +1 -0
- package/dist/__tests__/harness/codeObject.deploy.test.js +288 -0
- package/dist/__tests__/harness/codeObject.deploy.test.js.map +1 -0
- package/dist/__tests__/harness/codeObject.upgrade.test.d.ts +2 -0
- package/dist/__tests__/harness/codeObject.upgrade.test.d.ts.map +1 -0
- package/dist/__tests__/harness/codeObject.upgrade.test.js +138 -0
- package/dist/__tests__/harness/codeObject.upgrade.test.js.map +1 -0
- package/dist/__tests__/harness/script.test.d.ts +2 -0
- package/dist/__tests__/harness/script.test.d.ts.map +1 -0
- package/dist/__tests__/harness/script.test.js +219 -0
- package/dist/__tests__/harness/script.test.js.map +1 -0
- package/dist/__tests__/harness/view.test.d.ts +2 -0
- package/dist/__tests__/harness/view.test.d.ts.map +1 -0
- package/dist/__tests__/harness/view.test.js +92 -0
- package/dist/__tests__/harness/view.test.js.map +1 -0
- package/dist/__tests__/runtime.test.d.ts +2 -0
- package/dist/__tests__/runtime.test.d.ts.map +1 -0
- package/dist/__tests__/runtime.test.js +141 -0
- package/dist/__tests__/runtime.test.js.map +1 -0
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/__tests__/compile.test.d.ts +2 -0
- package/dist/commands/__tests__/compile.test.d.ts.map +1 -0
- package/dist/commands/__tests__/compile.test.js +351 -0
- package/dist/commands/__tests__/compile.test.js.map +1 -0
- package/dist/commands/__tests__/init.test.d.ts +2 -0
- package/dist/commands/__tests__/init.test.d.ts.map +1 -0
- package/dist/commands/__tests__/init.test.js +101 -0
- package/dist/commands/__tests__/init.test.js.map +1 -0
- package/dist/commands/__tests__/run.test.d.ts +2 -0
- package/dist/commands/__tests__/run.test.d.ts.map +1 -0
- package/dist/commands/__tests__/run.test.js +166 -0
- package/dist/commands/__tests__/run.test.js.map +1 -0
- package/dist/commands/__tests__/test-move.test.d.ts +2 -0
- package/dist/commands/__tests__/test-move.test.d.ts.map +1 -0
- package/dist/commands/__tests__/test-move.test.js +59 -0
- package/dist/commands/__tests__/test-move.test.js.map +1 -0
- package/dist/commands/__tests__/test.test.d.ts +2 -0
- package/dist/commands/__tests__/test.test.d.ts.map +1 -0
- package/dist/commands/__tests__/test.test.js +168 -0
- package/dist/commands/__tests__/test.test.js.map +1 -0
- package/dist/commands/__tests__/update.test.d.ts +2 -0
- package/dist/commands/__tests__/update.test.d.ts.map +1 -0
- package/dist/commands/__tests__/update.test.js +176 -0
- package/dist/commands/__tests__/update.test.js.map +1 -0
- package/dist/commands/compile.d.ts +7 -1
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +150 -33
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/fork/__tests__/create.test.d.ts +2 -0
- package/dist/commands/fork/__tests__/create.test.d.ts.map +1 -0
- package/dist/commands/fork/__tests__/create.test.js +108 -0
- package/dist/commands/fork/__tests__/create.test.js.map +1 -0
- package/dist/commands/fork/__tests__/fund.test.d.ts +2 -0
- package/dist/commands/fork/__tests__/fund.test.d.ts.map +1 -0
- package/dist/commands/fork/__tests__/fund.test.js +72 -0
- package/dist/commands/fork/__tests__/fund.test.js.map +1 -0
- package/dist/commands/fork/__tests__/list.test.d.ts +2 -0
- package/dist/commands/fork/__tests__/list.test.d.ts.map +1 -0
- package/dist/commands/fork/__tests__/list.test.js +119 -0
- package/dist/commands/fork/__tests__/list.test.js.map +1 -0
- package/dist/commands/fork/__tests__/serve.test.d.ts +2 -0
- package/dist/commands/fork/__tests__/serve.test.d.ts.map +1 -0
- package/dist/commands/fork/__tests__/serve.test.js +97 -0
- package/dist/commands/fork/__tests__/serve.test.js.map +1 -0
- package/dist/commands/fork/__tests__/view-resource.test.d.ts +2 -0
- package/dist/commands/fork/__tests__/view-resource.test.d.ts.map +1 -0
- package/dist/commands/fork/__tests__/view-resource.test.js +77 -0
- package/dist/commands/fork/__tests__/view-resource.test.js.map +1 -0
- package/dist/commands/fork/create.d.ts +1 -1
- package/dist/commands/fork/create.d.ts.map +1 -1
- package/dist/commands/fork/create.js +3 -2
- package/dist/commands/fork/create.js.map +1 -1
- package/dist/commands/fork/fund.d.ts.map +1 -1
- package/dist/commands/fork/fund.js +15 -8
- package/dist/commands/fork/fund.js.map +1 -1
- package/dist/commands/fork/list.d.ts.map +1 -1
- package/dist/commands/fork/list.js +2 -1
- package/dist/commands/fork/list.js.map +1 -1
- package/dist/commands/fork/serve.d.ts +1 -0
- package/dist/commands/fork/serve.d.ts.map +1 -1
- package/dist/commands/fork/serve.js +4 -2
- package/dist/commands/fork/serve.js.map +1 -1
- package/dist/commands/fork/view-resource.d.ts.map +1 -1
- package/dist/commands/fork/view-resource.js +10 -5
- package/dist/commands/fork/view-resource.js.map +1 -1
- package/dist/commands/run.d.ts +15 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +50 -27
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/test-move.d.ts.map +1 -1
- package/dist/commands/test-move.js +3 -2
- package/dist/commands/test-move.js.map +1 -1
- package/dist/commands/test.js +52 -46
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +15 -13
- package/dist/commands/update.js.map +1 -1
- package/dist/core/AccountManager.d.ts +1 -1
- package/dist/core/AccountManager.d.ts.map +1 -1
- package/dist/core/AccountManager.js +20 -7
- package/dist/core/AccountManager.js.map +1 -1
- package/dist/core/Publisher.d.ts +31 -0
- package/dist/core/Publisher.d.ts.map +1 -0
- package/dist/core/Publisher.js +248 -0
- package/dist/core/Publisher.js.map +1 -0
- package/dist/core/__tests__/AccountManager.test.d.ts +2 -0
- package/dist/core/__tests__/AccountManager.test.d.ts.map +1 -0
- package/dist/core/__tests__/AccountManager.test.js +239 -0
- package/dist/core/__tests__/AccountManager.test.js.map +1 -0
- package/dist/core/__tests__/config.test.d.ts +2 -0
- package/dist/core/__tests__/config.test.d.ts.map +1 -0
- package/dist/core/__tests__/config.test.js +311 -0
- package/dist/core/__tests__/config.test.js.map +1 -0
- package/dist/core/__tests__/deployments.test.d.ts +2 -0
- package/dist/core/__tests__/deployments.test.d.ts.map +1 -0
- package/dist/core/__tests__/deployments.test.js +201 -0
- package/dist/core/__tests__/deployments.test.js.map +1 -0
- package/dist/core/__tests__/shell.test.d.ts +2 -0
- package/dist/core/__tests__/shell.test.d.ts.map +1 -0
- package/dist/core/__tests__/shell.test.js +107 -0
- package/dist/core/__tests__/shell.test.js.map +1 -0
- package/dist/core/config.d.ts +13 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +80 -11
- package/dist/core/config.js.map +1 -1
- package/dist/core/contract.d.ts +1 -1
- package/dist/core/contract.d.ts.map +1 -1
- package/dist/core/contract.js +15 -4
- package/dist/core/contract.js.map +1 -1
- package/dist/core/deployments.d.ts +2 -2
- package/dist/core/deployments.d.ts.map +1 -1
- package/dist/core/deployments.js +8 -6
- package/dist/core/deployments.js.map +1 -1
- package/dist/core/movementProfile.d.ts +34 -0
- package/dist/core/movementProfile.d.ts.map +1 -0
- package/dist/core/movementProfile.js +150 -0
- package/dist/core/movementProfile.js.map +1 -0
- package/dist/core/shell.d.ts +23 -7
- package/dist/core/shell.d.ts.map +1 -1
- package/dist/core/shell.js +32 -14
- package/dist/core/shell.js.map +1 -1
- package/dist/errors.d.ts +35 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +54 -0
- package/dist/errors.js.map +1 -1
- package/dist/fork/__tests__/manager.test.d.ts +2 -0
- package/dist/fork/__tests__/manager.test.d.ts.map +1 -0
- package/dist/fork/__tests__/manager.test.js +309 -0
- package/dist/fork/__tests__/manager.test.js.map +1 -0
- package/dist/fork/__tests__/server.test.d.ts +2 -0
- package/dist/fork/__tests__/server.test.d.ts.map +1 -0
- package/dist/fork/__tests__/server.test.js +54 -0
- package/dist/fork/__tests__/server.test.js.map +1 -0
- package/dist/fork/__tests__/storage.test.d.ts +2 -0
- package/dist/fork/__tests__/storage.test.d.ts.map +1 -0
- package/dist/fork/__tests__/storage.test.js +222 -0
- package/dist/fork/__tests__/storage.test.js.map +1 -0
- package/dist/fork/__tests__/test.test.d.ts +2 -0
- package/dist/fork/__tests__/test.test.d.ts.map +1 -0
- package/dist/fork/__tests__/test.test.js +81 -0
- package/dist/fork/__tests__/test.test.js.map +1 -0
- package/dist/fork/api.d.ts +14 -3
- package/dist/fork/api.d.ts.map +1 -1
- package/dist/fork/api.js +25 -14
- package/dist/fork/api.js.map +1 -1
- package/dist/fork/manager.d.ts +23 -9
- package/dist/fork/manager.d.ts.map +1 -1
- package/dist/fork/manager.js +79 -36
- package/dist/fork/manager.js.map +1 -1
- package/dist/fork/server.d.ts +11 -3
- package/dist/fork/server.d.ts.map +1 -1
- package/dist/fork/server.js +45 -13
- package/dist/fork/server.js.map +1 -1
- package/dist/fork/storage.d.ts +4 -4
- package/dist/fork/storage.d.ts.map +1 -1
- package/dist/fork/storage.js +7 -9
- package/dist/fork/storage.js.map +1 -1
- package/dist/fork/test.d.ts +13 -4
- package/dist/fork/test.d.ts.map +1 -1
- package/dist/fork/test.js +36 -27
- package/dist/fork/test.js.map +1 -1
- package/dist/harness/Harness.d.ts +124 -0
- package/dist/harness/Harness.d.ts.map +1 -0
- package/dist/harness/Harness.js +193 -0
- package/dist/harness/Harness.js.map +1 -0
- package/dist/harness/codeObject.d.ts +31 -0
- package/dist/harness/codeObject.d.ts.map +1 -0
- package/dist/harness/codeObject.js +271 -0
- package/dist/harness/codeObject.js.map +1 -0
- package/dist/harness/errors.d.ts +14 -0
- package/dist/harness/errors.d.ts.map +1 -0
- package/dist/harness/errors.js +22 -0
- package/dist/harness/errors.js.map +1 -0
- package/dist/harness/index.d.ts +4 -0
- package/dist/harness/index.d.ts.map +1 -0
- package/dist/harness/index.js +3 -0
- package/dist/harness/index.js.map +1 -0
- package/dist/harness/proxy.d.ts +7 -0
- package/dist/harness/proxy.d.ts.map +1 -0
- package/dist/harness/proxy.js +36 -0
- package/dist/harness/proxy.js.map +1 -0
- package/dist/harness/script.d.ts +21 -0
- package/dist/harness/script.d.ts.map +1 -0
- package/dist/harness/script.js +155 -0
- package/dist/harness/script.js.map +1 -0
- package/dist/harness/view.d.ts +22 -0
- package/dist/harness/view.d.ts.map +1 -0
- package/dist/harness/view.js +28 -0
- package/dist/harness/view.js.map +1 -0
- package/dist/helpers/__tests__/semver-utils.test.d.ts +2 -0
- package/dist/helpers/__tests__/semver-utils.test.d.ts.map +1 -0
- package/dist/helpers/__tests__/semver-utils.test.js +103 -0
- package/dist/helpers/__tests__/semver-utils.test.js.map +1 -0
- package/dist/helpers/index.d.ts +3 -2
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +2 -2
- package/dist/helpers/index.js.map +1 -1
- package/dist/helpers/move-tests.d.ts +3 -3
- package/dist/helpers/move-tests.d.ts.map +1 -1
- package/dist/helpers/move-tests.js +21 -20
- package/dist/helpers/move-tests.js.map +1 -1
- package/dist/helpers/npm-registry.d.ts.map +1 -1
- package/dist/helpers/npm-registry.js +1 -3
- package/dist/helpers/npm-registry.js.map +1 -1
- package/dist/helpers/semver-utils.d.ts.map +1 -1
- package/dist/helpers/semver-utils.js +4 -3
- package/dist/helpers/semver-utils.js.map +1 -1
- package/dist/helpers/setup.d.ts.map +1 -1
- package/dist/helpers/setup.js +10 -6
- package/dist/helpers/setup.js.map +1 -1
- package/dist/helpers/setupLocalTesting.d.ts +32 -27
- package/dist/helpers/setupLocalTesting.d.ts.map +1 -1
- package/dist/helpers/setupLocalTesting.js +179 -180
- package/dist/helpers/setupLocalTesting.js.map +1 -1
- package/dist/helpers/testFixtures.d.ts +19 -53
- package/dist/helpers/testFixtures.d.ts.map +1 -1
- package/dist/helpers/testFixtures.js +89 -107
- package/dist/helpers/testFixtures.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/node/LocalNodeManager.d.ts +9 -1
- package/dist/node/LocalNodeManager.d.ts.map +1 -1
- package/dist/node/LocalNodeManager.js +75 -58
- package/dist/node/LocalNodeManager.js.map +1 -1
- package/dist/node/__tests__/LocalNodeManager.test.d.ts +2 -0
- package/dist/node/__tests__/LocalNodeManager.test.d.ts.map +1 -0
- package/dist/node/__tests__/LocalNodeManager.test.js +349 -0
- package/dist/node/__tests__/LocalNodeManager.test.js.map +1 -0
- package/dist/runtime.d.ts +12 -15
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +32 -241
- package/dist/runtime.js.map +1 -1
- package/dist/templates/README.md +1 -1
- package/dist/templates/movehat.config.ts +10 -0
- package/dist/templates/package.json +2 -1
- package/dist/templates/scripts/deploy-counter.ts +46 -38
- package/dist/templates/tests/Counter.test.ts +51 -51
- package/dist/templates/types/movehat.d.ts +6 -9
- package/dist/types/config.d.ts +8 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/fork.d.ts +7 -1
- package/dist/types/fork.d.ts.map +1 -1
- package/dist/types/harness.d.ts +166 -0
- package/dist/types/harness.d.ts.map +1 -0
- package/dist/types/harness.js +2 -0
- package/dist/types/harness.js.map +1 -0
- package/dist/types/runtime.d.ts +7 -1
- package/dist/types/runtime.d.ts.map +1 -1
- package/dist/ui/__tests__/colors.test.d.ts +2 -0
- package/dist/ui/__tests__/colors.test.d.ts.map +1 -0
- package/dist/ui/__tests__/colors.test.js +127 -0
- package/dist/ui/__tests__/colors.test.js.map +1 -0
- package/dist/ui/colors.d.ts.map +1 -1
- package/dist/ui/colors.js +6 -2
- package/dist/ui/colors.js.map +1 -1
- package/dist/ui/logger.d.ts +17 -0
- package/dist/ui/logger.d.ts.map +1 -1
- package/dist/ui/logger.js +22 -0
- package/dist/ui/logger.js.map +1 -1
- package/dist/ui/symbols.d.ts +1 -0
- package/dist/ui/symbols.d.ts.map +1 -1
- package/dist/ui/symbols.js +7 -1
- package/dist/ui/symbols.js.map +1 -1
- package/dist/utils/__tests__/address.test.d.ts +2 -0
- package/dist/utils/__tests__/address.test.d.ts.map +1 -0
- package/dist/utils/__tests__/address.test.js +70 -0
- package/dist/utils/__tests__/address.test.js.map +1 -0
- package/dist/utils/__tests__/childProcessAdapter.test.d.ts +2 -0
- package/dist/utils/__tests__/childProcessAdapter.test.d.ts.map +1 -0
- package/dist/utils/__tests__/childProcessAdapter.test.js +217 -0
- package/dist/utils/__tests__/childProcessAdapter.test.js.map +1 -0
- package/dist/utils/__tests__/runCli.test.d.ts +2 -0
- package/dist/utils/__tests__/runCli.test.d.ts.map +1 -0
- package/dist/utils/__tests__/runCli.test.js +187 -0
- package/dist/utils/__tests__/runCli.test.js.map +1 -0
- package/dist/utils/address.d.ts +33 -0
- package/dist/utils/address.d.ts.map +1 -0
- package/dist/utils/address.js +52 -0
- package/dist/utils/address.js.map +1 -0
- package/dist/utils/childProcessAdapter.d.ts +93 -0
- package/dist/utils/childProcessAdapter.d.ts.map +1 -0
- package/dist/utils/childProcessAdapter.js +109 -0
- package/dist/utils/childProcessAdapter.js.map +1 -0
- package/dist/utils/parseCliOutput.d.ts +20 -0
- package/dist/utils/parseCliOutput.d.ts.map +1 -0
- package/dist/utils/parseCliOutput.js +26 -0
- package/dist/utils/parseCliOutput.js.map +1 -0
- package/dist/utils/redact.d.ts +15 -0
- package/dist/utils/redact.d.ts.map +1 -0
- package/dist/utils/redact.js +24 -0
- package/dist/utils/redact.js.map +1 -0
- package/dist/utils/runCli.d.ts +24 -0
- package/dist/utils/runCli.d.ts.map +1 -0
- package/dist/utils/runCli.js +37 -0
- package/dist/utils/runCli.js.map +1 -0
- package/package.json +14 -4
- package/src/__tests__/deployContract.test.ts +429 -0
- package/src/__tests__/errors.test.ts +84 -0
- package/src/__tests__/fixtures/sigint-deploy-harness.ts +95 -0
- package/src/__tests__/fork/api.test.ts +143 -0
- package/src/__tests__/harness/Harness.createLive.test.ts +57 -0
- package/src/__tests__/harness/Harness.proxy.test.ts +115 -0
- package/src/__tests__/harness/_fixture.ts +131 -0
- package/src/__tests__/harness/codeObject.deploy.test.ts +319 -0
- package/src/__tests__/harness/codeObject.upgrade.test.ts +156 -0
- package/src/__tests__/harness/script.test.ts +245 -0
- package/src/__tests__/harness/view.test.ts +104 -0
- package/src/__tests__/runtime.test.ts +182 -0
- package/src/cli.ts +2 -1
- package/src/commands/__tests__/compile.test.ts +407 -0
- package/src/commands/__tests__/init.test.ts +125 -0
- package/src/commands/__tests__/run.test.ts +192 -0
- package/src/commands/__tests__/test-move.test.ts +81 -0
- package/src/commands/__tests__/test.test.ts +204 -0
- package/src/commands/__tests__/update.test.ts +223 -0
- package/src/commands/compile.ts +168 -32
- package/src/commands/fork/__tests__/create.test.ts +132 -0
- package/src/commands/fork/__tests__/fund.test.ts +104 -0
- package/src/commands/fork/__tests__/list.test.ts +139 -0
- package/src/commands/fork/__tests__/serve.test.ts +121 -0
- package/src/commands/fork/__tests__/view-resource.test.ts +101 -0
- package/src/commands/fork/create.ts +4 -3
- package/src/commands/fork/fund.ts +16 -9
- package/src/commands/fork/list.ts +3 -2
- package/src/commands/fork/serve.ts +6 -3
- package/src/commands/fork/view-resource.ts +11 -6
- package/src/commands/run.ts +54 -28
- package/src/commands/test-move.ts +4 -3
- package/src/commands/test.ts +56 -44
- package/src/commands/update.ts +19 -16
- package/src/core/AccountManager.ts +23 -10
- package/src/core/Publisher.ts +322 -0
- package/src/core/__tests__/AccountManager.test.ts +290 -0
- package/src/core/__tests__/config.test.ts +377 -0
- package/src/core/__tests__/deployments.test.ts +247 -0
- package/src/core/__tests__/shell.test.ts +138 -0
- package/src/core/config.ts +96 -12
- package/src/core/contract.ts +13 -4
- package/src/core/deployments.ts +13 -11
- package/src/core/movementProfile.ts +179 -0
- package/src/core/shell.ts +34 -14
- package/src/errors.ts +60 -0
- package/src/fork/__tests__/manager.test.ts +385 -0
- package/src/fork/__tests__/server.test.ts +65 -0
- package/src/fork/__tests__/storage.test.ts +281 -0
- package/src/fork/__tests__/test.test.ts +97 -0
- package/src/fork/api.ts +28 -14
- package/src/fork/manager.ts +88 -43
- package/src/fork/server.ts +53 -19
- package/src/fork/storage.ts +12 -15
- package/src/fork/test.ts +58 -32
- package/src/harness/Harness.ts +228 -0
- package/src/harness/codeObject.ts +388 -0
- package/src/harness/errors.ts +22 -0
- package/src/harness/index.ts +3 -0
- package/src/harness/proxy.ts +40 -0
- package/src/harness/script.ts +196 -0
- package/src/harness/view.ts +34 -0
- package/src/helpers/__tests__/semver-utils.test.ts +121 -0
- package/src/helpers/index.ts +2 -8
- package/src/helpers/move-tests.ts +27 -23
- package/src/helpers/npm-registry.ts +4 -3
- package/src/helpers/semver-utils.ts +4 -3
- package/src/helpers/setup.ts +9 -5
- package/src/helpers/setupLocalTesting.ts +219 -200
- package/src/helpers/testFixtures.ts +106 -118
- package/src/index.ts +9 -3
- package/src/node/LocalNodeManager.ts +87 -62
- package/src/node/__tests__/LocalNodeManager.test.ts +452 -0
- package/src/runtime.ts +33 -289
- package/src/templates/README.md +1 -1
- package/src/templates/movehat.config.ts +10 -0
- package/src/templates/package.json +2 -1
- package/src/templates/scripts/deploy-counter.ts +46 -38
- package/src/templates/tests/Counter.test.ts +51 -51
- package/src/templates/types/movehat.d.ts +6 -9
- package/src/types/config.ts +8 -0
- package/src/types/fork.ts +7 -1
- package/src/types/harness.ts +182 -0
- package/src/types/runtime.ts +11 -3
- package/src/ui/__tests__/colors.test.ts +156 -0
- package/src/ui/colors.ts +5 -2
- package/src/ui/logger.ts +22 -0
- package/src/ui/symbols.ts +7 -1
- package/src/utils/__tests__/address.test.ts +93 -0
- package/src/utils/__tests__/childProcessAdapter.test.ts +266 -0
- package/src/utils/__tests__/runCli.test.ts +240 -0
- package/src/utils/address.ts +56 -0
- package/src/utils/childProcessAdapter.ts +215 -0
- package/src/utils/parseCliOutput.ts +27 -0
- package/src/utils/redact.ts +24 -0
- package/src/utils/runCli.ts +64 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { existsSync } from "fs";
|
|
2
|
+
import { homedir } from "os";
|
|
3
|
+
import { extname, join } from "path";
|
|
4
|
+
import { randomUUID } from "crypto";
|
|
5
|
+
import type { MovehatRuntime } from "../types/runtime.js";
|
|
6
|
+
import type {
|
|
7
|
+
RunMoveScriptOptions,
|
|
8
|
+
MoveScriptResult,
|
|
9
|
+
} from "../types/harness.js";
|
|
10
|
+
import { validatePathSafety, validateProfileSafety } from "../core/shell.js";
|
|
11
|
+
import { CliExecutionError } from "../errors.js";
|
|
12
|
+
import { runCli } from "../utils/runCli.js";
|
|
13
|
+
import { parseTxHash } from "../utils/parseCliOutput.js";
|
|
14
|
+
import { logger } from "../ui/index.js";
|
|
15
|
+
import {
|
|
16
|
+
withYamlLock,
|
|
17
|
+
addProfile,
|
|
18
|
+
removeProfile,
|
|
19
|
+
removeProfileSync,
|
|
20
|
+
ensureSignalHandler,
|
|
21
|
+
cleanupCallbacks,
|
|
22
|
+
} from "../core/movementProfile.js";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Execute a Move script via `movement move run-script`.
|
|
26
|
+
*
|
|
27
|
+
* Auto-detects the script kind from the extension:
|
|
28
|
+
* - `.move` source → `--script-path` (CLI compiles inline)
|
|
29
|
+
* - `.mv` compiled bytecode → `--compiled-script-path`
|
|
30
|
+
*
|
|
31
|
+
* Reuses Publisher's security model via the shared `movementProfile`
|
|
32
|
+
* helpers: per-deploy unique profile, atomic 0o600 yaml writes under
|
|
33
|
+
* the mutex, SIGINT-safe sync cleanup, `--profile` auth (key never
|
|
34
|
+
* appears in `ps` output).
|
|
35
|
+
*
|
|
36
|
+
* Returns {@link MoveScriptResult}. `txHash` is guaranteed; `success`
|
|
37
|
+
* and `vmStatus` are best-effort parsed from the CLI's Result JSON.
|
|
38
|
+
*
|
|
39
|
+
* @internal — called from `Harness.runMoveScript`.
|
|
40
|
+
*/
|
|
41
|
+
export async function runMoveScript(
|
|
42
|
+
runtime: MovehatRuntime,
|
|
43
|
+
options: RunMoveScriptOptions
|
|
44
|
+
): Promise<MoveScriptResult> {
|
|
45
|
+
const config = runtime.config;
|
|
46
|
+
const account = runtime.account;
|
|
47
|
+
|
|
48
|
+
// Synchronous validation before any CLI call.
|
|
49
|
+
if (!options.scriptPath || typeof options.scriptPath !== "string") {
|
|
50
|
+
throw new Error(
|
|
51
|
+
"Harness.runMoveScript requires options.scriptPath (string path to .move or .mv)."
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
const ext = extname(options.scriptPath).toLowerCase();
|
|
55
|
+
let scriptFlag: "--script-path" | "--compiled-script-path";
|
|
56
|
+
if (ext === ".move") {
|
|
57
|
+
scriptFlag = "--script-path";
|
|
58
|
+
} else if (ext === ".mv") {
|
|
59
|
+
scriptFlag = "--compiled-script-path";
|
|
60
|
+
} else {
|
|
61
|
+
throw new Error(
|
|
62
|
+
`Harness.runMoveScript: unsupported script extension '${ext || "<none>"}'. ` +
|
|
63
|
+
`Expected '.move' (source — CLI auto-compiles) or '.mv' (pre-compiled bytecode).`
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
if (!existsSync(options.scriptPath)) {
|
|
67
|
+
throw new Error(
|
|
68
|
+
`Harness.runMoveScript: script not found at '${options.scriptPath}'.`
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const safeScriptPath = validatePathSafety(options.scriptPath, "script path");
|
|
73
|
+
const profile = `movehat-script-${randomUUID().slice(0, 8)}`;
|
|
74
|
+
const safeProfile = validateProfileSafety(profile);
|
|
75
|
+
|
|
76
|
+
logger.step(
|
|
77
|
+
`Running Move script '${options.scriptPath}' on ${config.network}...`
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
try {
|
|
81
|
+
const deployerAddress = account.accountAddress.toString();
|
|
82
|
+
|
|
83
|
+
let cleanPrivateKey = config.privateKey;
|
|
84
|
+
if (cleanPrivateKey.startsWith("ed25519-priv-")) {
|
|
85
|
+
cleanPrivateKey = cleanPrivateKey.replace("ed25519-priv-", "");
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const movementConfigPath = join(homedir(), ".aptos", "config.yaml");
|
|
89
|
+
|
|
90
|
+
ensureSignalHandler();
|
|
91
|
+
const syncCleanup = () => removeProfileSync(movementConfigPath, profile);
|
|
92
|
+
cleanupCallbacks.add(syncCleanup);
|
|
93
|
+
|
|
94
|
+
await withYamlLock(() =>
|
|
95
|
+
addProfile(movementConfigPath, profile, {
|
|
96
|
+
private_key: cleanPrivateKey,
|
|
97
|
+
public_key: account.publicKey.toString(),
|
|
98
|
+
account: deployerAddress,
|
|
99
|
+
rest_url: config.rpc,
|
|
100
|
+
})
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
let scriptOut = "";
|
|
104
|
+
try {
|
|
105
|
+
const typeArgsFragment: string[] =
|
|
106
|
+
options.typeArgs && options.typeArgs.length > 0
|
|
107
|
+
? ["--type-args", ...options.typeArgs]
|
|
108
|
+
: [];
|
|
109
|
+
const argsFragment: string[] =
|
|
110
|
+
options.args && options.args.length > 0
|
|
111
|
+
? ["--args", ...options.args]
|
|
112
|
+
: [];
|
|
113
|
+
|
|
114
|
+
const result = await runCli(
|
|
115
|
+
{
|
|
116
|
+
command: "movement",
|
|
117
|
+
args: [
|
|
118
|
+
"move",
|
|
119
|
+
"run-script",
|
|
120
|
+
"--profile",
|
|
121
|
+
safeProfile,
|
|
122
|
+
"--url",
|
|
123
|
+
config.rpc,
|
|
124
|
+
"--assume-yes",
|
|
125
|
+
scriptFlag,
|
|
126
|
+
safeScriptPath,
|
|
127
|
+
...typeArgsFragment,
|
|
128
|
+
...argsFragment,
|
|
129
|
+
],
|
|
130
|
+
timeoutMs: 120000,
|
|
131
|
+
},
|
|
132
|
+
{ adapter: options.adapter }
|
|
133
|
+
);
|
|
134
|
+
scriptOut = result.stdout;
|
|
135
|
+
if (result.stdout) console.log(result.stdout.trim());
|
|
136
|
+
if (result.stderr) console.error(result.stderr.trim());
|
|
137
|
+
} finally {
|
|
138
|
+
await withYamlLock(() => removeProfile(movementConfigPath, profile)).catch(
|
|
139
|
+
(err) => {
|
|
140
|
+
const cleanupMsg = err instanceof Error ? err.message : String(err);
|
|
141
|
+
logger.warning(
|
|
142
|
+
`Failed to remove script profile "${profile}" from ${movementConfigPath}: ${cleanupMsg}. ` +
|
|
143
|
+
`Run 'movement config delete-profile --profile ${profile}' to clean up manually.`
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
);
|
|
147
|
+
cleanupCallbacks.delete(syncCleanup);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const txHash = parseTxHash(scriptOut);
|
|
151
|
+
if (!txHash) {
|
|
152
|
+
throw new Error(
|
|
153
|
+
`Could not parse transaction hash from 'move run-script' output. ` +
|
|
154
|
+
`Captured stdout:\n${scriptOut.slice(0, 1000)}`
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
const success = parseSuccess(scriptOut);
|
|
159
|
+
const vmStatus = parseVmStatus(scriptOut);
|
|
160
|
+
|
|
161
|
+
logger.success(`Move script executed (tx ${txHash}).`);
|
|
162
|
+
|
|
163
|
+
const out: MoveScriptResult = { txHash };
|
|
164
|
+
if (success !== undefined) out.success = success;
|
|
165
|
+
if (vmStatus !== undefined) out.vmStatus = vmStatus;
|
|
166
|
+
return out;
|
|
167
|
+
} catch (error) {
|
|
168
|
+
if (error instanceof CliExecutionError) {
|
|
169
|
+
if (error.stdoutPreview) console.log(error.stdoutPreview);
|
|
170
|
+
logger.error(`Failed to run Move script: ${error.message}\n${error.stderr}`);
|
|
171
|
+
} else {
|
|
172
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
173
|
+
logger.error(`Failed to run Move script: ${err.message}`);
|
|
174
|
+
}
|
|
175
|
+
throw error;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Best-effort parse of the `"success": true|false` field from
|
|
181
|
+
* Movement CLI's Result JSON block. Returns `undefined` on no match.
|
|
182
|
+
*/
|
|
183
|
+
function parseSuccess(stdout: string): boolean | undefined {
|
|
184
|
+
const m = stdout.match(/"success"\s*:\s*(true|false)/);
|
|
185
|
+
if (!m) return undefined;
|
|
186
|
+
return m[1] === "true";
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Best-effort parse of the `"vm_status"` string. Returns `undefined`
|
|
191
|
+
* on no match.
|
|
192
|
+
*/
|
|
193
|
+
function parseVmStatus(stdout: string): string | undefined {
|
|
194
|
+
const m = stdout.match(/"vm_status"\s*:\s*"([^"]*)"/);
|
|
195
|
+
return m?.[1];
|
|
196
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { MoveFunctionId } from "@aptos-labs/ts-sdk";
|
|
2
|
+
import type { MovehatRuntime } from "../types/runtime.js";
|
|
3
|
+
import type { RunViewFunctionOptions } from "../types/harness.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Execute a Move view function via the Aptos SDK (no CLI invocation).
|
|
7
|
+
*
|
|
8
|
+
* Returns the SDK's raw `unknown[]` — the Move boundary may return a
|
|
9
|
+
* tuple of any arity. Callers destructure:
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* const [count] = await harness.runViewFunction({
|
|
13
|
+
* function: "0xCAFE::counter::get",
|
|
14
|
+
* functionArguments: ["0xdeployer"],
|
|
15
|
+
* });
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* Works on all 3 harness modes (createLocal, createFork, createLive) —
|
|
19
|
+
* view functions read on-chain state without writing.
|
|
20
|
+
*
|
|
21
|
+
* @internal — called from `Harness.runViewFunction`.
|
|
22
|
+
*/
|
|
23
|
+
export async function runViewFunction(
|
|
24
|
+
runtime: MovehatRuntime,
|
|
25
|
+
options: RunViewFunctionOptions
|
|
26
|
+
): Promise<unknown[]> {
|
|
27
|
+
return runtime.aptos.view({
|
|
28
|
+
payload: {
|
|
29
|
+
function: options.function as MoveFunctionId,
|
|
30
|
+
typeArguments: options.typeArguments ?? [],
|
|
31
|
+
functionArguments: (options.functionArguments ?? []) as never[],
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { isNewerVersion } from '../semver-utils.js';
|
|
3
|
+
|
|
4
|
+
describe('isNewerVersion', () => {
|
|
5
|
+
describe('standard semver comparisons', () => {
|
|
6
|
+
it('should detect newer major version', () => {
|
|
7
|
+
expect(isNewerVersion('1.0.0', '2.0.0')).toBe(true);
|
|
8
|
+
expect(isNewerVersion('0.1.0', '1.0.0')).toBe(true);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
it('should detect newer minor version', () => {
|
|
12
|
+
expect(isNewerVersion('1.0.0', '1.1.0')).toBe(true);
|
|
13
|
+
expect(isNewerVersion('1.5.0', '1.6.0')).toBe(true);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('should detect newer patch version', () => {
|
|
17
|
+
expect(isNewerVersion('1.0.0', '1.0.1')).toBe(true);
|
|
18
|
+
expect(isNewerVersion('1.0.9', '1.0.10')).toBe(true);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('should return false for same version', () => {
|
|
22
|
+
expect(isNewerVersion('1.0.0', '1.0.0')).toBe(false);
|
|
23
|
+
expect(isNewerVersion('2.5.3', '2.5.3')).toBe(false);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('should return false for older versions', () => {
|
|
27
|
+
expect(isNewerVersion('2.0.0', '1.0.0')).toBe(false);
|
|
28
|
+
expect(isNewerVersion('1.1.0', '1.0.0')).toBe(false);
|
|
29
|
+
expect(isNewerVersion('1.0.1', '1.0.0')).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
describe('variable-length version handling', () => {
|
|
34
|
+
it('should handle two-part versions', () => {
|
|
35
|
+
expect(isNewerVersion('1.0', '1.1')).toBe(true);
|
|
36
|
+
expect(isNewerVersion('1.0', '2.0')).toBe(true);
|
|
37
|
+
expect(isNewerVersion('1.1', '1.0')).toBe(false);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it('should compare versions with different lengths', () => {
|
|
41
|
+
expect(isNewerVersion('1.0', '1.0.1')).toBe(true);
|
|
42
|
+
expect(isNewerVersion('1.0.0', '1.1')).toBe(true);
|
|
43
|
+
expect(isNewerVersion('1.0.1', '1.0')).toBe(false);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('should handle four-part versions', () => {
|
|
47
|
+
expect(isNewerVersion('1.0.0.0', '1.0.0.1')).toBe(true);
|
|
48
|
+
expect(isNewerVersion('1.0.0.1', '1.0.0.0')).toBe(false);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('should treat missing parts as zero', () => {
|
|
52
|
+
expect(isNewerVersion('1.0', '1.0.0')).toBe(false);
|
|
53
|
+
expect(isNewerVersion('1.0.0', '1.0')).toBe(false);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
describe('pre-release version handling', () => {
|
|
58
|
+
it('should consider stable newer than pre-release with same base', () => {
|
|
59
|
+
expect(isNewerVersion('1.0.0-alpha', '1.0.0')).toBe(true);
|
|
60
|
+
expect(isNewerVersion('1.0.0-beta.1', '1.0.0')).toBe(true);
|
|
61
|
+
expect(isNewerVersion('1.0.0-rc.1', '1.0.0')).toBe(true);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it('should consider pre-release older than stable with same base', () => {
|
|
65
|
+
expect(isNewerVersion('1.0.0', '1.0.0-alpha')).toBe(false);
|
|
66
|
+
expect(isNewerVersion('1.0.0', '1.0.0-beta.1')).toBe(false);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('should strip pre-release tags for base comparison', () => {
|
|
70
|
+
expect(isNewerVersion('1.0.0-alpha', '1.1.0-alpha')).toBe(true);
|
|
71
|
+
expect(isNewerVersion('1.0.0-alpha', '2.0.0-beta')).toBe(true);
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it('should handle complex pre-release tags', () => {
|
|
75
|
+
expect(isNewerVersion('1.0.0-alpha.0', '1.0.0')).toBe(true);
|
|
76
|
+
expect(isNewerVersion('1.0.0-beta.2.3', '1.0.0')).toBe(true);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
describe('edge cases', () => {
|
|
81
|
+
it('should handle large version numbers', () => {
|
|
82
|
+
expect(isNewerVersion('100.200.300', '100.200.301')).toBe(true);
|
|
83
|
+
expect(isNewerVersion('999.999.999', '1000.0.0')).toBe(true);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it('should handle version 0.x.x correctly', () => {
|
|
87
|
+
expect(isNewerVersion('0.0.1', '0.0.2')).toBe(true);
|
|
88
|
+
expect(isNewerVersion('0.1.0', '0.2.0')).toBe(true);
|
|
89
|
+
expect(isNewerVersion('0.9.9', '1.0.0')).toBe(true);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it('should throw for invalid version format', () => {
|
|
93
|
+
expect(() => isNewerVersion('invalid', '1.0.0')).toThrow('Invalid version format');
|
|
94
|
+
expect(() => isNewerVersion('1.0.0', 'invalid')).toThrow('Invalid version format');
|
|
95
|
+
expect(() => isNewerVersion('1.a.0', '1.0.0')).toThrow('Invalid version format');
|
|
96
|
+
expect(() => isNewerVersion('1..0', '1.0.0')).toThrow('Invalid version format');
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
it('should reject versions with unstripped "v" prefix', () => {
|
|
100
|
+
// isNewerVersion expects pre-stripped versions; callers must remove leading "v".
|
|
101
|
+
expect(() => isNewerVersion('v1.0.0', '1.0.0')).toThrow('Invalid version format');
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
describe('real-world scenarios', () => {
|
|
106
|
+
it('should handle npm-style version bumps', () => {
|
|
107
|
+
// Patch bump
|
|
108
|
+
expect(isNewerVersion('0.1.5', '0.1.6')).toBe(true);
|
|
109
|
+
// Minor bump
|
|
110
|
+
expect(isNewerVersion('0.1.6', '0.2.0')).toBe(true);
|
|
111
|
+
// Major bump
|
|
112
|
+
expect(isNewerVersion('0.9.9', '1.0.0')).toBe(true);
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it('should handle movehat version progression', () => {
|
|
116
|
+
expect(isNewerVersion('0.0.1', '0.1.0')).toBe(true);
|
|
117
|
+
expect(isNewerVersion('0.1.0', '0.1.1')).toBe(true);
|
|
118
|
+
expect(isNewerVersion('0.1.9', '0.1.10')).toBe(true);
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
});
|
package/src/helpers/index.ts
CHANGED
|
@@ -26,16 +26,10 @@ export { AccountManager } from "../core/AccountManager.js";
|
|
|
26
26
|
export type { StoredAccount } from "../core/AccountManager.js";
|
|
27
27
|
export { LocalNodeManager } from "../node/LocalNodeManager.js";
|
|
28
28
|
export type { LocalNodeOptions, LocalNodeInfo } from "../node/LocalNodeManager.js";
|
|
29
|
-
export {
|
|
30
|
-
|
|
31
|
-
stopLocalTesting,
|
|
32
|
-
getCurrentForkManager,
|
|
33
|
-
getCurrentLocalNode,
|
|
34
|
-
resetForkState,
|
|
35
|
-
} from "./setupLocalTesting.js";
|
|
29
|
+
export { setupLocalTesting } from "./setupLocalTesting.js";
|
|
30
|
+
export type { LocalTestingContext } from "./setupLocalTesting.js";
|
|
36
31
|
export {
|
|
37
32
|
setupTestFixture,
|
|
38
|
-
teardownTestFixture,
|
|
39
33
|
setupMinimalFixture,
|
|
40
34
|
} from "./testFixtures.js";
|
|
41
35
|
export type { TestFixture } from "./testFixtures.js";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { spawn } from "child_process";
|
|
2
1
|
import { existsSync } from "fs";
|
|
3
2
|
import { resolve } from "path";
|
|
4
3
|
import { loadUserConfig } from "../core/config.js";
|
|
4
|
+
import { runCli } from "../utils/runCli.js";
|
|
5
5
|
|
|
6
6
|
interface RunMoveTestsOptions {
|
|
7
|
-
filter?: string;
|
|
8
|
-
ignoreWarnings?: boolean;
|
|
9
|
-
skipIfMissing?: boolean; // If true, skip gracefully when Move dir missing (for orchestrated tests)
|
|
7
|
+
filter?: string | undefined;
|
|
8
|
+
ignoreWarnings?: boolean | undefined;
|
|
9
|
+
skipIfMissing?: boolean | undefined; // If true, skip gracefully when Move dir missing (for orchestrated tests)
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
/**
|
|
@@ -44,25 +44,29 @@ export async function runMoveTests(options: RunMoveTestsOptions = {}): Promise<v
|
|
|
44
44
|
args.push("--ignore-compile-warnings");
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
let result;
|
|
48
|
+
try {
|
|
49
|
+
result = await runCli(
|
|
50
|
+
{
|
|
51
|
+
command: "movement",
|
|
52
|
+
args,
|
|
53
|
+
cwd: process.cwd(),
|
|
54
|
+
inheritStdio: true,
|
|
55
|
+
},
|
|
56
|
+
{ throwOnNonZeroExit: false }
|
|
57
|
+
);
|
|
58
|
+
} catch (error) {
|
|
59
|
+
// Spawn-time failure (ENOENT, etc.). The original code logged a
|
|
60
|
+
// Movement-CLI-install hint here; keep that.
|
|
61
|
+
console.error(`Failed to run Move tests: ${(error as Error).message}`);
|
|
62
|
+
console.error(" Make sure Movement CLI is installed");
|
|
63
|
+
throw error;
|
|
64
|
+
}
|
|
52
65
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
} else {
|
|
58
|
-
reject(new Error("Move tests failed"));
|
|
59
|
-
}
|
|
60
|
-
});
|
|
66
|
+
if (result.exitCode === 0) {
|
|
67
|
+
console.log("\n✓ Move tests passed");
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
61
70
|
|
|
62
|
-
|
|
63
|
-
console.error(`Failed to run Move tests: ${error.message}`);
|
|
64
|
-
console.error(" Make sure Movement CLI is installed");
|
|
65
|
-
reject(error);
|
|
66
|
-
});
|
|
67
|
-
});
|
|
71
|
+
throw new Error("Move tests failed");
|
|
68
72
|
}
|
|
@@ -29,9 +29,10 @@ export async function fetchLatestVersion(
|
|
|
29
29
|
? setTimeout(() => controller.abort(), timeout)
|
|
30
30
|
: undefined;
|
|
31
31
|
|
|
32
|
-
const response = await fetch(
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
const response = await fetch(
|
|
33
|
+
`https://registry.npmjs.org/${packageName}`,
|
|
34
|
+
controller ? { signal: controller.signal } : {}
|
|
35
|
+
);
|
|
35
36
|
|
|
36
37
|
if (timeoutId) clearTimeout(timeoutId);
|
|
37
38
|
|
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
* Handles variable-length versions (1.2, 1.2.3, 1.2.3.4, etc.)
|
|
5
5
|
*/
|
|
6
6
|
export function isNewerVersion(currentVersion: string, newVersion: string): boolean {
|
|
7
|
-
// Remove any pre-release tags (e.g., -alpha.0, -beta.1)
|
|
8
|
-
|
|
9
|
-
const
|
|
7
|
+
// Remove any pre-release tags (e.g., -alpha.0, -beta.1).
|
|
8
|
+
// String.split always returns ≥1 element; `?? ""` is a no-op narrowing.
|
|
9
|
+
const cleanCurrent = currentVersion.split("-")[0] ?? "";
|
|
10
|
+
const cleanNew = newVersion.split("-")[0] ?? "";
|
|
10
11
|
|
|
11
12
|
// Split and validate numeric parts
|
|
12
13
|
const currentParts = cleanCurrent.split(".").map((part) => {
|
package/src/helpers/setup.ts
CHANGED
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
import { loadUserConfig, resolveNetworkConfig } from "../core/config.js";
|
|
9
9
|
import { MovehatConfig } from "../types/config.js";
|
|
10
10
|
import { AccountManager } from "../core/AccountManager.js";
|
|
11
|
+
import { logger } from "../ui/index.js";
|
|
11
12
|
|
|
12
13
|
export interface TestEnvironment {
|
|
13
14
|
aptos: Aptos;
|
|
@@ -21,8 +22,10 @@ export async function setupTestEnvironment(networkName?: string): Promise<TestEn
|
|
|
21
22
|
const network = networkName || process.env.MH_CLI_NETWORK;
|
|
22
23
|
const config = await resolveNetworkConfig(userConfig, network);
|
|
23
24
|
|
|
25
|
+
// Movement Network uses custom chain IDs, so we need to use Network.CUSTOM
|
|
26
|
+
// and let the SDK fetch the actual chainId from the node
|
|
24
27
|
const aptosConfig = new AptosConfig({
|
|
25
|
-
network:
|
|
28
|
+
network: Network.CUSTOM,
|
|
26
29
|
fullnode: config.rpc,
|
|
27
30
|
});
|
|
28
31
|
|
|
@@ -31,10 +34,11 @@ export async function setupTestEnvironment(networkName?: string): Promise<TestEn
|
|
|
31
34
|
// Load account using AccountManager
|
|
32
35
|
const account = AccountManager.loadAccountFromPrivateKey(config.privateKey);
|
|
33
36
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
logger.success("Test environment ready");
|
|
38
|
+
logger.plain(` Account: ${account.accountAddress.toString()}`);
|
|
39
|
+
logger.plain(` Network: ${config.network}`);
|
|
40
|
+
logger.plain(` RPC: ${config.rpc}`);
|
|
41
|
+
logger.newline();
|
|
38
42
|
|
|
39
43
|
return {
|
|
40
44
|
aptos,
|