def test_macro_macro_assemble_save_as(self, tmpdir): newname = random_string() m = GetAsset('macro/MVMacro1.xml') assert m is not None assert m.xmlfile == 'macro/MVMacro1.xml' m.assemble(save_name=newname) assert os.path.exists(newname + '.mtmacro')
def test_asset_project4_assemble(self, tmpdir): # project 4 has a macro2 and a text with a name m = GetAsset(self.source[3]['filename']) assert m is not None m.assemble() assert os.path.exists(self.source[3]['textfile']), f'{glob("*")=}\n\n{self.source=}' assert os.path.exists('Minimum+Viable+Macro+2.' + tagset.macro.ext)
def test_macro_assemble_macro2(self, tmpdir): saveplus = 'Minimum+Viable+Macro+2' m = GetAsset('macro/MVMacro2.xml') assert m is not None m.assemble() assert m.best_name_escaped() == saveplus assert os.path.exists(saveplus + '.mtmacro'), f'{saveplus+".mtmacro"} does not exist as expected'
def test_properties_asset_assemble(self, tmpdir): newname = random_string() newfilename = newname + '.' + tagset.properties.ext m = GetAsset('MVProps/content.xml') assert m is not None m.assemble(save_name=newname) assert os.path.exists(newfilename), f'{newfilename} was not found'
def step_impl(context): # noqa: F811 m = GetAsset(context.macrosrc) m.root.command = objectify.StringElement(git_comment_str + '\n' + m.root.command.text) context.macroname = random_string() m.assemble(context.macroname) assert os.path.exists( context.macrofile), f"{context.macrofile} not found in '{os.getcwd()}'"
def test_asset_project1_assemble(self, tmpdir): print(f'in test_asset_project1_assemble with {self.source}') m = GetAsset(self.source[0]['filename']) assert m is not None m.assemble() assert os.path.exists('MVToken.' + tagset.token.ext) assert os.path.exists('MVProps.' + tagset.properties.ext) assert os.path.exists(self.source[0]['macrosetname'] + '.' + tagset.macroset.ext)
def test_properties_asset_extract(self, tmpdir): newname = random_string() m = GetAsset('MVProps/content.xml') assert m is not None m.extract(save_name=newname) for filename in 'content.xml', 'properties.xml': file_exists = os.path.join(newname, filename) assert os.path.exists(file_exists), f'{file_exists} does not exist'
def test_macro_assemble_macro1(self, tmpdir): # saveperc = 'Minimum%20Viable%20Macro%201' # savepath = 'Minimum%2BViable%2BMacro%2B1' saveplus = 'Minimum+Viable+Macro+1' m = GetAsset('macro/MVMacro1.xml') assert m is not None m.assemble() assert m.best_name_escaped() == saveplus assert os.path.exists(saveplus + '.mtmacro'), f'{saveplus + ".mtmacro"} does not exist as expected'
def test_macro_macroset_append_object(self, tmpdir): m = GetAsset('macro/MVMacro1.xml') assert m is not None o = GetAsset('MVMacroSet.mtmacset') assert o is not None o.append(m) assert o is not None # see if o now has two copies of m assert len(o.root.findall('./' + tagset.macro.tag)) == 3
def test_asset_project3_assemble(self, tmpdir): # p3 has macroset, project # p2 has macro, text m = GetAsset(self.source[2]['filename']) assert m is not None m.assemble() assert os.path.exists(self.source[2]['macrosetname'] + '.' + tagset.macroset.ext), f'{glob("*")=}' # These files come from Project2 assert os.path.exists('README.txt') assert os.path.exists('Minimum+Viable+Macro+1.' + tagset.macro.ext)
def test_asset_token_assemble_macroPropertiesMap(self, tmpdir): tokenname = 'MVToken' m = GetAsset(tokenname) assert m is not None m.assemble() n = GetAsset(tokenname + '.rptok') assert n is not None assert n.xml.find('macroPropertiesMap/entry/macro') is None assert n.xml.find('macroPropertiesMap/entry/' + tagset.macro.tag) is not None
def test_asset_token_assemble(self, tmpdir): m = GetAsset('MVToken') assert m is not None assert m.fromdir is not None assert m.xmlfile is not None assert m.zipfile is None # assert False, f'{m.whence=}' # assert False, f'{m.dirname=}' m.assemble() assert os.path.exists('MVToken.rptok')
def test_macro_macroset_assemble_save_as(self, tmpdir): newname = random_string() newfilename = newname + '.' + tagset.macroset.ext assert os.path.exists('MVMacroSet.mtmacset') m = GetAsset('MVMacroSet.mtmacset') assert m is not None assert m.best_name(newname) == newname # assert False, f'{m.xmlfile} is m.xmlfile' # assert False, f'{m.dirname} is m.dirname' m.assemble(save_name=newname) assert os.path.exists(newfilename), f'{newfilename} does not exist'
def test_properties_asset_from_dir_equals_xml(self, tmpdir): m = GetAsset('MVProps/content.xml') assert m is not None assert m.fromdir is not None assert m.xmlfile is not None assert m.tag == tagset.properties.tag n = GetAsset('MVProps') assert n is not None assert n.fromdir is not None assert n.xmlfile is not None assert n.tag == tagset.properties.tag assert tostring(m.root) == tostring(n.root)
def test_asset_with_macro_command(self, tmpdir): fn = os.path.join(tmpdir, 'Junk.command') with open(fn, 'w') as f: f.write('') fn = os.path.join(tmpdir, 'Junk.xml') with open(fn, 'w') as f: f.write('<' + tagset.macro.tag + '>') f.write(' <label>Test</label>') f.write('</' + tagset.macro.tag + '>') m = GetAsset(fn) assert m.is_macro is True assert m.is_project is False assert m.is_macroset is False assert m.is_token is False assert m.is_properties is False m.assemble() assert os.path.exists('./Test.mtmacro') os.remove('./Test.mtmacro') m = GetAsset(os.path.join(tmpdir, 'Junk.command')) assert m.is_macro is True assert m.is_project is False assert m.is_macroset is False assert m.is_token is False assert m.is_properties is False m.assemble() assert os.path.exists('./Test.mtmacro') os.remove('./Test.mtmacro')
def test_asset_with_token(self, tmpdir): dn = os.path.join(tmpdir, 'MTToken') os.makedirs(dn, exist_ok=True) fn = os.path.join(dn, 'content.xml') with open(fn, 'w') as f: f.write('<' + tagset.token.tag + '>') f.write('<name>Test-MTToken</name>') f.write('</' + tagset.token.tag + '>') m = GetAsset(dn) assert m.is_properties is False assert m.is_project is False assert m.is_macro is False assert m.is_macroset is False assert m.is_token is True m.assemble() assert os.path.exists('MTToken.rptok') os.remove('MTToken.rptok') m = GetAsset(fn) assert m.is_properties is False assert m.is_project is False assert m.is_macro is False assert m.is_macroset is False assert m.is_token is True m.assemble() assert os.path.exists('MTToken.rptok')
def step_impl(context): # noqa: F811 assert 'token' in context.source assert 'src' in context.source['token'] assert len(context.source['token']['src']) > 1 context.tokenpath = context.source['token']['src'][1] context.tokenname = 'Lib:' + random_string() m = GetAsset(context.tokenpath) assert m is not None m.root.name = context.tokenname filename = context.tokenname.replace(':', '-') m.assemble(filename) context.tokenfile = filename + '.' + tagset.token.ext assert os.path.exists( context.tokenfile ), f'{context.tokenfile} does not exist in \'{os.getcwd()}\''
def test_asset_project3(self, tmpdir): m = GetAsset(self.source[2]['filename']) assert m is not None assert m.fromdir is not None assert m.xmlfile is not None assert m.zipfile is None assert m.xml.find('macroset') is not None
def test_asset_with_non_xml_file(self, tmpdir): fn = os.path.join(tmpdir, 'Junk.xml') with open(fn, 'w') as f: f.write('') with pytest.raises(XMLSyntaxError): m = GetAsset(fn) assert m is not None
def test_macro_with_macro2(self, tmpdir): m = GetAsset('macro/MVMacro2.xml') assert m is not None assert m.fromdir is not None assert m.xmlfile is not None assert m.zipfile is None assert m.tag == tagset.macro.tag
def test_token_extract(self, token_file, tmpdir): tokfile = os.path.join(self.origdir, token_file) tokname = os.path.basename(os.path.splitext(token_file)[0]) assert os.path.exists(tokfile), f'{tokfile} does not exist' tok = GetAsset(tokfile) assert tok is not None tok.extract() assert os.path.exists(tokname), f'{tokname} does not exist' assert os.path.isdir(tokname), f'{tokname} is not a directory' assert os.path.exists(os.path.join( tokname, 'content.xml')), f'content.xml not in {tokname}' assert os.path.exists(os.path.join( tokname, 'properties.xml')), f'properties.xml not in {tokname}' assert os.path.exists(os.path.join( tokname, 'thumbnail')), f'thumbnail not in {tokname}' assert os.path.exists(os.path.join( tokname, 'thumbnail_large')), f'thumbnail_large not in {tokname}'
def test_asset_token(self, tmpdir): m = GetAsset('MVToken/content.xml') assert m is not None assert m.fromdir is not None assert m.xmlfile is not None assert m.zipfile is None assert m.dirname is not None assert m.tag == tagset.token.tag
def test_macro_with_command_file(self, tmpdir): target = 'macro/MVMacro1.command' assert os.path.exists(target) m = GetAsset(target) assert m is not None assert m.fromdir is not None assert m.xmlfile is not None assert m.zipfile is None assert m.tag == tagset.macro.tag
def test_asset_project2(self, tmpdir): log.info(f'project[1] named {self.source[1]["name"]=} created in {self.source[1]["filename"]=}') m = GetAsset(self.source[1]['filename']) assert m is not None assert m.fromdir is not None assert m.xmlfile is not None assert m.zipfile is None assert m.xml.find('macro') is not None assert m.xml.find('text') is not None
def test_properties_append_MTProperties(self, tmpdir): newname = random_string() newfilename = newname + '.' + tagset.properties.ext m = GetAsset('MVProps/content.xml') assert m is not None m.append(GetAsset('MVProps2'), 'tokenTypeMap', 'entry[string="Second"]') m.assemble(save_name=newname) assert os.path.exists(newfilename) n = GetAsset(newfilename) assert n.xml.find('tokenTypeMap/entry[string="Second"]') is not None
def test_macro_extract_git_sha_remove(self, tmpdir): macroname = random_string() m = GetAsset('macro/MVMacro1') assert m is not None m.root.label = objectify.StringElement(macroname) m.assemble(save_name=macroname) m = GetAsset(macroname + '.' + tagset.macro.ext) assert m is not None assert m.is_macro m.extract() assert os.path.exists(f'macro/{macroname}.xml'), f'expected macro/{macroname}.xml in {glob("**/*")=}' assert os.path.exists(f'macro/{macroname}.command'), f'{glob("**/*")=}'
def test_asset_with_distant_properties(self, tmpdir): os.chdir('/tmp') dn = os.path.join(tmpdir, 'MTProps') os.makedirs(dn, exist_ok=True) fn = os.path.join(dn, 'content.xml') log.info(f'creating empty properties at {fn}') with open(fn, 'w') as f: f.write('<' + tagset.properties.tag + '>') f.write('</' + tagset.properties.tag + '>') log.info(f'opening asset at {fn}') m = GetAsset(fn) assert m.is_properties is True assert m.is_project is False assert m.is_macro is False assert m.is_macroset is False assert m.is_token is False os.makedirs('output', exist_ok=True) m.assemble() assert os.path.exists('MTProps.mtprops') os.remove('MTProps.mtprops')
def test_asset_token_save_to(self, tmpdir): target = 'NewMVToken' targetAsset = GetAsset('MVToken') targetAsset.assemble() assert os.path.exists('MVToken.rptok') m = GetAsset('MVToken.rptok') assert m is not None # m.extract(save_name=target) assert m.output_dir == '.' assert m.save_to(target) == './' + target
def test_token_extract_sha_gmname_remove(self, tmpdir): tokenname = 'Lib:' + random_string() tokennameq = tokenname.replace(':', '-') m = GetAsset('MVToken') assert m is not None m.assemble(save_name=tokennameq) m = GetAsset(tokennameq + '.' + tagset.token.ext) assert m is not None m.extract() assert os.path.exists(tokennameq) assert os.path.isdir(tokennameq) assert os.path.exists(os.path.join(tokennameq, 'content.xml')) xml = objectify.parse(os.path.join(tokennameq, 'content.xml')) assert 'gmName' not in [x.tag for x in xml.getroot().iterchildren()]
def test_asset_token_extract_with_name(self, tmpdir): tdir = 'MVToken' tfilename = tdir + '.rptok' target = 'NewMVToken' targetAsset = GetAsset(tdir) targetAsset.assemble() assert os.path.exists(tfilename), f'{tfilename} does not exist' m = GetAsset(tfilename) # assert False, m.save_to(None, target) assert m is not None assert m.fromdir is not None assert m.xmlfile is not None # should this be None? assert m.zipfile is not None m.extract(save_name=target) for asset in 'properties.xml', 'content.xml', 'thumbnail', 'thumbnail_large', '1d20.command', '1d20.xml': assert os.path.exists(os.path.join(target, asset))