def test_is_dir_empty(): work_dir = os.getcwd() test_dir_path = os.path.join(work_dir, 'dir') deleted_file_path = os.path.join(test_dir_path, 'deleted2.txt') deleted_file2_path = os.path.join(test_dir_path, 'deleted.txt') mkdir(test_dir_path) ntfile = NTFile(test_dir_path) ntfile2 = NTFile(deleted_file_path) try: assert ntfile.is_dir_empty touch(deleted_file_path) touch(deleted_file2_path) assert not ntfile.is_dir_empty ntfile2.open(Access.DELETE, Share.DELETE) ntfile2.dispose() assert not ntfile.is_dir_empty rm(deleted_file2_path) assert ntfile.is_dir_empty finally: ntfile.close() ntfile2.close()
def test_dispose(): work_dir = os.getcwd() test_file_path = os.path.join(work_dir, 'test_dispose.txt') touch(test_file_path) ntfile = NTFile(test_file_path) ntfile.open(Access.READ_DATA) try: with pytest.raises(NTException): ntfile.dispose() finally: ntfile.close() ntfile.dispose()
def test_unlink(): work_dir = os.getcwd() test_dir_path = os.path.join(work_dir, 'dir') deleted_file_path = os.path.join(test_dir_path, 'deleted2.txt') mkdir(test_dir_path) ntfile = NTFile(test_dir_path) ntfile3 = NTFile(test_dir_path) ntfile2 = NTFile(deleted_file_path) try: # delete inexisting file ntfile2.unlink() # delete file with readonly attribute touch(deleted_file_path) ntfile2.read_attributes() ntfile2.basic_info.file_attributes.attr |= FileAttribute.READONLY ntfile2.write_attributes() ntfile2.unlink() # delete file already pending deletion touch(deleted_file_path) ntfile2.open(Access.DELETE, Share.DELETE) ntfile2.dispose() ntfile2.unlink() # delete containing directory ntfile.unlink() ntfile.close() ntfile2.close() mkdir(test_dir_path) ntfile.open(Access.LIST_DIRECTORY, Share.ALL) ntfile3.unlink() finally: ntfile.close() ntfile2.close() ntfile2.close()
def test_unlink(): work_dir = os.getcwd() test_dir_path = os.path.join(work_dir, 'dir') deleted_file_path = os.path.join(test_dir_path, 'deleted2.txt') mkdir(test_dir_path) ntfile = NTFile(test_dir_path) ntfile3 = NTFile(test_dir_path) ntfile2 = NTFile(deleted_file_path) try: # delete inexisting file ntfile2.unlink() # delete file with readonly attribute touch(deleted_file_path) ntfile2.read_attributes() ntfile2.basic_info.file_attributes.attr |= FileAttribute.READONLY assert 'READONLY' in str(ntfile2.basic_info.file_attributes) ntfile2.write_attributes() ntfile2.unlink() # delete file already pending deletion touch(deleted_file_path) ntfile2.open(Access.DELETE, Share.DELETE) ntfile2.dispose() ntfile2.unlink() # delete containing directory ntfile.unlink() ntfile.close() ntfile2.close() mkdir(test_dir_path) ntfile.open(Access.LIST_DIRECTORY, Share.ALL) ntfile3.unlink() finally: ntfile.close() ntfile2.close() ntfile2.close() ntfile = NTFile('nul') with pytest.raises(NTException) as err: ntfile.unlink() ntfile.close() assert 'NTFile.read_attributes:' in str(err) # A directory that is not empty cannot be deleted dir_to_delete = os.path.join(test_dir_path, 'dir_to_delete') mkdir(dir_to_delete) touch(os.path.join(dir_to_delete, 'afile.txt')) ntfile = NTFile(dir_to_delete) try: with pytest.raises(NTException) as err: ntfile.unlink() finally: ntfile.close() # A directory that is already opened and not empty cannot be # moved to trash dir_to_delete = os.path.join(test_dir_path, 'dir_to_delete') mkdir(dir_to_delete) touch(os.path.join(dir_to_delete, 'afile.txt')) ntfile = NTFile(dir_to_delete) ntfile2 = NTFile(dir_to_delete) try: ntfile.open(Access.LIST_DIRECTORY, Share.ALL) with pytest.raises(NTException) as err: ntfile2.unlink() finally: ntfile.close() ntfile2.close() # Try to delete a file that we cannot open ntfile = NTFile(deleted_file_path) ntfile2 = NTFile(deleted_file_path) try: touch(deleted_file_path) ntfile.open(Access.READ_DATA, Share.NOTHING) with pytest.raises(NTException) as err: ntfile2.unlink() finally: ntfile.close() ntfile2.close()