diff --git a/Lib/binhex.py b/Lib/binhex.py
index 4b7997a..999a675 100644
--- a/Lib/binhex.py
+++ b/Lib/binhex.py
@@ -52,14 +52,13 @@
 
 def getfileinfo(name):
     finfo = FInfo()
-    fp = io.open(name, 'rb')
-    # Quick check for textfile
-    data = fp.read(512)
-    if 0 not in data:
-        finfo.Type = 'TEXT'
-    fp.seek(0, 2)
-    dsize = fp.tell()
-    fp.close()
+    with io.open(name, 'rb') as fp:
+        # Quick check for textfile
+        data = fp.read(512)
+        if 0 not in data:
+            finfo.Type = 'TEXT'
+        fp.seek(0, 2)
+        dsize = fp.tell()
     dir, file = os.path.split(name)
     file = file.replace(':', '-', 1)
     return file, finfo, dsize, 0
@@ -140,19 +139,26 @@
 class BinHex:
     def __init__(self, name_finfo_dlen_rlen, ofp):
         name, finfo, dlen, rlen = name_finfo_dlen_rlen
+        close_on_error = False
         if isinstance(ofp, str):
             ofname = ofp
             ofp = io.open(ofname, 'wb')
-        ofp.write(b'(This file must be converted with BinHex 4.0)\r\r:')
-        hqxer = _Hqxcoderengine(ofp)
-        self.ofp = _Rlecoderengine(hqxer)
-        self.crc = 0
-        if finfo is None:
-            finfo = FInfo()
-        self.dlen = dlen
-        self.rlen = rlen
-        self._writeinfo(name, finfo)
-        self.state = _DID_HEADER
+            close_on_error = True
+        try:
+            ofp.write(b'(This file must be converted with BinHex 4.0)\r\r:')
+            hqxer = _Hqxcoderengine(ofp)
+            self.ofp = _Rlecoderengine(hqxer)
+            self.crc = 0
+            if finfo is None:
+                finfo = FInfo()
+            self.dlen = dlen
+            self.rlen = rlen
+            self._writeinfo(name, finfo)
+            self.state = _DID_HEADER
+        except:
+            if close_on_error:
+                ofp.close()
+            raise
 
     def _writeinfo(self, name, finfo):
         nl = len(name)
diff --git a/Lib/test/test_binhex.py b/Lib/test/test_binhex.py
index d6ef84a..a807bca 100755
--- a/Lib/test/test_binhex.py
+++ b/Lib/test/test_binhex.py
@@ -15,10 +15,12 @@
     def setUp(self):
         self.fname1 = support.TESTFN + "1"
         self.fname2 = support.TESTFN + "2"
+        self.fname3 = support.TESTFN + "very_long_filename__very_long_filename__very_long_filename__very_long_filename__"
 
     def tearDown(self):
         support.unlink(self.fname1)
         support.unlink(self.fname2)
+        support.unlink(self.fname3)
 
     DATA = b'Jack is my hero'
 
@@ -37,6 +39,15 @@
 
         self.assertEqual(self.DATA, finish)
 
+    def test_binhex_error_on_long_filename(self):
+        """
+        The testcase fails if no exception is raised when a filename parameter provided to binhex.binhex()
+        is too long, or if the exception raised in binhex.binhex() is not an instance of binhex.Error.
+        """
+        f3 = open(self.fname3, 'wb')
+        f3.close()
+
+        self.assertRaises(binhex.Error, binhex.binhex, self.fname3, self.fname2)
 
 def test_main():
     support.run_unittest(BinHexTestCase)
diff --git a/Misc/ACKS b/Misc/ACKS
index 0cbc670..f2bf3cd 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -447,6 +447,7 @@
 Peter van Kampen
 Rafe Kaplan
 Jacob Kaplan-Moss
+Arkady Koplyarov
 Lou Kates
 Hiroaki Kawai
 Sebastien Keim
diff --git a/Misc/NEWS b/Misc/NEWS
index c787ece..f2d0d76 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -40,6 +40,8 @@
 Library
 -------
 
+- Issue #11577: fix ResourceWarning triggered by improved binhex test coverage
+
 - Issue #11401: fix handling of headers with no value; this fixes a regression
   relative to Python2 and the result is now the same as it was in Python2.
 
@@ -129,6 +131,8 @@
 Tests
 -----
 
+- Issue #11577: improve test coverage of binhex.py. Patch by Arkady Koplyarov.
+
 - Issue #11578: added test for the timeit module.  Patch Michael Henry.
 
 - Issue #11503: improve test coverage of posixpath.py. Patch by Evan Dandrea.
