From e6a09249ef9503ae788f339713a05116a09b17d0 Mon Sep 17 00:00:00 2001 From: Kate Sills Date: Tue, 16 Mar 2021 10:45:43 -0700 Subject: [PATCH] refactor: ERTP payments as virtual objects --- packages/ERTP/globals.d.ts | 2 + packages/ERTP/jsconfig.json | 2 +- packages/ERTP/package.json | 3 +- packages/ERTP/src/issuer.js | 22 ++---- packages/ERTP/src/payment.js | 22 ++++++ .../basicFunctionality/bootstrap.js | 31 ++++++++ .../test-basicFunctionality.js | 34 +++++++++ .../basicFunctionality/vat-alice.js | 69 +++++++++++++++++ .../splitPayments/test-splitPayments.js | 3 + .../mathHelpers/test-natMathHelpers.js | 3 + .../mathHelpers/test-setMathHelpers.js | 3 + .../mathHelpers/test-strSetMathHelpers.js | 3 + .../ERTP/test/unitTests/test-interfaces.js | 3 + .../ERTP/test/unitTests/test-issuerObj.js | 3 + packages/ERTP/test/unitTests/test-mintObj.js | 2 + packages/SwingSet/package.json | 3 +- packages/cosmic-swingset/globals.d.ts | 2 + packages/cosmic-swingset/jsconfig.json | 2 +- .../api/test/test-getPursesNotifier.js | 2 +- .../api/test/test-lib-dehydrate.js | 2 +- .../api/test/test-lib-wallet.js | 2 +- packages/deploy-script-support/globals.d.ts | 2 + packages/deploy-script-support/jsconfig.json | 2 +- .../zoe/src/contractFacet/contractFacet.js | 4 +- .../zoe/src/contractFacet/evalContractCode.js | 4 + packages/zoe/src/zoeService/zoe.js | 8 +- packages/zoe/test/minimalMakeKindContract.js | 10 +++ .../test/swingsetTests/makeKind/bootstrap.js | 20 +++++ .../swingsetTests/makeKind/test-makeKind.js | 74 +++++++++++++++++++ .../test/swingsetTests/makeKind/vat-alice.js | 17 +++++ .../test/swingsetTests/makeKind/vat-zoe.js | 10 +++ .../contractSupport/test-bondingCurves.js | 2 +- .../contractSupport/test-depositTo.js | 2 +- .../unitTests/contractSupport/test-offerTo.js | 2 +- .../contractSupport/test-percentMath.js | 2 +- .../contractSupport/test-percentSupport.js | 4 +- .../unitTests/contractSupport/test-ratio.js | 4 +- .../contractSupport/test-stateMachine.js | 2 +- .../contractSupport/test-withdrawFrom.js | 2 +- .../contractSupport/test-zoeHelpers.js | 2 +- .../test/unitTests/contracts/loan/helpers.js | 2 +- .../contracts/loan/test-addCollateral.js | 2 +- .../unitTests/contracts/loan/test-borrow.js | 2 +- .../unitTests/contracts/loan/test-close.js | 2 +- .../unitTests/contracts/loan/test-lend.js | 2 +- .../contracts/loan/test-liquidate.js | 2 +- .../unitTests/contracts/loan/test-loan-e2e.js | 2 +- .../contracts/loan/test-updateDebt.js | 2 +- .../unitTests/contracts/test-atomicSwap.js | 2 +- .../contracts/test-automaticRefund.js | 2 +- .../test/unitTests/contracts/test-autoswap.js | 2 +- .../unitTests/contracts/test-autoswapPool.js | 3 +- .../test/unitTests/contracts/test-barter.js | 2 +- .../contracts/test-brokenContract.js | 3 +- .../contracts/test-callSpread-calculation.js | 2 +- .../unitTests/contracts/test-callSpread.js | 2 +- .../unitTests/contracts/test-coveredCall.js | 2 +- .../unitTests/contracts/test-escrowToVote.js | 3 +- .../unitTests/contracts/test-mintPayments.js | 2 +- .../contracts/test-multipoolAutoswap.js | 3 +- .../test/unitTests/contracts/test-oracle.js | 2 +- .../test/unitTests/contracts/test-otcDesk.js | 2 +- .../contracts/test-priceAggregator.js | 2 +- .../contracts/test-secondPriceAuction.js | 2 +- .../unitTests/contracts/test-sellTickets.js | 2 +- .../contracts/test-simpleExchange.js | 2 +- .../contracts/test-throwInOfferHandler.js | 2 +- .../test/unitTests/contracts/test-useObj.js | 2 +- .../zoe/test/unitTests/test-cleanProposal.js | 2 +- .../test/unitTests/test-fakePriceAuthority.js | 2 +- packages/zoe/test/unitTests/test-makeKind.js | 23 ++++++ .../zoe/test/unitTests/test-manualTimer.js | 2 +- .../test/unitTests/test-objArrayConversion.js | 2 +- .../zoe/test/unitTests/test-offerSafety.js | 4 +- .../test/unitTests/test-rightsConservation.js | 2 +- .../zoe/test/unitTests/test-scriptedOracle.js | 2 +- packages/zoe/test/unitTests/test-zoe-env.js | 2 + packages/zoe/test/unitTests/test-zoe.js | 2 +- packages/zoe/test/unitTests/zcf/test-zcf.js | 2 +- .../zoe/test/unitTests/zcf/test-zcfSeat.js | 2 +- .../test/unitTests/zcf/test-zoeHelpersWZcf.js | 2 +- packages/zoe/tools/prepare-test-env.js | 2 + 82 files changed, 425 insertions(+), 77 deletions(-) create mode 100644 packages/ERTP/globals.d.ts create mode 100644 packages/ERTP/src/payment.js create mode 100644 packages/ERTP/test/swingsetTests/basicFunctionality/bootstrap.js create mode 100644 packages/ERTP/test/swingsetTests/basicFunctionality/test-basicFunctionality.js create mode 100644 packages/ERTP/test/swingsetTests/basicFunctionality/vat-alice.js create mode 100644 packages/cosmic-swingset/globals.d.ts create mode 100644 packages/deploy-script-support/globals.d.ts create mode 100644 packages/zoe/test/minimalMakeKindContract.js create mode 100644 packages/zoe/test/swingsetTests/makeKind/bootstrap.js create mode 100644 packages/zoe/test/swingsetTests/makeKind/test-makeKind.js create mode 100644 packages/zoe/test/swingsetTests/makeKind/vat-alice.js create mode 100644 packages/zoe/test/swingsetTests/makeKind/vat-zoe.js create mode 100644 packages/zoe/test/unitTests/test-makeKind.js diff --git a/packages/ERTP/globals.d.ts b/packages/ERTP/globals.d.ts new file mode 100644 index 00000000000..6302a6373f4 --- /dev/null +++ b/packages/ERTP/globals.d.ts @@ -0,0 +1,2 @@ +declare var makeKind: function; +declare var makeWeakStore: function; diff --git a/packages/ERTP/jsconfig.json b/packages/ERTP/jsconfig.json index 6aa8279c4c4..291db11d535 100644 --- a/packages/ERTP/jsconfig.json +++ b/packages/ERTP/jsconfig.json @@ -14,5 +14,5 @@ "strictNullChecks": true, "moduleResolution": "node", }, - "include": ["src/**/*.js", "exported.js"], + "include": ["src/**/*.js", "exported.js", "globals.d.ts"], } diff --git a/packages/ERTP/package.json b/packages/ERTP/package.json index 5b72a9d5d46..71ed7927f45 100644 --- a/packages/ERTP/package.json +++ b/packages/ERTP/package.json @@ -73,8 +73,7 @@ "test/**/test-*.js" ], "require": [ - "esm", - "@agoric/install-ses" + "esm" ] }, "eslintConfig": { diff --git a/packages/ERTP/src/issuer.js b/packages/ERTP/src/issuer.js index f41baede193..493b0549567 100644 --- a/packages/ERTP/src/issuer.js +++ b/packages/ERTP/src/issuer.js @@ -1,6 +1,5 @@ -// Copyright (C) 2019 Agoric, under Apache License 2.0 - // @ts-check +/* global makeWeakStore */ import { assert, details as X } from '@agoric/assert'; import { makeExternalStore } from '@agoric/store'; @@ -13,6 +12,7 @@ import { amountMath, MathKind } from './amountMath'; import { makeAmountMath } from './deprecatedAmountMath'; import { makeFarName, ERTPKind } from './interfaces'; import { coerceDisplayInfo } from './displayInfo'; +import { makePaymentMaker } from './payment'; import './types'; @@ -52,17 +52,10 @@ function makeIssuerKit( /** @type {Amount} */ const emptyAmount = amountMath.makeEmpty(amountMathKind, brand); - const { - makeInstance: makePayment, - makeWeakStore: makePaymentWeakStore, - } = makeExternalStore('payment', () => - Far(makeFarName(allegedName, ERTPKind.PAYMENT), { - getAllegedBrand: () => brand, - }), - ); + const makePayment = makePaymentMaker(allegedName, brand); /** @type {WeakStore} */ - const paymentLedger = makePaymentWeakStore(); + const paymentLedger = makeWeakStore('payment'); function assertKnownPayment(payment) { assert(paymentLedger.has(payment), X`payment not found for ${allegedName}`); @@ -167,12 +160,13 @@ function makeIssuerKit( // other uses. if (payments.length > 1) { - const paymentSet = new Set(); + // TODO: replace with a Set that understands virtual objects + const antiAliasingStore = makeWeakStore('payment'); payments.forEach(payment => { - if (paymentSet.has(payment)) { + if (antiAliasingStore.has(payment)) { throw new Error('same payment seen twice'); } - paymentSet.add(payment); + antiAliasingStore.init(payment, undefined); }); } diff --git a/packages/ERTP/src/payment.js b/packages/ERTP/src/payment.js new file mode 100644 index 00000000000..825ede46136 --- /dev/null +++ b/packages/ERTP/src/payment.js @@ -0,0 +1,22 @@ +// @ts-check +/* global makeKind */ + +import { Far } from '@agoric/marshal'; +import { makeFarName, ERTPKind } from './interfaces'; + +export const makePaymentMaker = (allegedName, brand) => { + const paymentVOFactory = state => { + return { + init: b => (state.brand = b), + self: Far(makeFarName(allegedName, ERTPKind.PAYMENT), { + getAllegedBrand: () => state.brand, + }), + }; + }; + + const paymentMaker = makeKind(paymentVOFactory); + + const makePayment = () => paymentMaker(brand); + + return makePayment; +}; diff --git a/packages/ERTP/test/swingsetTests/basicFunctionality/bootstrap.js b/packages/ERTP/test/swingsetTests/basicFunctionality/bootstrap.js new file mode 100644 index 00000000000..ec031a4b76d --- /dev/null +++ b/packages/ERTP/test/swingsetTests/basicFunctionality/bootstrap.js @@ -0,0 +1,31 @@ +import { E } from '@agoric/eventual-send'; +import { assert, details as X } from '@agoric/assert'; +import { makeIssuerKit } from '../../../src'; + +export function buildRootObject(vatPowers, vatParameters) { + const arg0 = vatParameters.argv[0]; + + function testBasicFunctionality(aliceMaker) { + vatPowers.testLog('start test basic functionality'); + const { mint: moolaMint, issuer, amountMath } = makeIssuerKit('moola'); + const moolaPayment = moolaMint.mintPayment(amountMath.make(1000)); + + const aliceP = E(aliceMaker).make(issuer, amountMath, moolaPayment); + return E(aliceP).testBasicFunctionality(); + } + + const obj0 = { + async bootstrap(vats) { + switch (arg0) { + case 'basicFunctionality': { + const aliceMaker = await E(vats.alice).makeAliceMaker(); + return testBasicFunctionality(aliceMaker); + } + default: { + assert.fail(X`unrecognized argument value ${arg0}`); + } + } + }, + }; + return harden(obj0); +} diff --git a/packages/ERTP/test/swingsetTests/basicFunctionality/test-basicFunctionality.js b/packages/ERTP/test/swingsetTests/basicFunctionality/test-basicFunctionality.js new file mode 100644 index 00000000000..0bcbbbe773c --- /dev/null +++ b/packages/ERTP/test/swingsetTests/basicFunctionality/test-basicFunctionality.js @@ -0,0 +1,34 @@ +// @ts-check +/* global __dirname */ + +// eslint-disable-next-line import/no-extraneous-dependencies +import '@agoric/swingset-vat/tools/prepare-test-env'; + +// eslint-disable-next-line import/no-extraneous-dependencies +import test from 'ava'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { loadBasedir, buildVatController } from '@agoric/swingset-vat'; +import path from 'path'; + +async function main(basedir, argv) { + const dir = path.resolve(`${__dirname}/..`, basedir); + const config = await loadBasedir(dir); + const controller = await buildVatController(config, argv); + await controller.run(); + return controller.dump(); +} + +const expected = [ + 'start test basic functionality', + 'isLive: true', + 'getAmountOf: {"brand":{},"value":1000}', + 'newPayment amount: {"brand":{},"value":1000}', + 'burned amount: {"brand":{},"value":200}', + 'claimedPayment amount: {"brand":{},"value":200}', + 'combinedPayment amount: {"brand":{},"value":600}', +]; + +test('test splitPayments', async t => { + const dump = await main('basicFunctionality', ['basicFunctionality']); + t.deepEqual(dump.log, expected); +}); diff --git a/packages/ERTP/test/swingsetTests/basicFunctionality/vat-alice.js b/packages/ERTP/test/swingsetTests/basicFunctionality/vat-alice.js new file mode 100644 index 00000000000..382404ffcb2 --- /dev/null +++ b/packages/ERTP/test/swingsetTests/basicFunctionality/vat-alice.js @@ -0,0 +1,69 @@ +import { E } from '@agoric/eventual-send'; + +function makeAliceMaker(log) { + return harden({ + make(issuer, amountMath, oldPaymentP) { + const alice = harden({ + async testBasicFunctionality() { + // isLive + const alive = await E(issuer).isLive(oldPaymentP); + log('isLive: ', alive); + + // getAmountOf + const amount = await E(issuer).getAmountOf(oldPaymentP); + log('getAmountOf: ', amount); + + // Make Purse + + const purse = E(issuer).makeEmptyPurse(); + + // Deposit Payment + + const payment = await oldPaymentP; + await E(purse).deposit(payment); + + // Withdraw Payment + const newPayment = E(purse).withdraw(amount); + const newAmount = await E(issuer).getAmountOf(newPayment); + log('newPayment amount: ', newAmount); + + // splitMany + const moola200 = await E(amountMath).make(200); + const [paymentToBurn, paymentToClaim, ...payments] = await E( + issuer, + ).splitMany( + newPayment, + harden([moola200, moola200, moola200, moola200, moola200]), + ); + + // burn + const burnedAmount = await E(issuer).burn(paymentToBurn); + log('burned amount: ', burnedAmount); + + // claim + const claimedPayment = await E(issuer).claim(paymentToClaim); + const claimedPaymentAmount = await E(issuer).getAmountOf( + claimedPayment, + ); + log('claimedPayment amount: ', claimedPaymentAmount); + + // combine + const combinedPayment = E(issuer).combine(payments); + const combinedPaymentAmount = await E(issuer).getAmountOf( + combinedPayment, + ); + log('combinedPayment amount: ', combinedPaymentAmount); + }, + }); + return alice; + }, + }); +} + +export function buildRootObject(vatPowers) { + return harden({ + makeAliceMaker() { + return harden(makeAliceMaker(vatPowers.testLog)); + }, + }); +} diff --git a/packages/ERTP/test/swingsetTests/splitPayments/test-splitPayments.js b/packages/ERTP/test/swingsetTests/splitPayments/test-splitPayments.js index aa394f62143..aed41a5b1ff 100644 --- a/packages/ERTP/test/swingsetTests/splitPayments/test-splitPayments.js +++ b/packages/ERTP/test/swingsetTests/splitPayments/test-splitPayments.js @@ -1,6 +1,9 @@ /* global __dirname */ // @ts-check +// eslint-disable-next-line import/no-extraneous-dependencies +import '@agoric/swingset-vat/tools/prepare-test-env'; + // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/ERTP/test/unitTests/mathHelpers/test-natMathHelpers.js b/packages/ERTP/test/unitTests/mathHelpers/test-natMathHelpers.js index 62e06fb6cfa..4b3c59bd652 100644 --- a/packages/ERTP/test/unitTests/mathHelpers/test-natMathHelpers.js +++ b/packages/ERTP/test/unitTests/mathHelpers/test-natMathHelpers.js @@ -1,5 +1,8 @@ // @ts-check +// eslint-disable-next-line import/no-extraneous-dependencies +import '@agoric/swingset-vat/tools/prepare-test-env'; + // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import { Far } from '@agoric/marshal'; diff --git a/packages/ERTP/test/unitTests/mathHelpers/test-setMathHelpers.js b/packages/ERTP/test/unitTests/mathHelpers/test-setMathHelpers.js index 4b0714b10b0..a02cf7314db 100644 --- a/packages/ERTP/test/unitTests/mathHelpers/test-setMathHelpers.js +++ b/packages/ERTP/test/unitTests/mathHelpers/test-setMathHelpers.js @@ -1,5 +1,8 @@ // @ts-check +// eslint-disable-next-line import/no-extraneous-dependencies +import '@agoric/swingset-vat/tools/prepare-test-env'; + // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/ERTP/test/unitTests/mathHelpers/test-strSetMathHelpers.js b/packages/ERTP/test/unitTests/mathHelpers/test-strSetMathHelpers.js index dfef5ebb5c6..5b44593edab 100644 --- a/packages/ERTP/test/unitTests/mathHelpers/test-strSetMathHelpers.js +++ b/packages/ERTP/test/unitTests/mathHelpers/test-strSetMathHelpers.js @@ -1,5 +1,8 @@ // @ts-check +// eslint-disable-next-line import/no-extraneous-dependencies +import '@agoric/swingset-vat/tools/prepare-test-env'; + // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import { amountMath as m, MathKind } from '../../../src'; diff --git a/packages/ERTP/test/unitTests/test-interfaces.js b/packages/ERTP/test/unitTests/test-interfaces.js index af8858f4b0d..e488ba33c29 100644 --- a/packages/ERTP/test/unitTests/test-interfaces.js +++ b/packages/ERTP/test/unitTests/test-interfaces.js @@ -1,5 +1,8 @@ // @ts-check +// eslint-disable-next-line import/no-extraneous-dependencies +import '@agoric/swingset-vat/tools/prepare-test-env'; + // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import { getInterfaceOf } from '@agoric/marshal'; diff --git a/packages/ERTP/test/unitTests/test-issuerObj.js b/packages/ERTP/test/unitTests/test-issuerObj.js index 9179a70f8e0..8113147cdae 100644 --- a/packages/ERTP/test/unitTests/test-issuerObj.js +++ b/packages/ERTP/test/unitTests/test-issuerObj.js @@ -1,5 +1,8 @@ // @ts-check +// eslint-disable-next-line import/no-extraneous-dependencies +import '@agoric/swingset-vat/tools/prepare-test-env'; + // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import { E } from '@agoric/eventual-send'; diff --git a/packages/ERTP/test/unitTests/test-mintObj.js b/packages/ERTP/test/unitTests/test-mintObj.js index 671018ab7bb..acb70fd0c7f 100644 --- a/packages/ERTP/test/unitTests/test-mintObj.js +++ b/packages/ERTP/test/unitTests/test-mintObj.js @@ -1,4 +1,6 @@ // @ts-check +// eslint-disable-next-line import/no-extraneous-dependencies +import '@agoric/swingset-vat/tools/prepare-test-env'; import { Far } from '@agoric/marshal'; // eslint-disable-next-line import/no-extraneous-dependencies diff --git a/packages/SwingSet/package.json b/packages/SwingSet/package.json index 2a9f61f7fd6..4db83264f51 100644 --- a/packages/SwingSet/package.json +++ b/packages/SwingSet/package.json @@ -63,7 +63,8 @@ "files": [ "bin/vat", "src/**/*.js", - "exported.js" + "exported.js", + "tools" ], "repository": { "type": "git", diff --git a/packages/cosmic-swingset/globals.d.ts b/packages/cosmic-swingset/globals.d.ts new file mode 100644 index 00000000000..6302a6373f4 --- /dev/null +++ b/packages/cosmic-swingset/globals.d.ts @@ -0,0 +1,2 @@ +declare var makeKind: function; +declare var makeWeakStore: function; diff --git a/packages/cosmic-swingset/jsconfig.json b/packages/cosmic-swingset/jsconfig.json index bb589e78a4e..c6b21118112 100644 --- a/packages/cosmic-swingset/jsconfig.json +++ b/packages/cosmic-swingset/jsconfig.json @@ -14,5 +14,5 @@ "strictNullChecks": true, "moduleResolution": "node", }, - "include": ["lib/**/*.js", "exported.js"], + "include": ["lib/**/*.js", "exported.js", "globals.d.ts"], } diff --git a/packages/dapp-svelte-wallet/api/test/test-getPursesNotifier.js b/packages/dapp-svelte-wallet/api/test/test-getPursesNotifier.js index d7ef14356ee..7cb51b5eaa1 100644 --- a/packages/dapp-svelte-wallet/api/test/test-getPursesNotifier.js +++ b/packages/dapp-svelte-wallet/api/test/test-getPursesNotifier.js @@ -1,6 +1,6 @@ // @ts-check // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; // calls lockdown() +import '@agoric/zoe/tools/prepare-test-env'; // calls lockdown() // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/dapp-svelte-wallet/api/test/test-lib-dehydrate.js b/packages/dapp-svelte-wallet/api/test/test-lib-dehydrate.js index 04a8c5fde71..ce3600656f3 100644 --- a/packages/dapp-svelte-wallet/api/test/test-lib-dehydrate.js +++ b/packages/dapp-svelte-wallet/api/test/test-lib-dehydrate.js @@ -1,4 +1,4 @@ -import '@agoric/install-ses'; // calls lockdown() +import '@agoric/zoe/tools/prepare-test-env'; // calls lockdown() // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import { Far } from '@agoric/marshal'; diff --git a/packages/dapp-svelte-wallet/api/test/test-lib-wallet.js b/packages/dapp-svelte-wallet/api/test/test-lib-wallet.js index 5a875e54537..004ef63b0c0 100644 --- a/packages/dapp-svelte-wallet/api/test/test-lib-wallet.js +++ b/packages/dapp-svelte-wallet/api/test/test-lib-wallet.js @@ -1,7 +1,7 @@ /* global require */ // @ts-check // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; // calls lockdown() +import '@agoric/zoe/tools/prepare-test-env'; // calls lockdown() // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; // eslint-disable-next-line import/no-extraneous-dependencies diff --git a/packages/deploy-script-support/globals.d.ts b/packages/deploy-script-support/globals.d.ts new file mode 100644 index 00000000000..6302a6373f4 --- /dev/null +++ b/packages/deploy-script-support/globals.d.ts @@ -0,0 +1,2 @@ +declare var makeKind: function; +declare var makeWeakStore: function; diff --git a/packages/deploy-script-support/jsconfig.json b/packages/deploy-script-support/jsconfig.json index 6aa8279c4c4..291db11d535 100644 --- a/packages/deploy-script-support/jsconfig.json +++ b/packages/deploy-script-support/jsconfig.json @@ -14,5 +14,5 @@ "strictNullChecks": true, "moduleResolution": "node", }, - "include": ["src/**/*.js", "exported.js"], + "include": ["src/**/*.js", "exported.js", "globals.d.ts"], } diff --git a/packages/zoe/src/contractFacet/contractFacet.js b/packages/zoe/src/contractFacet/contractFacet.js index 8a1ca3e02f1..4b309d766fb 100644 --- a/packages/zoe/src/contractFacet/contractFacet.js +++ b/packages/zoe/src/contractFacet/contractFacet.js @@ -1,5 +1,7 @@ // @ts-check +/* global makeWeakStore */ + // This is the Zoe contract facet. Each time we make a new instance of a // contract we will start by creating a new vat and running this code in it. In // order to install this code in a vat, Zoe needs to import a bundle containing @@ -9,7 +11,7 @@ import { assert, details as X, q, makeAssert } from '@agoric/assert'; import { E } from '@agoric/eventual-send'; -import { makeStore, makeWeakStore } from '@agoric/store'; +import { makeStore } from '@agoric/store'; import { Far, Data } from '@agoric/marshal'; import { makeAmountMath, MathKind } from '@agoric/ertp'; diff --git a/packages/zoe/src/contractFacet/evalContractCode.js b/packages/zoe/src/contractFacet/evalContractCode.js index 17f0f1a0967..bdd83a0ea77 100644 --- a/packages/zoe/src/contractFacet/evalContractCode.js +++ b/packages/zoe/src/contractFacet/evalContractCode.js @@ -1,5 +1,7 @@ // @ts-check +/* global makeKind makeWeakStore */ + import { importBundle } from '@agoric/import-bundle'; import { assert } from '@agoric/assert'; @@ -13,6 +15,8 @@ const evalContractBundle = (bundle, additionalEndowments = {}) => { const defaultEndowments = { console: louderConsole, assert, + makeKind, + makeWeakStore, }; const fullEndowments = Object.create(null, { diff --git a/packages/zoe/src/zoeService/zoe.js b/packages/zoe/src/zoeService/zoe.js index 11ae30a2beb..9d17cce6b11 100644 --- a/packages/zoe/src/zoeService/zoe.js +++ b/packages/zoe/src/zoeService/zoe.js @@ -1,5 +1,5 @@ // @ts-check -import { makeWeakStore } from '@agoric/store'; +import { makeWeakStore as makeNonVOWeakStore } from '@agoric/store'; import { assert, details as X } from '@agoric/assert'; import { E } from '@agoric/eventual-send'; import { makePromiseKit } from '@agoric/promise-kit'; @@ -39,16 +39,16 @@ function makeZoe(vatAdminSvc, zcfBundleName = undefined) { const installations = new WeakSet(); /** @type {WeakStore} */ - const instanceToInstanceAdmin = makeWeakStore('instance'); + const instanceToInstanceAdmin = makeNonVOWeakStore('instance'); /** @type {GetAmountMath} */ const getAmountMath = brand => issuerTable.getByBrand(brand).amountMath; /** @type {WeakStore>} */ - const brandToPurse = makeWeakStore('brand'); + const brandToPurse = makeNonVOWeakStore('brand'); /** @type {WeakStore} */ - const seatHandleToZoeSeatAdmin = makeWeakStore('seatHandle'); + const seatHandleToZoeSeatAdmin = makeNonVOWeakStore('seatHandle'); /** * Create an installation by permanently storing the bundle. It will be diff --git a/packages/zoe/test/minimalMakeKindContract.js b/packages/zoe/test/minimalMakeKindContract.js new file mode 100644 index 00000000000..ca30dbdecb5 --- /dev/null +++ b/packages/zoe/test/minimalMakeKindContract.js @@ -0,0 +1,10 @@ +/* global makeKind makeWeakStore */ + +const start = _zcf => { + makeKind(); + makeWeakStore(); + + return harden({}); +}; +harden(start); +export { start }; diff --git a/packages/zoe/test/swingsetTests/makeKind/bootstrap.js b/packages/zoe/test/swingsetTests/makeKind/bootstrap.js new file mode 100644 index 00000000000..43a764ae4e1 --- /dev/null +++ b/packages/zoe/test/swingsetTests/makeKind/bootstrap.js @@ -0,0 +1,20 @@ +import { E } from '@agoric/eventual-send'; +import { Far } from '@agoric/marshal'; + +export function buildRootObject(vatPowers, vatParameters) { + const { contractBundles: cb } = vatParameters; + return Far('root', { + async bootstrap(vats, devices) { + const vatAdminSvc = await E(vats.vatAdmin).createVatAdminService( + devices.vatAdmin, + ); + const zoe = await E(vats.zoe).buildZoe(vatAdminSvc); + const installations = { + minimalMakeKind: await E(zoe).install(cb.minimalMakeKindContract), + }; + + const aliceP = E(vats.alice).build(zoe, installations); + await E(aliceP).minimalMakeKindTest(); + }, + }); +} diff --git a/packages/zoe/test/swingsetTests/makeKind/test-makeKind.js b/packages/zoe/test/swingsetTests/makeKind/test-makeKind.js new file mode 100644 index 00000000000..a4fca12d36a --- /dev/null +++ b/packages/zoe/test/swingsetTests/makeKind/test-makeKind.js @@ -0,0 +1,74 @@ +/* global __dirname */ + +// eslint-disable-next-line import/no-extraneous-dependencies +import '@agoric/install-metering-and-ses'; +// eslint-disable-next-line import/no-extraneous-dependencies +import test from 'ava'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { buildVatController, buildKernelBundles } from '@agoric/swingset-vat'; +import bundleSource from '@agoric/bundle-source'; + +const CONTRACT_FILES = ['minimalMakeKindContract']; + +test.before(async t => { + const start = Date.now(); + const kernelBundles = await buildKernelBundles(); + const step2 = Date.now(); + const contractBundles = {}; + await Promise.all( + CONTRACT_FILES.map(async settings => { + let bundleName; + let contractPath; + if (typeof settings === 'string') { + bundleName = settings; + contractPath = settings; + } else { + ({ bundleName, contractPath } = settings); + } + const source = `${__dirname}/../../${contractPath}`; + const bundle = await bundleSource(source); + contractBundles[bundleName] = bundle; + }), + ); + const step3 = Date.now(); + + const vats = {}; + await Promise.all( + ['alice', 'zoe'].map(async name => { + const source = `${__dirname}/vat-${name}.js`; + const bundle = await bundleSource(source); + vats[name] = { bundle }; + }), + ); + const bootstrapSource = `${__dirname}/bootstrap.js`; + vats.bootstrap = { + bundle: await bundleSource(bootstrapSource), + parameters: { contractBundles }, // argv will be added to this + }; + const config = { bootstrap: 'bootstrap', vats }; + + const step4 = Date.now(); + const ktime = `${(step2 - start) / 1000}s kernel`; + const ctime = `${(step3 - step2) / 1000}s contracts`; + const vtime = `${(step4 - step3) / 1000}s vats`; + const ttime = `${(step4 - start) / 1000}s total`; + console.log(`bundling: ${ktime}, ${ctime}, ${vtime}, ${ttime}`); + + t.context.data = { kernelBundles, config }; +}); + +async function main(t, argv) { + const { kernelBundles, config } = t.context.data; + const controller = await buildVatController(config, argv, { kernelBundles }); + await controller.run(); + return controller.dump(); +} + +const expected = [ + '{"adminFacet":{},"creatorFacet":{},"instance":{},"publicFacet":{}}', +]; + +test.serial('makeKind swingset', async t => { + const dump = await main(t); + t.deepEqual(dump.log, expected); +}); diff --git a/packages/zoe/test/swingsetTests/makeKind/vat-alice.js b/packages/zoe/test/swingsetTests/makeKind/vat-alice.js new file mode 100644 index 00000000000..396e0e60c20 --- /dev/null +++ b/packages/zoe/test/swingsetTests/makeKind/vat-alice.js @@ -0,0 +1,17 @@ +import { E } from '@agoric/eventual-send'; +import { Far } from '@agoric/marshal'; + +const build = async (log, zoe, installations) => { + return Far('build', { + minimalMakeKindTest: async () => { + const result = await E(zoe).startInstance(installations.minimalMakeKind); + log(result); + }, + }); +}; + +export function buildRootObject(vatPowers) { + return Far('root', { + build: (...args) => build(vatPowers.testLog, ...args), + }); +} diff --git a/packages/zoe/test/swingsetTests/makeKind/vat-zoe.js b/packages/zoe/test/swingsetTests/makeKind/vat-zoe.js new file mode 100644 index 00000000000..be0a4736bbe --- /dev/null +++ b/packages/zoe/test/swingsetTests/makeKind/vat-zoe.js @@ -0,0 +1,10 @@ +import { Far } from '@agoric/marshal'; + +// noinspection ES6PreferShortImport +import { makeZoe } from '../../../src/zoeService/zoe'; + +export function buildRootObject(_vatPowers) { + return Far('root', { + buildZoe: vatAdminSvc => makeZoe(vatAdminSvc), + }); +} diff --git a/packages/zoe/test/unitTests/contractSupport/test-bondingCurves.js b/packages/zoe/test/unitTests/contractSupport/test-bondingCurves.js index 20e6bc24aea..735c880f648 100644 --- a/packages/zoe/test/unitTests/contractSupport/test-bondingCurves.js +++ b/packages/zoe/test/unitTests/contractSupport/test-bondingCurves.js @@ -1,5 +1,5 @@ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; import test from 'ava'; import { diff --git a/packages/zoe/test/unitTests/contractSupport/test-depositTo.js b/packages/zoe/test/unitTests/contractSupport/test-depositTo.js index 0191c533066..9155f12a178 100644 --- a/packages/zoe/test/unitTests/contractSupport/test-depositTo.js +++ b/packages/zoe/test/unitTests/contractSupport/test-depositTo.js @@ -1,6 +1,6 @@ /* global __dirname */ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/contractSupport/test-offerTo.js b/packages/zoe/test/unitTests/contractSupport/test-offerTo.js index 6736ee08f2f..17304dd6cf4 100644 --- a/packages/zoe/test/unitTests/contractSupport/test-offerTo.js +++ b/packages/zoe/test/unitTests/contractSupport/test-offerTo.js @@ -2,7 +2,7 @@ // @ts-check // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/contractSupport/test-percentMath.js b/packages/zoe/test/unitTests/contractSupport/test-percentMath.js index 11054cc7578..eef8b73f07b 100644 --- a/packages/zoe/test/unitTests/contractSupport/test-percentMath.js +++ b/packages/zoe/test/unitTests/contractSupport/test-percentMath.js @@ -1,7 +1,7 @@ // @ts-check // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/contractSupport/test-percentSupport.js b/packages/zoe/test/unitTests/contractSupport/test-percentSupport.js index f252098e5c8..2849b4f8f8f 100644 --- a/packages/zoe/test/unitTests/contractSupport/test-percentSupport.js +++ b/packages/zoe/test/unitTests/contractSupport/test-percentSupport.js @@ -1,6 +1,8 @@ // @ts-check -import '@agoric/install-ses'; +// eslint-disable-next-line import/no-extraneous-dependencies +import '@agoric/zoe/tools/prepare-test-env'; +// eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import { makeIssuerKit } from '@agoric/ertp'; diff --git a/packages/zoe/test/unitTests/contractSupport/test-ratio.js b/packages/zoe/test/unitTests/contractSupport/test-ratio.js index 9e8bafbbf90..7643266d0b8 100644 --- a/packages/zoe/test/unitTests/contractSupport/test-ratio.js +++ b/packages/zoe/test/unitTests/contractSupport/test-ratio.js @@ -1,6 +1,8 @@ // @ts-check -import '@agoric/install-ses'; +// eslint-disable-next-line import/no-extraneous-dependencies +import '@agoric/zoe/tools/prepare-test-env'; +// eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import '../../../src/contractSupport/types'; diff --git a/packages/zoe/test/unitTests/contractSupport/test-stateMachine.js b/packages/zoe/test/unitTests/contractSupport/test-stateMachine.js index bc39741f502..0e6302d0794 100644 --- a/packages/zoe/test/unitTests/contractSupport/test-stateMachine.js +++ b/packages/zoe/test/unitTests/contractSupport/test-stateMachine.js @@ -1,5 +1,5 @@ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; import test from 'ava'; import { makeStateMachine } from '../../../src/contractSupport'; diff --git a/packages/zoe/test/unitTests/contractSupport/test-withdrawFrom.js b/packages/zoe/test/unitTests/contractSupport/test-withdrawFrom.js index 2ed0ac12bc1..73acc979133 100644 --- a/packages/zoe/test/unitTests/contractSupport/test-withdrawFrom.js +++ b/packages/zoe/test/unitTests/contractSupport/test-withdrawFrom.js @@ -1,6 +1,6 @@ /* global __dirname */ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/contractSupport/test-zoeHelpers.js b/packages/zoe/test/unitTests/contractSupport/test-zoeHelpers.js index 2d7f1060bf3..2ca95eba244 100644 --- a/packages/zoe/test/unitTests/contractSupport/test-zoeHelpers.js +++ b/packages/zoe/test/unitTests/contractSupport/test-zoeHelpers.js @@ -1,5 +1,5 @@ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import { Far, Data } from '@agoric/marshal'; diff --git a/packages/zoe/test/unitTests/contracts/loan/helpers.js b/packages/zoe/test/unitTests/contracts/loan/helpers.js index 0561acbf75e..711f2ac1394 100644 --- a/packages/zoe/test/unitTests/contracts/loan/helpers.js +++ b/packages/zoe/test/unitTests/contracts/loan/helpers.js @@ -2,7 +2,7 @@ import '../../../../exported'; // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; import { E } from '@agoric/eventual-send'; import bundleSource from '@agoric/bundle-source'; diff --git a/packages/zoe/test/unitTests/contracts/loan/test-addCollateral.js b/packages/zoe/test/unitTests/contracts/loan/test-addCollateral.js index cd454bcabfb..1d7455be71f 100644 --- a/packages/zoe/test/unitTests/contracts/loan/test-addCollateral.js +++ b/packages/zoe/test/unitTests/contracts/loan/test-addCollateral.js @@ -3,7 +3,7 @@ import '../../../../exported'; // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/contracts/loan/test-borrow.js b/packages/zoe/test/unitTests/contracts/loan/test-borrow.js index 1d6c8e096d2..2dc33b885a0 100644 --- a/packages/zoe/test/unitTests/contracts/loan/test-borrow.js +++ b/packages/zoe/test/unitTests/contracts/loan/test-borrow.js @@ -3,7 +3,7 @@ import '../../../../exported'; // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/contracts/loan/test-close.js b/packages/zoe/test/unitTests/contracts/loan/test-close.js index c07a5c71054..aec402d4d02 100644 --- a/packages/zoe/test/unitTests/contracts/loan/test-close.js +++ b/packages/zoe/test/unitTests/contracts/loan/test-close.js @@ -2,7 +2,7 @@ import '../../../../exported'; // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import { E } from '@agoric/eventual-send'; diff --git a/packages/zoe/test/unitTests/contracts/loan/test-lend.js b/packages/zoe/test/unitTests/contracts/loan/test-lend.js index 177ad1edaa0..3ac468134f3 100644 --- a/packages/zoe/test/unitTests/contracts/loan/test-lend.js +++ b/packages/zoe/test/unitTests/contracts/loan/test-lend.js @@ -2,7 +2,7 @@ import '../../../../exported'; // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import { E } from '@agoric/eventual-send'; diff --git a/packages/zoe/test/unitTests/contracts/loan/test-liquidate.js b/packages/zoe/test/unitTests/contracts/loan/test-liquidate.js index 39ad12f5728..33f4cfa2f89 100644 --- a/packages/zoe/test/unitTests/contracts/loan/test-liquidate.js +++ b/packages/zoe/test/unitTests/contracts/loan/test-liquidate.js @@ -3,7 +3,7 @@ import '../../../../exported'; // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/contracts/loan/test-loan-e2e.js b/packages/zoe/test/unitTests/contracts/loan/test-loan-e2e.js index 72a17c96466..b5c33b296e3 100644 --- a/packages/zoe/test/unitTests/contracts/loan/test-loan-e2e.js +++ b/packages/zoe/test/unitTests/contracts/loan/test-loan-e2e.js @@ -3,7 +3,7 @@ import '../../../../exported'; // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import { E } from '@agoric/eventual-send'; diff --git a/packages/zoe/test/unitTests/contracts/loan/test-updateDebt.js b/packages/zoe/test/unitTests/contracts/loan/test-updateDebt.js index 5eff31e10e7..bb3c07ed921 100644 --- a/packages/zoe/test/unitTests/contracts/loan/test-updateDebt.js +++ b/packages/zoe/test/unitTests/contracts/loan/test-updateDebt.js @@ -3,7 +3,7 @@ import '../../../../exported'; // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/contracts/test-atomicSwap.js b/packages/zoe/test/unitTests/contracts/test-atomicSwap.js index 2be73862ed5..d1ccd0ec080 100644 --- a/packages/zoe/test/unitTests/contracts/test-atomicSwap.js +++ b/packages/zoe/test/unitTests/contracts/test-atomicSwap.js @@ -1,6 +1,6 @@ /* global __dirname */ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; // eslint-disable-next-line import/no-extraneous-dependencies diff --git a/packages/zoe/test/unitTests/contracts/test-automaticRefund.js b/packages/zoe/test/unitTests/contracts/test-automaticRefund.js index dfd9516bad5..10ce10db486 100644 --- a/packages/zoe/test/unitTests/contracts/test-automaticRefund.js +++ b/packages/zoe/test/unitTests/contracts/test-automaticRefund.js @@ -1,6 +1,6 @@ /* global __dirname */ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import bundleSource from '@agoric/bundle-source'; diff --git a/packages/zoe/test/unitTests/contracts/test-autoswap.js b/packages/zoe/test/unitTests/contracts/test-autoswap.js index 9e460c70447..376a6924ced 100644 --- a/packages/zoe/test/unitTests/contracts/test-autoswap.js +++ b/packages/zoe/test/unitTests/contracts/test-autoswap.js @@ -1,6 +1,6 @@ /* global __dirname */ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import { E } from '@agoric/eventual-send'; diff --git a/packages/zoe/test/unitTests/contracts/test-autoswapPool.js b/packages/zoe/test/unitTests/contracts/test-autoswapPool.js index 10e8b3dacaf..d85e45853d9 100644 --- a/packages/zoe/test/unitTests/contracts/test-autoswapPool.js +++ b/packages/zoe/test/unitTests/contracts/test-autoswapPool.js @@ -1,6 +1,7 @@ // isolated unit test of price calculations in pool in multipoolAutoswap -import '@agoric/install-ses'; +// eslint-disable-next-line import/no-extraneous-dependencies +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/contracts/test-barter.js b/packages/zoe/test/unitTests/contracts/test-barter.js index 39543f43c3f..0aac8c5f7c1 100644 --- a/packages/zoe/test/unitTests/contracts/test-barter.js +++ b/packages/zoe/test/unitTests/contracts/test-barter.js @@ -1,6 +1,6 @@ /* global __dirname */ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import { E } from '@agoric/eventual-send'; diff --git a/packages/zoe/test/unitTests/contracts/test-brokenContract.js b/packages/zoe/test/unitTests/contracts/test-brokenContract.js index 972562bcf46..9fe71b152cc 100644 --- a/packages/zoe/test/unitTests/contracts/test-brokenContract.js +++ b/packages/zoe/test/unitTests/contracts/test-brokenContract.js @@ -1,5 +1,6 @@ /* global __dirname */ -import '@agoric/install-ses'; +// eslint-disable-next-line import/no-extraneous-dependencies +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; // eslint-disable-next-line import/no-extraneous-dependencies diff --git a/packages/zoe/test/unitTests/contracts/test-callSpread-calculation.js b/packages/zoe/test/unitTests/contracts/test-callSpread-calculation.js index abc85e58c9c..93bc91f1f2d 100644 --- a/packages/zoe/test/unitTests/contracts/test-callSpread-calculation.js +++ b/packages/zoe/test/unitTests/contracts/test-callSpread-calculation.js @@ -1,5 +1,5 @@ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import '../../../exported'; diff --git a/packages/zoe/test/unitTests/contracts/test-callSpread.js b/packages/zoe/test/unitTests/contracts/test-callSpread.js index 2dac220d2c9..5089ff405d5 100644 --- a/packages/zoe/test/unitTests/contracts/test-callSpread.js +++ b/packages/zoe/test/unitTests/contracts/test-callSpread.js @@ -1,6 +1,6 @@ /* global __dirname */ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import { E } from '@agoric/eventual-send'; diff --git a/packages/zoe/test/unitTests/contracts/test-coveredCall.js b/packages/zoe/test/unitTests/contracts/test-coveredCall.js index a3599d86d40..b7d0889eff8 100644 --- a/packages/zoe/test/unitTests/contracts/test-coveredCall.js +++ b/packages/zoe/test/unitTests/contracts/test-coveredCall.js @@ -1,6 +1,6 @@ /* global __dirname */ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import bundleSource from '@agoric/bundle-source'; diff --git a/packages/zoe/test/unitTests/contracts/test-escrowToVote.js b/packages/zoe/test/unitTests/contracts/test-escrowToVote.js index b0c52589f5a..e9de29d6ff8 100644 --- a/packages/zoe/test/unitTests/contracts/test-escrowToVote.js +++ b/packages/zoe/test/unitTests/contracts/test-escrowToVote.js @@ -1,5 +1,6 @@ /* global __dirname */ -import '@agoric/install-ses'; +// eslint-disable-next-line import/no-extraneous-dependencies +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; // eslint-disable-next-line import/no-extraneous-dependencies diff --git a/packages/zoe/test/unitTests/contracts/test-mintPayments.js b/packages/zoe/test/unitTests/contracts/test-mintPayments.js index 86528a5cd9e..4ffed20a880 100644 --- a/packages/zoe/test/unitTests/contracts/test-mintPayments.js +++ b/packages/zoe/test/unitTests/contracts/test-mintPayments.js @@ -1,6 +1,6 @@ /* global __dirname */ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/contracts/test-multipoolAutoswap.js b/packages/zoe/test/unitTests/contracts/test-multipoolAutoswap.js index d77c8468bda..31378c79a97 100644 --- a/packages/zoe/test/unitTests/contracts/test-multipoolAutoswap.js +++ b/packages/zoe/test/unitTests/contracts/test-multipoolAutoswap.js @@ -1,5 +1,6 @@ /* global __dirname */ -import '@agoric/install-ses'; +// eslint-disable-next-line import/no-extraneous-dependencies +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; // eslint-disable-next-line import/no-extraneous-dependencies diff --git a/packages/zoe/test/unitTests/contracts/test-oracle.js b/packages/zoe/test/unitTests/contracts/test-oracle.js index 07d30b45aae..0b6450acb7d 100644 --- a/packages/zoe/test/unitTests/contracts/test-oracle.js +++ b/packages/zoe/test/unitTests/contracts/test-oracle.js @@ -1,7 +1,7 @@ /* global __dirname */ // @ts-check // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import anyTest from 'ava'; import bundleSource from '@agoric/bundle-source'; diff --git a/packages/zoe/test/unitTests/contracts/test-otcDesk.js b/packages/zoe/test/unitTests/contracts/test-otcDesk.js index 485e7752151..31d28a8199f 100644 --- a/packages/zoe/test/unitTests/contracts/test-otcDesk.js +++ b/packages/zoe/test/unitTests/contracts/test-otcDesk.js @@ -1,6 +1,6 @@ /* global __dirname */ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; // eslint-disable-next-line import/no-extraneous-dependencies diff --git a/packages/zoe/test/unitTests/contracts/test-priceAggregator.js b/packages/zoe/test/unitTests/contracts/test-priceAggregator.js index 2cbc9a34a46..8a5922da135 100644 --- a/packages/zoe/test/unitTests/contracts/test-priceAggregator.js +++ b/packages/zoe/test/unitTests/contracts/test-priceAggregator.js @@ -1,7 +1,7 @@ /* global __dirname */ // @ts-check // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import anyTest from 'ava'; import bundleSource from '@agoric/bundle-source'; diff --git a/packages/zoe/test/unitTests/contracts/test-secondPriceAuction.js b/packages/zoe/test/unitTests/contracts/test-secondPriceAuction.js index b1a4e62782c..0fcc82ee887 100644 --- a/packages/zoe/test/unitTests/contracts/test-secondPriceAuction.js +++ b/packages/zoe/test/unitTests/contracts/test-secondPriceAuction.js @@ -1,6 +1,6 @@ /* global __dirname */ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import bundleSource from '@agoric/bundle-source'; diff --git a/packages/zoe/test/unitTests/contracts/test-sellTickets.js b/packages/zoe/test/unitTests/contracts/test-sellTickets.js index fa8b1144872..b095a009e95 100644 --- a/packages/zoe/test/unitTests/contracts/test-sellTickets.js +++ b/packages/zoe/test/unitTests/contracts/test-sellTickets.js @@ -1,6 +1,6 @@ /* global __dirname */ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/contracts/test-simpleExchange.js b/packages/zoe/test/unitTests/contracts/test-simpleExchange.js index 09193f503d6..6eb5bf18526 100644 --- a/packages/zoe/test/unitTests/contracts/test-simpleExchange.js +++ b/packages/zoe/test/unitTests/contracts/test-simpleExchange.js @@ -1,6 +1,6 @@ /* global __dirname */ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/contracts/test-throwInOfferHandler.js b/packages/zoe/test/unitTests/contracts/test-throwInOfferHandler.js index fbdc0c95c40..d1681d40a88 100644 --- a/packages/zoe/test/unitTests/contracts/test-throwInOfferHandler.js +++ b/packages/zoe/test/unitTests/contracts/test-throwInOfferHandler.js @@ -1,6 +1,6 @@ /* global __dirname */ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/contracts/test-useObj.js b/packages/zoe/test/unitTests/contracts/test-useObj.js index dc595ad7d39..d5f36fd6d14 100644 --- a/packages/zoe/test/unitTests/contracts/test-useObj.js +++ b/packages/zoe/test/unitTests/contracts/test-useObj.js @@ -1,6 +1,6 @@ /* global __dirname */ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/test-cleanProposal.js b/packages/zoe/test/unitTests/test-cleanProposal.js index 99cb691ceec..5c336390e72 100644 --- a/packages/zoe/test/unitTests/test-cleanProposal.js +++ b/packages/zoe/test/unitTests/test-cleanProposal.js @@ -1,5 +1,5 @@ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import { makeWeakStore } from '@agoric/store'; diff --git a/packages/zoe/test/unitTests/test-fakePriceAuthority.js b/packages/zoe/test/unitTests/test-fakePriceAuthority.js index 9ee8af9582a..38e5e8e1771 100644 --- a/packages/zoe/test/unitTests/test-fakePriceAuthority.js +++ b/packages/zoe/test/unitTests/test-fakePriceAuthority.js @@ -1,6 +1,6 @@ // @ts-check // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import { E } from '@agoric/eventual-send'; diff --git a/packages/zoe/test/unitTests/test-makeKind.js b/packages/zoe/test/unitTests/test-makeKind.js new file mode 100644 index 00000000000..72c5cac91f6 --- /dev/null +++ b/packages/zoe/test/unitTests/test-makeKind.js @@ -0,0 +1,23 @@ +// @ts-check +/* global __dirname makeKind makeWeakStore */ + +// eslint-disable-next-line import/no-extraneous-dependencies +import '@agoric/zoe/tools/prepare-test-env'; +// eslint-disable-next-line import/no-extraneous-dependencies +import test from 'ava'; +import bundleSource from '@agoric/bundle-source'; + +import { E } from '@agoric/eventual-send'; +import { makeZoe } from '../../src/zoeService/zoe'; +import fakeVatAdmin from '../../src/contractFacet/fakeVatAdmin'; + +const root = `${__dirname}/../minimalMakeKindContract`; + +test('makeKind non-swingset', async t => { + const bundle = await bundleSource(root); + const zoe = makeZoe(fakeVatAdmin); + const installation = await E(zoe).install(bundle); + t.notThrows(() => makeKind()); + t.notThrows(() => makeWeakStore()); + await t.notThrowsAsync(() => zoe.startInstance(installation)); +}); diff --git a/packages/zoe/test/unitTests/test-manualTimer.js b/packages/zoe/test/unitTests/test-manualTimer.js index 33c316ee00b..8e3c8780854 100644 --- a/packages/zoe/test/unitTests/test-manualTimer.js +++ b/packages/zoe/test/unitTests/test-manualTimer.js @@ -1,7 +1,7 @@ // @ts-check // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/test-objArrayConversion.js b/packages/zoe/test/unitTests/test-objArrayConversion.js index 5dfaae6e10f..8ea4bdd5897 100644 --- a/packages/zoe/test/unitTests/test-objArrayConversion.js +++ b/packages/zoe/test/unitTests/test-objArrayConversion.js @@ -1,5 +1,5 @@ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/test-offerSafety.js b/packages/zoe/test/unitTests/test-offerSafety.js index f1ed2fce89b..28198545733 100644 --- a/packages/zoe/test/unitTests/test-offerSafety.js +++ b/packages/zoe/test/unitTests/test-offerSafety.js @@ -1,6 +1,6 @@ // eslint-disable-next-line import/no-extraneous-dependencies - -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; +// eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; import { isOfferSafe } from '../../src/contractFacet/offerSafety'; diff --git a/packages/zoe/test/unitTests/test-rightsConservation.js b/packages/zoe/test/unitTests/test-rightsConservation.js index af6088e628e..2361ed063bf 100644 --- a/packages/zoe/test/unitTests/test-rightsConservation.js +++ b/packages/zoe/test/unitTests/test-rightsConservation.js @@ -1,5 +1,5 @@ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/test-scriptedOracle.js b/packages/zoe/test/unitTests/test-scriptedOracle.js index 3ae75ecf512..9f8ee2bb544 100644 --- a/packages/zoe/test/unitTests/test-scriptedOracle.js +++ b/packages/zoe/test/unitTests/test-scriptedOracle.js @@ -1,7 +1,7 @@ /* global __dirname */ // @ts-check // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import anyTest from 'ava'; import bundleSource from '@agoric/bundle-source'; diff --git a/packages/zoe/test/unitTests/test-zoe-env.js b/packages/zoe/test/unitTests/test-zoe-env.js index 6a6a582ec70..7d7ae6a03ca 100644 --- a/packages/zoe/test/unitTests/test-zoe-env.js +++ b/packages/zoe/test/unitTests/test-zoe-env.js @@ -1,3 +1,5 @@ +// @ts-check + // eslint-disable-next-line import/no-extraneous-dependencies import '@agoric/zoe/tools/prepare-test-env'; /* global makeKind, makeWeakStore */ diff --git a/packages/zoe/test/unitTests/test-zoe.js b/packages/zoe/test/unitTests/test-zoe.js index db0c7e01f95..9b0d6362ffb 100644 --- a/packages/zoe/test/unitTests/test-zoe.js +++ b/packages/zoe/test/unitTests/test-zoe.js @@ -1,7 +1,7 @@ /* global __dirname */ // @ts-check // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/zcf/test-zcf.js b/packages/zoe/test/unitTests/zcf/test-zcf.js index d1c79ef1736..ebb3ea11c36 100644 --- a/packages/zoe/test/unitTests/zcf/test-zcf.js +++ b/packages/zoe/test/unitTests/zcf/test-zcf.js @@ -1,6 +1,6 @@ // @ts-check // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/zcf/test-zcfSeat.js b/packages/zoe/test/unitTests/zcf/test-zcfSeat.js index 81299d65a82..8565753e941 100644 --- a/packages/zoe/test/unitTests/zcf/test-zcfSeat.js +++ b/packages/zoe/test/unitTests/zcf/test-zcfSeat.js @@ -1,6 +1,6 @@ /* global __dirname */ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/test/unitTests/zcf/test-zoeHelpersWZcf.js b/packages/zoe/test/unitTests/zcf/test-zoeHelpersWZcf.js index 94063ecc77a..e66848c8a27 100644 --- a/packages/zoe/test/unitTests/zcf/test-zoeHelpersWZcf.js +++ b/packages/zoe/test/unitTests/zcf/test-zoeHelpersWZcf.js @@ -1,5 +1,5 @@ // eslint-disable-next-line import/no-extraneous-dependencies -import '@agoric/install-ses'; +import '@agoric/zoe/tools/prepare-test-env'; import { E } from '@agoric/eventual-send'; // eslint-disable-next-line import/no-extraneous-dependencies import test from 'ava'; diff --git a/packages/zoe/tools/prepare-test-env.js b/packages/zoe/tools/prepare-test-env.js index 2ec9d83fea3..e5fdd1c164e 100644 --- a/packages/zoe/tools/prepare-test-env.js +++ b/packages/zoe/tools/prepare-test-env.js @@ -1,3 +1,5 @@ +// @ts-check + /** * Prepare global environment for zoe tests. *