tpmkms
Version:
Reusable libraries for Entodicton, a natural language to json converter
71 lines (61 loc) • 2.13 kB
JavaScript
const { knowledgeModule, where } = require('./runtime').theprogrammablemind
const { defaultContextCheck } = require('./helpers')
const tester_tests = require('./tester.test.json')
const ArgumentParser = require('argparse').ArgumentParser
const testModuleNameFn = () => {
const parser = new ArgumentParser({ description: 'Get test module name' })
parser.add_argument('-tmn', '--testModuleName', { help: 'List of module to run the tests from' })
const [args, unknown] = parser.parse_known_args()
return args.testModuleName
}
const testModuleName = testModuleNameFn()
const parser = new ArgumentParser({
description: 'Test modules together'
})
parser.add_argument('-m', '--modules', { help: 'List of modules to load' })
const [args, unknown] = parser.parse_known_args()
process.argv = [process.argv[0], process.argv[1], ...unknown]
const createConfig = async () => {
const config = new Config({ name: 'tester' })
global.theprogrammablemind = {
loadForTesting: {}
}
for (const module of args.modules.split(',')) {
global.theprogrammablemind.loadForTesting[module] = true
const km = require(`./${module}`)
// km.rebuild({ isModule: false }) // load the usually defaults
await config.add(km)
}
return config
}
global.theprogrammablemind = {
loadForTesting: {}
}
const includes = args.modules.split(',').map((module) => {
global.theprogrammablemind.loadForTesting[module] = true
const km = require(`./${module}`)
return km
})
const fixtures = async (args) => {
const { config, kms, apis } = args;
if (kms[testModuleName].testConfig?.fixtures) {
const fixtures = kms.menus.testConfig?.fixtures
kms.menus.testConfig.fixtures = null
const testModuleApi = apis(testModuleName)
const objects = testModuleApi._objects
args.objects = objects
await fixtures({ ...args, objects, api: testModuleApi })
kms.menus.testConfig.fixtures = fixtures
}
}
knowledgeModule({
config: { name: 'tester' },
includes,
module,
description: 'Testing modules loaded together',
test: {
name: './tester.test.json',
contents: tester_tests,
fixtures,
},
})