def do_massage(
-    maildraft,
+    draft_f,
+    draftpath,
     cmd_f,
     *,
     extensions=None,
     cmds.flush()
 
     extensions = extensions.split(",") if extensions else []
-    with open(maildraft, "r") as draft_f:
-        tree = converter(
-            draft_f.read(), pathlib.Path(maildraft), extensions=extensions
-        )
+    tree = converter(draft_f.read(), draftpath, extensions=extensions)
 
     mimetree = MIMETreeDFWalker(debug=debug_walk)
 
         do_setup(args.extensions, debug_commands=args.debug_commands)
 
     elif args.mode == "massage":
-        with open(args.cmdpath, "w") as cmd_f:
+        with open(args.MAILDRAFT, "r") as draft_f, open(
+            args.cmdpath, "w"
+        ) as cmd_f:
             do_massage(
-                args.MAILDRAFT,
+                draft_f,
+                pathlib.Path(args.MAILDRAFT),
                 cmd_f,
                 extensions=args.extensions,
                 debug_commands=args.debug_commands,
 
 try:
     import pytest
+    from io import StringIO
 
     class Tests:
         @pytest.fixture
             assert lines[2].endswith(f'{const2},{const1}"')
             assert lines[4].endswith(const1)
 
-        def test_do_massage_basic(self, const1, capsys):
-            def converter(maildraft, extensions):
-                return Part("text", "plain", "/dev/null", orig=True)
+        @pytest.fixture
+        def string_io(self, const1, text=None):
+            return StringIO(text or const1)
 
-            do_massage(maildraft=const1, cmd_f=sys.stdout, converter=converter)
-            captured = capsys.readouterr()
-            assert (
-                captured.out.strip()
-                == """\
-            set editor="$my_editor"
-            set edit_headers="$my_edit_headers"
-            unset my_editor
-            unset my_edit_headers
-            source 'rm -f pytest_internal_file|'
-            unset my_mdwn_postprocess_cmd_file
-            """.replace(
-                    "            ", ""
-                ).strip()
+        def test_do_massage_basic(self, const1, string_io, capsys):
+            def converter(drafttext, draftpath, extensions):
+                return Part("text", "plain", draftpath, orig=True)
+
+            do_massage(
+                draft_f=string_io,
+                draftpath=const1,
+                cmd_f=sys.stdout,
+                converter=converter,
             )
 
-        def test_do_massage_fulltree(self, const1, basic_mime_tree, capsys):
-            def converter(maildraft, extensions):
+            captured = capsys.readouterr()
+            lines = captured.out.splitlines()
+            assert '="$my_editor"' in lines.pop(0)
+            assert '="$my_edit_headers"' in lines.pop(0)
+            assert "unset my_editor" == lines.pop(0)
+            assert "unset my_edit_headers" == lines.pop(0)
+            assert "update-encoding" in lines.pop(0)
+            assert "source 'rm -f " in lines.pop(0)
+            assert "unset my_mdwn_postprocess_cmd_file" == lines.pop(0)
+
+        def test_do_massage_fulltree(
+            self, string_io, const1, basic_mime_tree, capsys
+        ):
+            def converter(drafttext, draftpath, extensions):
                 return basic_mime_tree
 
-            do_massage(maildraft=const1, cmd_f=sys.stdout, converter=converter)
+            do_massage(
+                draft_f=string_io,
+                draftpath=const1,
+                cmd_f=sys.stdout,
+                converter=converter,
+            )
+
             captured = capsys.readouterr()
             lines = captured.out.splitlines()[4:][::-1]
             assert "Related" in lines.pop()