From 8beb1292b5802add23fd373c2be41379d8290b9c Mon Sep 17 00:00:00 2001 From: Mayukha Vadari Date: Fri, 11 Oct 2024 14:40:19 -0700 Subject: [PATCH] fix: make transaction-generating scripts more robust (#2690) * improve scripts * Update settings.json * update file locations after refactor --- packages/xrpl/tools/createValidateTests.js | 6 +++--- packages/xrpl/tools/generateModels.js | 21 ++++++++++----------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/packages/xrpl/tools/createValidateTests.js b/packages/xrpl/tools/createValidateTests.js index f88e5da1..d51e883d 100644 --- a/packages/xrpl/tools/createValidateTests.js +++ b/packages/xrpl/tools/createValidateTests.js @@ -11,7 +11,7 @@ function getTx(txName) { .filter((tx) => tx.json.TransactionType === txName) .map((tx) => tx.json) if (validTxs.length == 0) { - throw new Error(`Must have ripple-binary-codec fixture for ${txName}`) + return '{ /* TODO: add sample transaction */ }' } const validTx = validTxs[0] delete validTx.TxnSignature @@ -74,7 +74,7 @@ function getInvalidValue(paramTypes) { } else if (paramType == 'XChainBridge') { return JSON.stringify({ XChainDoor: 'test' }) } else { - throw Error(`${paramType} not supported yet`) + return '/*TODO*/' } } @@ -86,7 +86,7 @@ function getInvalidValue(paramTypes) { } else if (JSON.stringify(simplifiedParamTypes) === '["number","string"]') { return JSON.stringify({ currency: 'ETH' }) } else { - throw Error(`${simplifiedParamTypes} not supported yet`) + return '/*TODO*/' } } diff --git a/packages/xrpl/tools/generateModels.js b/packages/xrpl/tools/generateModels.js index cd089dfa..dca58317 100644 --- a/packages/xrpl/tools/generateModels.js +++ b/packages/xrpl/tools/generateModels.js @@ -15,7 +15,7 @@ let jsTransactionFile function processRippledSource(folder) { const sfieldCpp = readFile( - path.join(folder, 'src/ripple/protocol/impl/SField.cpp'), + path.join(folder, 'src/libxrpl/protocol/SField.cpp'), ) const sfieldHits = sfieldCpp.match( /^ *CONSTRUCT_[^\_]+_SFIELD *\( *[^,\n]*,[ \n]*"([^\"\n ]+)"[ \n]*,[ \n]*([^, \n]+)[ \n]*,[ \n]*([0-9]+)(,.*?(notSigning))?/gm, @@ -29,7 +29,7 @@ function processRippledSource(folder) { } const txFormatsCpp = readFile( - path.join(folder, 'src/ripple/protocol/impl/TxFormats.cpp'), + path.join(folder, 'src/libxrpl/protocol/TxFormats.cpp'), ) const txFormatsHits = txFormatsCpp.match( /^ *add\(jss::([^\"\n, ]+),[ \n]*tt[A-Z_]+,[ \n]*{[ \n]*(({sf[A-Za-z0-9]+, soe(OPTIONAL|REQUIRED|DEFAULT)},[ \n]+)*)},[ \n]*[pseudocC]+ommonFields\);/gm, @@ -49,10 +49,10 @@ function processRippledSource(folder) { ), ) const transactionMatch = jsTransactionFile.match( - /export type Transaction =([| \nA-Za-z]+)\nexport/, + /export type SubmittableTransaction =([| \nA-Za-z]+)\n\/\*\*/, )[0] const existingLibraryTxs = transactionMatch - .replace('\n\nexport', '') + .replace('\n\n/**', '') .split('\n | ') .filter((value) => !value.includes('export type')) .map((value) => value.trim()) @@ -248,10 +248,11 @@ ${validationImportLine}` ) const validateTests = createValidateTests(tx) - fs.writeFileSync( - path.join(path.dirname(__filename), `../test/models/${tx}.test.ts`), - validateTests, - ) + if (validateTests !== '') + fs.writeFileSync( + path.join(path.dirname(__filename), `../test/models/${tx}.test.ts`), + validateTests, + ) updateTransactionFile(transactionMatch, tx) @@ -259,9 +260,7 @@ ${validationImportLine}` console.log(`Added ${tx}`) }) - console.log( - 'Future steps: Adding docstrings to the models and adding integration tests', - ) + // TODO: add docstrings to the models and add integration tests } if (require.main === module) {