diff --git a/README.md b/README.md index 68824a0..084e934 100644 --- a/README.md +++ b/README.md @@ -57,11 +57,11 @@ const UnitTestSCAD = require('unittestscad'); ```javascript const cube = new UnitTestSCAD.ThreeDModule({ - include: 'cube.scad' + include: ['cube.scad'] }); cube.height === 5; ``` # API Reference -See [API Documentation](https://hopefulllama.github.io/UnitTestSCAD/) for more details. \ No newline at end of file +See [API Documentation](https://hopefulllama.github.io/UnitTestSCAD/) for more details. diff --git a/src/api/AbstractParent.js b/src/api/AbstractParent.js index 469c6b9..742e9f5 100644 --- a/src/api/AbstractParent.js +++ b/src/api/AbstractParent.js @@ -11,6 +11,7 @@ function sanitise(options) { include: valueOrDefault(options, 'include', []), setUpText: valueOrDefault(options, 'setUpText', ''), testText: valueOrDefault(options, 'testText', ''), + setVariables: valueOrDefault(options, 'setVariables', []) }; } @@ -21,6 +22,7 @@ function sanitise(options) { * @property {String[]} include List of .scad files to import as 'include'. * @property {String} setUpText Any required OpenSCAD code to set up the test. * @property {String} testText The OpenSCAD code to be tested and asserted on. + * @property {String[]} setVariables Variables to set in openscad. */ /** @@ -31,6 +33,6 @@ module.exports = class { constructor(dirtyOptions, fileType) { const options = sanitise(dirtyOptions); const header = getHeader(options.openSCADDirectory, options.use, options.include); - this.output = fileType.execute(header, options.setUpText, options.testText); + this.output = fileType.execute(header, options.setUpText, options.testText, options.setVariables); } -}; \ No newline at end of file +}; diff --git a/src/file/File.js b/src/file/File.js index f15400e..86eb34c 100644 --- a/src/file/File.js +++ b/src/file/File.js @@ -9,8 +9,8 @@ function writeSCADFile(header, setUpText, testText) { fs.writeFileSync(scadFile, contents); } -function executeOpenSCAD(tempFile) { - const command = `openscad -o ${tempFile} ${scadFile}`; +function executeOpenSCAD(tempFile, variables) { + const command = `openscad -o ${tempFile} ${variables.reduce((acc,item)=>" -D "+item[0]+"=\""+item[1]+acc+"\"", "")} ${scadFile}`; const out = execSync(command).toString(); const file = fs.readFileSync(tempFile, 'utf-8'); return { @@ -29,7 +29,7 @@ module.exports = { execute(options, tempOutput) { writeSCADFile(options.header, options.setUpText, options.testText); try { - return executeOpenSCAD(tempOutput); + return executeOpenSCAD(tempOutput, options.setVariables); } catch(error) { throw error; } finally { @@ -37,4 +37,4 @@ module.exports = { safeUnlink(scadFile); } } -}; \ No newline at end of file +}; diff --git a/src/file/ThreeDModuleFile.js b/src/file/ThreeDModuleFile.js index 7ffcd7f..e423e64 100644 --- a/src/file/ThreeDModuleFile.js +++ b/src/file/ThreeDModuleFile.js @@ -3,11 +3,12 @@ const File = require('./File'); const stlFile = 'UnitTestSCAD_48967_TEMP_DELETE-ME_THREE_D.stl'; module.exports = { - execute(header, setUpText, testText) { + execute(header, setUpText, testText, setVariables) { return File.execute({ header, setUpText, testText, + setVariables, }, stlFile).file; } }; diff --git a/src/file/TwoDModuleFile.js b/src/file/TwoDModuleFile.js index 76db034..b9755d0 100644 --- a/src/file/TwoDModuleFile.js +++ b/src/file/TwoDModuleFile.js @@ -3,11 +3,12 @@ const File = require('./File'); const svgFile = 'UnitTestSCAD_48967_TEMP_DELETE-ME_TWO_D.svg'; module.exports = { - execute(header, setUpText, testText) { + execute(header, setUpText, testText, setVariables) { return File.execute({ header, setUpText, testText, + setVariables, }, svgFile).file; } -}; \ No newline at end of file +};