From 3211e84f23f4b10613c198296f8736728f284a8c Mon Sep 17 00:00:00 2001 From: friedger Date: Thu, 18 Apr 2024 12:39:08 +0200 Subject: [PATCH 1/4] fix: use functionAnnotation for mine-blocks-before --- packages/clarunit/Clarinet.toml | 5 +++++ .../deployments/default.simnet-plan.yaml | 10 +++++++++- packages/clarunit/package-lock.json | 4 ++-- packages/clarunit/src/clarunit-generator.ts | 18 +++++++++--------- packages/clarunit/tests/clarunit.test.ts | 3 +++ .../contracts/generator-tests/mine-blocks.clar | 12 ++++++++++++ 6 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 packages/clarunit/tests/clarunit.test.ts create mode 100644 packages/clarunit/tests/contracts/generator-tests/mine-blocks.clar diff --git a/packages/clarunit/Clarinet.toml b/packages/clarunit/Clarinet.toml index 7731877..a10cd9d 100644 --- a/packages/clarunit/Clarinet.toml +++ b/packages/clarunit/Clarinet.toml @@ -6,6 +6,11 @@ telemetry = false cache_dir = './.cache' requirements = [] +[contracts.mine-blocks_test] +path = "tests/contracts/generator-tests/mine-blocks.clar" +clarity_version = 2 +epoch = "2.1" + [repl.analysis] passes = ['check_checker'] diff --git a/packages/clarunit/deployments/default.simnet-plan.yaml b/packages/clarunit/deployments/default.simnet-plan.yaml index cff46cd..e29808b 100644 --- a/packages/clarunit/deployments/default.simnet-plan.yaml +++ b/packages/clarunit/deployments/default.simnet-plan.yaml @@ -46,4 +46,12 @@ genesis: - cost-voting - bns plan: - batches: [] + batches: + - id: 0 + transactions: + - emulated-contract-publish: + contract-name: mine-blocks_test + emulated-sender: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM + path: tests/contracts/generator-tests/mine-blocks.clar + clarity-version: 2 + epoch: "2.1" diff --git a/packages/clarunit/package-lock.json b/packages/clarunit/package-lock.json index 525c395..cb63827 100644 --- a/packages/clarunit/package-lock.json +++ b/packages/clarunit/package-lock.json @@ -1,12 +1,12 @@ { "name": "@stacks/clarunit", - "version": "0.0.1", + "version": "0.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@stacks/clarunit", - "version": "0.0.1", + "version": "0.0.2", "license": "MIT", "dependencies": { "@hirosystems/clarinet-sdk": "^2.4.1", diff --git a/packages/clarunit/src/clarunit-generator.ts b/packages/clarunit/src/clarunit-generator.ts index 9e225c2..24b2d9c 100644 --- a/packages/clarunit/src/clarunit-generator.ts +++ b/packages/clarunit/src/clarunit-generator.ts @@ -1,15 +1,13 @@ import { Simnet, tx } from "@hirosystems/clarinet-sdk"; import { describe, it } from "vitest"; -import { - extractTestAnnotations, -} from "./parser/clarity-parser"; +import { extractTestAnnotations } from "./parser/clarity-parser"; import { expectOkTrue, isValidTestFunction } from "./parser/test-helpers"; import { FunctionAnnotations } from "./parser/clarity-parser-flow-tests"; /** * Returns true if the contract is a test contract * @param contractName name of the contract - * @returns + * @returns */ function isTestContract(contractName: string) { return ( @@ -32,22 +30,24 @@ export function generateUnitTests(simnet: Simnet) { const hasDefaultPrepareFunction = contract.functions.findIndex((f) => f.name === "prepare") >= 0; + const source = simnet.getContractSource(contractFQN)!; + const annotations: any = extractTestAnnotations(source); + contract.functions.forEach((functionCall) => { if (!isValidTestFunction(functionCall)) { return; } const functionName = functionCall.name; - const source = simnet.getContractSource(contractFQN)!; - const annotations: any = extractTestAnnotations(source); const functionAnnotations: FunctionAnnotations = annotations[functionName] || {}; const mineBlocksBefore = - parseInt(annotations["mine-blocks-before"] as string) || 0; + parseInt(functionAnnotations["mine-blocks-before"] as string) || 0; - const testDescription = `${functionCall.name}${functionAnnotations.name ? `: ${functionAnnotations.name}` : "" - }`; + const testDescription = `${functionCall.name}${ + functionAnnotations.name ? `: ${functionAnnotations.name}` : "" + }`; it(testDescription, () => { // handle prepare function for this test if (hasDefaultPrepareFunction && !functionAnnotations.prepare) diff --git a/packages/clarunit/tests/clarunit.test.ts b/packages/clarunit/tests/clarunit.test.ts new file mode 100644 index 0000000..150b348 --- /dev/null +++ b/packages/clarunit/tests/clarunit.test.ts @@ -0,0 +1,3 @@ +import { clarunit } from "../src/index"; + +clarunit(simnet); diff --git a/packages/clarunit/tests/contracts/generator-tests/mine-blocks.clar b/packages/clarunit/tests/contracts/generator-tests/mine-blocks.clar new file mode 100644 index 0000000..b6aede4 --- /dev/null +++ b/packages/clarunit/tests/contracts/generator-tests/mine-blocks.clar @@ -0,0 +1,12 @@ +;; test block-height at launch +;; One block is need to advance to epoch 2.5 +(define-public (test-block-height-at-launch) + (begin + (asserts! (is-eq u1 block-height) (err (concat "expected block height 1, found " (int-to-ascii block-height)))) + (ok true))) + +;; @mine-blocks-before 10 +(define-public (test-mine-blocks-before) + (begin + (asserts! (is-eq u11 block-height) (err (concat "expected block height 10, found " (int-to-ascii block-height)))) + (ok true))) \ No newline at end of file From e78d3b7299dc7ad30022c7cf3b8ce22300928b93 Mon Sep 17 00:00:00 2001 From: friedger Date: Thu, 18 Apr 2024 12:41:32 +0200 Subject: [PATCH 2/4] chore: add changelog --- packages/clarunit/CHANGELOG.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/clarunit/CHANGELOG.md b/packages/clarunit/CHANGELOG.md index 62aca76..cfb3f45 100644 --- a/packages/clarunit/CHANGELOG.md +++ b/packages/clarunit/CHANGELOG.md @@ -3,5 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## Unrelease + +- fixes mine-blocks-before annotation + ## [0.0.1](https://github.com/stacks-network/stacks-test-tools) (2024-01-22) -Initial version + +Initial version From 22083a94576d7fc645442db7f00efa34f82f948c Mon Sep 17 00:00:00 2001 From: friedger Date: Thu, 18 Apr 2024 12:57:35 +0200 Subject: [PATCH 3/4] fix: use functionAnnotations for caller --- packages/clarunit/Clarinet.toml | 4 +-- .../deployments/default.simnet-plan.yaml | 4 +-- packages/clarunit/src/clarunit-generator.ts | 9 ++++--- .../generator-tests/annotations_test.clar | 26 +++++++++++++++++++ .../generator-tests/mine-blocks.clar | 12 --------- 5 files changed, 35 insertions(+), 20 deletions(-) create mode 100644 packages/clarunit/tests/contracts/generator-tests/annotations_test.clar delete mode 100644 packages/clarunit/tests/contracts/generator-tests/mine-blocks.clar diff --git a/packages/clarunit/Clarinet.toml b/packages/clarunit/Clarinet.toml index a10cd9d..230c797 100644 --- a/packages/clarunit/Clarinet.toml +++ b/packages/clarunit/Clarinet.toml @@ -6,8 +6,8 @@ telemetry = false cache_dir = './.cache' requirements = [] -[contracts.mine-blocks_test] -path = "tests/contracts/generator-tests/mine-blocks.clar" +[contracts.annotations_test] +path = "tests/contracts/generator-tests/annotations_test.clar" clarity_version = 2 epoch = "2.1" diff --git a/packages/clarunit/deployments/default.simnet-plan.yaml b/packages/clarunit/deployments/default.simnet-plan.yaml index e29808b..f9fb9e9 100644 --- a/packages/clarunit/deployments/default.simnet-plan.yaml +++ b/packages/clarunit/deployments/default.simnet-plan.yaml @@ -50,8 +50,8 @@ plan: - id: 0 transactions: - emulated-contract-publish: - contract-name: mine-blocks_test + contract-name: annotations_test emulated-sender: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM - path: tests/contracts/generator-tests/mine-blocks.clar + path: tests/contracts/generator-tests/annotations_test.clar clarity-version: 2 epoch: "2.1" diff --git a/packages/clarunit/src/clarunit-generator.ts b/packages/clarunit/src/clarunit-generator.ts index 24b2d9c..94e6a45 100644 --- a/packages/clarunit/src/clarunit-generator.ts +++ b/packages/clarunit/src/clarunit-generator.ts @@ -56,10 +56,11 @@ export function generateUnitTests(simnet: Simnet) { delete functionAnnotations.prepare; // handle caller address for this test - const callerAddress = functionAnnotations.caller - ? annotations.caller[0] === "'" - ? `${(annotations.caller as string).substring(1)}` - : accounts.get(annotations.caller)! + const callerString = functionAnnotations.caller as string; + const callerAddress = callerString + ? callerString[0] === "'" + ? `${callerString.substring(1)}` + : accounts.get(callerString)! : accounts.get("deployer")!; if (functionAnnotations.prepare) { diff --git a/packages/clarunit/tests/contracts/generator-tests/annotations_test.clar b/packages/clarunit/tests/contracts/generator-tests/annotations_test.clar new file mode 100644 index 0000000..5a60a03 --- /dev/null +++ b/packages/clarunit/tests/contracts/generator-tests/annotations_test.clar @@ -0,0 +1,26 @@ +;; test block-height at launch +;; One block is need to advance to epoch 2.5 +(define-public (test-block-height-at-launch) + (begin + (asserts! (is-eq u1 block-height) (err (concat "expected block height 1, found " (int-to-ascii block-height)))) + (ok true))) + +;; @mine-blocks-before 10 +(define-public (test-mine-blocks-before) + (begin + (asserts! (is-eq u11 block-height) (err (concat "expected block height 10, found " (int-to-ascii block-height)))) + (ok true))) + +;; @caller wallet_1 +(define-public (test-caller) + (begin + (asserts! (is-eq tx-sender 'ST1SJ3DTE5DN7X54YDH5D64R3BCB6A2AG2ZQ8YPD5) (err tx-sender)) + (asserts! (is-eq contract-caller 'ST1SJ3DTE5DN7X54YDH5D64R3BCB6A2AG2ZQ8YPD5) (err contract-caller)) + (ok true))) + +;; @caller 'SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE +(define-public (test-caller-2) + (begin + (asserts! (is-eq tx-sender 'SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE) (err tx-sender)) + (asserts! (is-eq contract-caller 'SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE) (err contract-caller)) + (ok true))) \ No newline at end of file diff --git a/packages/clarunit/tests/contracts/generator-tests/mine-blocks.clar b/packages/clarunit/tests/contracts/generator-tests/mine-blocks.clar deleted file mode 100644 index b6aede4..0000000 --- a/packages/clarunit/tests/contracts/generator-tests/mine-blocks.clar +++ /dev/null @@ -1,12 +0,0 @@ -;; test block-height at launch -;; One block is need to advance to epoch 2.5 -(define-public (test-block-height-at-launch) - (begin - (asserts! (is-eq u1 block-height) (err (concat "expected block height 1, found " (int-to-ascii block-height)))) - (ok true))) - -;; @mine-blocks-before 10 -(define-public (test-mine-blocks-before) - (begin - (asserts! (is-eq u11 block-height) (err (concat "expected block height 10, found " (int-to-ascii block-height)))) - (ok true))) \ No newline at end of file From 7eab0f8008b0931ed606951b58738949259a0bd2 Mon Sep 17 00:00:00 2001 From: friedger Date: Thu, 18 Apr 2024 12:58:56 +0200 Subject: [PATCH 4/4] chore: add changelog --- packages/clarunit/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/clarunit/CHANGELOG.md b/packages/clarunit/CHANGELOG.md index cfb3f45..8fd9c88 100644 --- a/packages/clarunit/CHANGELOG.md +++ b/packages/clarunit/CHANGELOG.md @@ -5,7 +5,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ## Unrelease -- fixes mine-blocks-before annotation +- fixes mine-blocks-before annotation and caller annotation ## [0.0.1](https://github.com/stacks-network/stacks-test-tools) (2024-01-22)