(self, text, *, fails=False)
| 866 | return script_helper.make_script(tempdir, modname, text) |
| 867 | |
| 868 | def run_script(self, text, *, fails=False): |
| 869 | r, w = os.pipe() |
| 870 | try: |
| 871 | script = dedent(f""" |
| 872 | import os, sys |
| 873 | os.write({w}, b'0') |
| 874 | |
| 875 | # This raises an exception: |
| 876 | {{}} |
| 877 | |
| 878 | # Nothing from here down should ever run. |
| 879 | os.write({w}, b'1') |
| 880 | class NeverError(Exception): pass |
| 881 | raise NeverError # never raised |
| 882 | """).format(dedent(text)) |
| 883 | if fails: |
| 884 | err = _interpreters.run_string(self.id, script) |
| 885 | self.assertIsNot(err, None) |
| 886 | return err |
| 887 | else: |
| 888 | err = _interpreters.run_string(self.id, script) |
| 889 | self.assertIs(err, None) |
| 890 | return None |
| 891 | except: |
| 892 | raise # re-raise |
| 893 | else: |
| 894 | msg = os.read(r, 100) |
| 895 | self.assertEqual(msg, b'0') |
| 896 | finally: |
| 897 | os.close(r) |
| 898 | os.close(w) |
| 899 | |
| 900 | def _assert_run_failed(self, exctype, msg, script): |
| 901 | if isinstance(exctype, str): |
no test coverage detected