def METHOD_NAME(self):
    if verbose:
        print('try truncate')
    with self.open(TESTFN, 'r+b') as f:
        # this is already decided before start running the test suite
        # but we do it anyway for extra protection
        if not hasattr(f, 'truncate'):
            raise unittest.SkipTest("open().truncate() not available on this system")
        f.seek(0, 2)
        # else we've lost track of the true size
        self.assertEqual(f.tell(), size+1)
        # Cut it back via seek + truncate with no argument.
        newsize = size - 10
        f.seek(newsize)
        f.truncate()
        self.assertEqual(f.tell(), newsize)  # else pointer moved
        f.seek(0, 2)
        self.assertEqual(f.tell(), newsize)  # else wasn't truncated
        # Ensure that truncate(smaller than true size) shrinks
        # the file.
        newsize -= 1
        f.seek(42)
        f.truncate(newsize)
        if self.new_io:
            self.assertEqual(f.tell(), 42)
        f.seek(0, 2)
        self.assertEqual(f.tell(), newsize)
        # XXX truncate(larger than true size) is ill-defined
        # across platform; cut it waaaaay back
        f.seek(0)
        f.truncate(1)
        if self.new_io:
            self.assertEqual(f.tell(), 0)       # else pointer moved
        f.seek(0)
        self.assertEqual(len(f.read()), 1)  # else wasn't truncated