def test(self): test = self.parser.parse(filename) if test.skip: if test.skip_reason: self.skipTest(test.skip_reason) else: self.skipTest("Mark as skipped") return source = SourceCode(filename) source.content = test.source self.redirect_output() try: if not test.compile_only: context = Context(filename) source.interpret(context, Frame()) except PieError as e: os.write(2, e.get_message()) except Exception as e: self.restore_output() self.fail(e) self.restore_output() if test.has_result and not test.compile_only: # rewind file pointer and read content self.output_file.seek(self.current_position) actual_result = str.splitlines(self.output_file.read()) self._check_test_result(test, actual_result)
def run(filename): try: source = SourceCode(filename) source.open() except OSError: os.write(2, "Could not open input file: %s\n" % filename) return 1 try: context = Context(filename) source.interpret(context, Frame()) except PieError as e: os.write(2, e.get_message()) return 1 return 0