| 2921 | self.assertEqual(stdout.decode('ascii'), ascii(encoded_value)) |
| 2922 | |
| 2923 | def test_bytes_program(self): |
| 2924 | abs_program = os.fsencode(ZERO_RETURN_CMD[0]) |
| 2925 | args = list(ZERO_RETURN_CMD[1:]) |
| 2926 | path, program = os.path.split(ZERO_RETURN_CMD[0]) |
| 2927 | program = os.fsencode(program) |
| 2928 | |
| 2929 | # absolute bytes path |
| 2930 | exitcode = subprocess.call([abs_program]+args) |
| 2931 | self.assertEqual(exitcode, 0) |
| 2932 | |
| 2933 | # absolute bytes path as a string |
| 2934 | cmd = b"'%s' %s" % (abs_program, " ".join(args).encode("utf-8")) |
| 2935 | exitcode = subprocess.call(cmd, shell=True) |
| 2936 | self.assertEqual(exitcode, 0) |
| 2937 | |
| 2938 | # bytes program, unicode PATH |
| 2939 | env = os.environ.copy() |
| 2940 | env["PATH"] = path |
| 2941 | exitcode = subprocess.call([program]+args, env=env) |
| 2942 | self.assertEqual(exitcode, 0) |
| 2943 | |
| 2944 | # bytes program, bytes PATH |
| 2945 | envb = os.environb.copy() |
| 2946 | envb[b"PATH"] = os.fsencode(path) |
| 2947 | exitcode = subprocess.call([program]+args, env=envb) |
| 2948 | self.assertEqual(exitcode, 0) |
| 2949 | |
| 2950 | def test_pipe_cloexec(self): |
| 2951 | sleeper = support.findfile("input_reader.py", subdir="subprocessdata") |