コード例 #1
0
ファイル: compatibility_core.py プロジェクト: ucfunnel/leaves
    def run_python(self):
        with dir_changer(self.dirname, delete_dir=False):
            script_filename = f'{self.__class__.__name__.lower()}.py'
            with open(script_filename, 'w', encoding='utf-8') as fout:
                fout.write(self.python_code())

            execute_wrapper([self.venv.python_path, script_filename])
コード例 #2
0
ファイル: compatibility_core.py プロジェクト: ucfunnel/leaves
    def run_go(self):
        with dir_changer(self.dirname, delete_dir=False):
            script_filename = f'{self.__class__.__name__.lower()}.go'
            with open(script_filename, 'w', encoding='utf-8') as fout:
                fout.write(self.go_code())

            if self.leaves_path:
                with open('go.mod', 'w', encoding='utf-8') as fout:
                    fout.write(f"""
module main

require "github.com/ucfunnel/leaves" v0.0.0
replace "github.com/ucfunnel/leaves" v0.0.0 => "{self.leaves_path}"
""")

            self.logger.info(f'Build {script_filename}')
            execute_wrapper(['go', 'build', script_filename])

            executable_filename = script_filename[:-3]
            if not os.path.isfile(executable_filename):
                raise RuntimeError(
                    f'no executable found: {executable_filename}')

            self.logger.info(f'Run {executable_filename}')
            execute_wrapper([f'./{executable_filename}'])
コード例 #3
0
ファイル: doctest.py プロジェクト: xxnmxx/leaves
def execute_programs(programs, dirname):
    """
    Execute programs in `dirname`. If `dirname` is empty the temporary dir
    will be created and removed after.
    """
    if not dirname:
        delete_dir = True
        dirname = tempfile.mkdtemp(prefix='doctest')
    else:
        delete_dir = False
        dirname = os.path.abspath(dirname)
        os.makedirs(dirname, exist_ok=True)
    logger.info(f'Dir: {dirname} (delete: {delete_dir})')

    with dir_changer(dirname, delete_dir):
        for program in programs:
            executor = program_types[program.language]
            executor(program)