diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index 7711293..a4a4407 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -539,32 +539,6 @@
                 if err.errno != 2:  # ignore "no such file"
                     raise
 
-    def test_undecodable_env(self):
-        for key, value in (('test', 'abc\uDCFF'), ('test\uDCFF', '42')):
-            value_repr = repr(value).encode("ascii")
-
-            # test str with surrogates
-            script = "import os; print(repr(os.getenv(%s)))" % repr(key)
-            env = os.environ.copy()
-            env[key] = value
-            stdout = subprocess.check_output(
-                [sys.executable, "-c", script],
-                env=env)
-            stdout = stdout.rstrip(b'\n\r')
-            self.assertEquals(stdout, value_repr)
-
-            # test bytes
-            key = key.encode("ascii", "surrogateescape")
-            value = value.encode("ascii", "surrogateescape")
-            script = "import os; print(repr(os.getenv(%s)))" % repr(key)
-            env = os.environ.copy()
-            env[key] = value
-            stdout = subprocess.check_output(
-                [sys.executable, "-c", script],
-                env=env)
-            stdout = stdout.rstrip(b'\n\r')
-            self.assertEquals(stdout, value_repr)
-
     #
     # POSIX tests
     #
@@ -704,6 +678,32 @@
             p.terminate()
             self.assertEqual(p.wait(), -signal.SIGTERM)
 
+        def test_undecodable_env(self):
+            for key, value in (('test', 'abc\uDCFF'), ('test\uDCFF', '42')):
+                value_repr = repr(value).encode("ascii")
+
+                # test str with surrogates
+                script = "import os; print(repr(os.getenv(%s)))" % repr(key)
+                env = os.environ.copy()
+                env[key] = value
+                stdout = subprocess.check_output(
+                    [sys.executable, "-c", script],
+                    env=env)
+                stdout = stdout.rstrip(b'\n\r')
+                self.assertEquals(stdout, value_repr)
+
+                # test bytes
+                key = key.encode("ascii", "surrogateescape")
+                value = value.encode("ascii", "surrogateescape")
+                script = "import os; print(repr(os.getenv(%s)))" % repr(key)
+                env = os.environ.copy()
+                env[key] = value
+                stdout = subprocess.check_output(
+                    [sys.executable, "-c", script],
+                    env=env)
+                stdout = stdout.rstrip(b'\n\r')
+                self.assertEquals(stdout, value_repr)
+
     #
     # Windows tests
     #
