def test_datfile_mindmeld(self): meld = s_mindmeld.MindMeld() meld.addPyPath(syndir, datfiles=True) with meld.openDatFile('synapse.tests/test.dat') as fd: self.nn(fd) self.eq(fd.read(), b'woot\n')
def main(argv): ''' Command line tool for MindMeld construction/manipulation. ''' p = argparse.ArgumentParser(prog='melder') p.add_argument('meldfile', help='meld file path') p.add_argument('--add-pypath', dest='pypaths', default=[], action='append', help='add a python path to the meld') p.add_argument('--add-datfiles', dest='datfiles', action='store_true', help='when adding pypath, include datfiles') p.add_argument('--dump-info', dest='dumpinfo', action='store_true', help='dump the entire meld info dictionary to stdout') p.add_argument('--set-name', dest='name', default=None, help='set meld name (ie, "foolib")') p.add_argument('--set-version', dest='version', default=None, help='set meld version (ie, 8.2.30)') opts = p.parse_args(argv) meldinfo = {} if os.path.isfile(opts.meldfile): with open(opts.meldfile, 'rb') as fd: meldinfo = msgpack.load(fd, encoding='utf8') meld = s_mindmeld.MindMeld(**meldinfo) if opts.version: meld.setVersion(s_common.vertup(opts.version)) if opts.name: meld.setName(opts.name) for pypath in opts.pypaths: meld.addPyPath(pypath, datfiles=opts.datfiles) meldinfo = meld.getMeldDict() if opts.dumpinfo: print(repr(meldinfo)) meldbyts = msgpack.dumps(meld.getMeldDict(), encoding='utf8', use_bin_type=True) with open(opts.meldfile, 'wb') as fd: fd.write(meldbyts)
def test_mindmeld_addpymod(self): meld = s_mindmeld.MindMeld() meld.addPyMod('synapse') self.assertIsNone(meld.getMeldMod('newp')) self.assertIsNone(meld.getMeldMod('binascii')) self.assertIsNotNone(meld.getMeldMod('synapse')) self.assertIsNotNone(meld.getMeldMod('synapse.mindmeld'))
def test_mindmeld_base64(self): meld = s_mindmeld.MindMeld() meld.addPySource('hehehahaaaa', 'x = 40') s_mindmeld.loadMeldBase64(meld.getMeldBase64()) import hehehahaaaa self.assertEqual(hehehahaaaa.x, 40)
def test_mindmeld_pycall(self): meld = s_mindmeld.MindMeld() meld.addPyCall(foobar) self.assertIsNone(meld.getMeldMod('newp')) self.assertIsNone(meld.getMeldMod('binascii')) self.assertIsNotNone(meld.getMeldMod('synapse')) self.assertIsNotNone(meld.getMeldMod('synapse.mindmeld'))
def test_mindmeld_loader(self): meld = s_mindmeld.MindMeld() meld.addPySource('hehehahahoho', 'x = 30') meldinfo = meld.getMeldDict() s_mindmeld.loadMindMeld(meldinfo) import hehehahahoho self.assertEqual(hehehahahoho.x, 30)
def test_httpapi_meld(self): meld = s_mindmeld.MindMeld() meld.setName('ziza') meld.setVersion((1, 2, 3)) meld.addPySource('ziza', 'class ZiZa:pass') b64 = meld.getMeldBase64() api = s_httpapi.HttpApi() api.loadMeldBase64(b64) api.addApiObject('ziza', 'ziza.ZiZa') melds = api.getMindMelds() self.assertEqual(len(melds), 1) self.assertEqual(melds[0].get('name'), 'ziza') self.assertEqual(melds[0].get('version'), (1, 2, 3)) api.fini()
def genHiveMeld(self): if self.meld is None: self.meld = s_mindmeld.MindMeld() return self.meld
def test_mindmeld_badsrc(self): meld = s_mindmeld.MindMeld() badsrc = 'some --<<== shit' self.assertRaises(s_mindmeld.BadPySource, meld.addPySource, 'woot', badsrc)
def test_mindmeld_nosuch(self): meld = s_mindmeld.MindMeld() self.assertRaises(NoSuchPath, meld.addPyPath, '/newp')
def test_mindmeld_pkgwalk(self): meld = s_mindmeld.MindMeld() meld.addPyPath(syndir) moddef = meld.getMeldMod('synapse.tests.test_mindmeld') self.assertIsNotNone(moddef)