Skip to content

Pyfakefs case-sensitive rename behavior different from OS on Windows #160

Closed
@CausticYarn

Description

@CausticYarn

On Windows 7, renaming a file to the same name with a different case succeeds, but on pyfakefs it fails with the exception: WindowsError: [Error 17] Fake filesystem object: can not rename to existing file: '\FOO'

See reproduction below:

import pyfakefs.fake_filesystem

import os

with open('foo', 'w') as f:
    pass

os.rename('foo', 'foo')

#success
os.rename('foo', 'FOO')

with open('bar', 'w') as f:
    pass

try:
    os.rename('bar', 'foo')
except WindowsError as e:
    pass

os.remove('foo')

fake_filesystem = pyfakefs.fake_filesystem.FakeFilesystem()
fake_os = pyfakefs.fake_filesystem.FakeOsModule(fake_filesystem)

fake_filesystem.CreateFile('foo')
fake_os.rename('foo', 'foo')

#fails WindowsError: [Error 17] Fake filesystem object: can not rename to existing file: '\\FOO'
fake_os.rename('foo', 'FOO')

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions