1from PyObjCTools.TestSupport import * 2 3from Foundation import * 4 5try: 6 unicode 7except NameError: 8 unicode = str 9 10class TestNSFileManagerHelper (NSObject): 11 def fileManager_shouldProceedAfterError_(self, a, b): return 1 12 def fileManager_willProcessPath_(self, a, b): pass 13 def fileManager_shouldCopyItemAtPath_toPath_(self, a, b, c): return 1 14 def fileManager_shouldProceedAfterError_copyingItemAtPath_toPath_(self, a, b, c, d): return 1 15 def fileManager_shouldMoveItemAtPath_toPath_(self, a, b, c): return 1 16 def fileManager_shouldProceedAfterError_movingItemAtPath_toPath_(self, a, b, c, d): return 1 17 def fileManager_shouldLinkItemAtPath_toPath_(self, a, b, c): return 1 18 def fileManager_shouldProceedAfterError_linkingItemAtPath_toPath_(self, a, b, c, d): return 1 19 def fileManager_shouldRemoveItemAtPath_(self, a, b): return 1 20 def fileManager_shouldProceedAfterError_removingItemAtPath_(self, a, b, c): return 1 21 22 def fileManager_shouldCopyItemAtURL_toURL_(self, a, b, c): return 1 23 def fileManager_shouldProceedAfterError_copyingItemAtURL_toURL_(self, a, b, c, d): return 1 24 def fileManager_shouldMoveItemAtURL_toURL_(self, a, b, c): return 1 25 def fileManager_shouldProceedAfterError_movingItemAtURL_toURL_(self, a, b, c, d): return 1 26 def fileManager_shouldLinkItemAtURL_toURL_(self, a, b, c): return 1 27 def fileManager_shouldProceedAfterError_linkingItemAtURL_toURL_(self, a, b, c, d): return 1 28 def fileManager_shouldRemoveItemAtURL_(self, a, b): return 1 29 def fileManager_shouldProceedAfterError_removingItemAtURL_(self, a, b, c): return 1 30 31 32 33class TestNSFileManager (TestCase): 34 def testConstants(self): 35 self.assertEqual(NSFoundationVersionWithFileManagerResourceForkSupport, 412) 36 37 self.assertIsInstance(NSFileType, unicode) 38 self.assertIsInstance(NSFileTypeDirectory, unicode) 39 self.assertIsInstance(NSFileTypeRegular, unicode) 40 self.assertIsInstance(NSFileTypeSymbolicLink, unicode) 41 self.assertIsInstance(NSFileTypeSocket, unicode) 42 self.assertIsInstance(NSFileTypeCharacterSpecial, unicode) 43 self.assertIsInstance(NSFileTypeBlockSpecial, unicode) 44 self.assertIsInstance(NSFileTypeUnknown, unicode) 45 self.assertIsInstance(NSFileSize, unicode) 46 self.assertIsInstance(NSFileModificationDate, unicode) 47 self.assertIsInstance(NSFileReferenceCount, unicode) 48 self.assertIsInstance(NSFileDeviceIdentifier, unicode) 49 self.assertIsInstance(NSFileOwnerAccountName, unicode) 50 self.assertIsInstance(NSFileGroupOwnerAccountName, unicode) 51 self.assertIsInstance(NSFilePosixPermissions, unicode) 52 self.assertIsInstance(NSFileSystemNumber, unicode) 53 self.assertIsInstance(NSFileSystemFileNumber, unicode) 54 self.assertIsInstance(NSFileExtensionHidden, unicode) 55 self.assertIsInstance(NSFileHFSCreatorCode, unicode) 56 self.assertIsInstance(NSFileHFSTypeCode, unicode) 57 self.assertIsInstance(NSFileImmutable, unicode) 58 self.assertIsInstance(NSFileAppendOnly, unicode) 59 self.assertIsInstance(NSFileCreationDate, unicode) 60 self.assertIsInstance(NSFileOwnerAccountID, unicode) 61 self.assertIsInstance(NSFileGroupOwnerAccountID, unicode) 62 self.assertIsInstance(NSFileBusy, unicode) 63 self.assertIsInstance(NSFileSystemSize, unicode) 64 self.assertIsInstance(NSFileSystemFreeSize, unicode) 65 self.assertIsInstance(NSFileSystemNodes, unicode) 66 self.assertIsInstance(NSFileSystemFreeNodes, unicode) 67 68 @min_os_level('10.6') 69 def testConstants10_6(self): 70 self.assertEqual(NSVolumeEnumerationSkipHiddenVolumes, 1<<1) 71 self.assertEqual(NSVolumeEnumerationProduceFileReferenceURLs, 1<<2) 72 73 self.assertEqual(NSDirectoryEnumerationSkipsSubdirectoryDescendants, 1<<0) 74 self.assertEqual(NSDirectoryEnumerationSkipsPackageDescendants, 1<<1) 75 self.assertEqual(NSDirectoryEnumerationSkipsHiddenFiles, 1<<2) 76 77 self.assertEqual(NSFileManagerItemReplacementUsingNewMetadataOnly, 1<<0) 78 self.assertEqual(NSFileManagerItemReplacementWithoutDeletingBackupItem, 1<<1) 79 80 @min_os_level('10.8') 81 def testConstants10_8(self): 82 self.assertIsInstance(NSUbiquityIdentityDidChangeNotification, unicode) 83 84 @min_os_level('10.6') 85 def testMethods10_6(self): 86 self.assertArgIsOut(NSFileManager.contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_, 3) 87 self.assertArgIsBOOL(NSFileManager.URLForDirectory_inDomain_appropriateForURL_create_error_, 3) 88 self.assertArgIsOut(NSFileManager.URLForDirectory_inDomain_appropriateForURL_create_error_, 4) 89 90 self.assertResultIsBOOL(NSFileManager.copyItemAtURL_toURL_error_) 91 self.assertArgIsOut(NSFileManager.copyItemAtURL_toURL_error_, 2) 92 self.assertResultIsBOOL(NSFileManager.moveItemAtURL_toURL_error_) 93 self.assertArgIsOut(NSFileManager.moveItemAtURL_toURL_error_, 2) 94 self.assertResultIsBOOL(NSFileManager.linkItemAtURL_toURL_error_) 95 self.assertArgIsOut(NSFileManager.linkItemAtURL_toURL_error_, 2) 96 self.assertResultIsBOOL(NSFileManager.removeItemAtURL_error_) 97 self.assertArgIsOut(NSFileManager.removeItemAtURL_error_, 1) 98 99 self.assertArgIsBlock(NSFileManager.enumeratorAtURL_includingPropertiesForKeys_options_errorHandler_, 3, objc._C_NSBOOL + b'@@') 100 101 self.assertResultIsBOOL(NSFileManager.replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_) 102 self.assertArgIsOut(NSFileManager.replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_, 4) 103 self.assertArgIsOut(NSFileManager.replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_, 5) 104 105 106 @min_os_level('10.7') 107 def testMethods10_7(self): 108 self.assertResultIsBOOL(NSFileManager.createDirectoryAtURL_withIntermediateDirectories_attributes_error_) 109 self.assertArgIsBOOL(NSFileManager.createDirectoryAtURL_withIntermediateDirectories_attributes_error_, 1) 110 self.assertArgIsOut(NSFileManager.createDirectoryAtURL_withIntermediateDirectories_attributes_error_, 3) 111 112 self.assertResultIsBOOL(NSFileManager.createSymbolicLinkAtURL_withDestinationURL_error_) 113 self.assertArgIsOut(NSFileManager.createSymbolicLinkAtURL_withDestinationURL_error_, 2) 114 115 self.assertResultIsBOOL(NSFileManager.setUbiquitous_itemAtURL_destinationURL_error_) 116 self.assertArgIsBOOL(NSFileManager.setUbiquitous_itemAtURL_destinationURL_error_, 0) 117 self.assertArgIsOut(NSFileManager.setUbiquitous_itemAtURL_destinationURL_error_, 3) 118 self.assertResultIsBOOL(NSFileManager.isUbiquitousItemAtURL_) 119 120 self.assertResultIsBOOL(NSFileManager.startDownloadingUbiquitousItemAtURL_error_) 121 self.assertArgIsOut(NSFileManager.startDownloadingUbiquitousItemAtURL_error_, 1) 122 123 self.assertResultIsBOOL(NSFileManager.evictUbiquitousItemAtURL_error_) 124 self.assertArgIsOut(NSFileManager.evictUbiquitousItemAtURL_error_, 1) 125 126 self.assertArgIsOut(NSFileManager.URLForPublishingUbiquitousItemAtURL_expirationDate_error_, 1) 127 self.assertArgIsOut(NSFileManager.URLForPublishingUbiquitousItemAtURL_expirationDate_error_, 2) 128 129 @min_os_level('10.8') 130 def testMethods10_8(self): 131 self.assertResultIsBOOL(NSFileManager.trashItemAtURL_resultingItemURL_error_) 132 self.assertArgIsOut(NSFileManager.trashItemAtURL_resultingItemURL_error_, 1) 133 self.assertArgIsOut(NSFileManager.trashItemAtURL_resultingItemURL_error_, 2) 134 135 def testOutput(self): 136 obj = NSFileManager.defaultManager() 137 m = obj.setAttributes_ofItemAtPath_error_.__metadata__() 138 self.assertTrue(m['arguments'][4]['type'].startswith(b'o^')) 139 140 m = obj.createDirectoryAtPath_withIntermediateDirectories_attributes_error_.__metadata__() 141 self.assertEqual(m['arguments'][3]['type'] , b'Z') 142 self.assertTrue(m['arguments'][5]['type'].startswith(b'o^')) 143 144 m = obj.contentsOfDirectoryAtPath_error_.__metadata__() 145 self.assertTrue(m['arguments'][3]['type'].startswith(b'o^')) 146 147 m = obj.subpathsOfDirectoryAtPath_error_.__metadata__() 148 self.assertTrue(m['arguments'][3]['type'].startswith(b'o^')) 149 150 m = obj.attributesOfItemAtPath_error_.__metadata__() 151 self.assertTrue(m['arguments'][3]['type'].startswith(b'o^')) 152 153 m = obj.attributesOfFileSystemForPath_error_.__metadata__() 154 self.assertTrue(m['arguments'][3]['type'].startswith(b'o^')) 155 156 m = obj.createSymbolicLinkAtPath_withDestinationPath_error_.__metadata__() 157 self.assertTrue(m['arguments'][4]['type'].startswith(b'o^')) 158 159 m = obj.destinationOfSymbolicLinkAtPath_error_.__metadata__() 160 self.assertTrue(m['arguments'][3]['type'].startswith(b'o^')) 161 162 m = obj.copyItemAtPath_toPath_error_.__metadata__() 163 self.assertEqual(m['retval']['type'] , b'Z') 164 self.assertTrue(m['arguments'][4]['type'].startswith(b'o^')) 165 166 m = obj.moveItemAtPath_toPath_error_.__metadata__() 167 self.assertEqual(m['retval']['type'] , b'Z') 168 self.assertTrue(m['arguments'][4]['type'].startswith(b'o^')) 169 170 m = obj.linkItemAtPath_toPath_error_.__metadata__() 171 self.assertEqual(m['retval']['type'] , b'Z') 172 self.assertTrue(m['arguments'][4]['type'].startswith(b'o^')) 173 174 m = obj.removeItemAtPath_error_.__metadata__() 175 self.assertEqual(m['retval']['type'] , b'Z') 176 self.assertTrue(m['arguments'][3]['type'].startswith(b'o^')) 177 178 def testProtocols(self): 179 class FileManagerTest1 (NSObject): 180 def fileManager_shouldCopyItemAtPath_toPath_(self, fm, src, dst): 181 return True 182 183 def fileManager_shouldProceedAfterError_copyingItemAtPath_toPath_(self, fm, error, src, dst): 184 return True 185 186 def fileManager_shouldMoveItemAtPath_toPath_(self, fm, src, dst): 187 return True 188 189 def fileManager_shouldProceedAfterError_movingItemAtPath_toPath_(self, fm, error, src, dst): 190 return True 191 192 def fileManager_shouldLinkItemAtPath_toPath_(self, fm, src, dst): 193 return True 194 195 def fileManager_shouldProceedAfterError_linkingItemAtPath_toPath_(self, fm, error, src, dst): 196 return True 197 198 def fileManager_shouldRemoveItemAtPath_(self, fm, src): 199 return True 200 201 def fileManager_shouldProceedAfterError_removingItemAtPath_(self, fm, error, src): 202 return True 203 204 obj = FileManagerTest1.alloc().init() 205 m = obj.fileManager_shouldCopyItemAtPath_toPath_.__metadata__() 206 self.assertEqual(m['retval']['type'] , 'Z') 207 m = obj.fileManager_shouldProceedAfterError_copyingItemAtPath_toPath_.__metadata__() 208 self.assertEqual(m['retval']['type'] , 'Z') 209 m = obj.fileManager_shouldMoveItemAtPath_toPath_.__metadata__() 210 self.assertEqual(m['retval']['type'] , 'Z') 211 m = obj.fileManager_shouldProceedAfterError_movingItemAtPath_toPath_.__metadata__() 212 self.assertEqual(m['retval']['type'] , 'Z') 213 m = obj.fileManager_shouldLinkItemAtPath_toPath_.__metadata__() 214 self.assertEqual(m['retval']['type'] , 'Z') 215 m = obj.fileManager_shouldProceedAfterError_linkingItemAtPath_toPath_.__metadata__() 216 self.assertEqual(m['retval']['type'] , 'Z') 217 m = obj.fileManager_shouldRemoveItemAtPath_.__metadata__() 218 self.assertEqual(m['retval']['type'] , 'Z') 219 m = obj.fileManager_shouldProceedAfterError_removingItemAtPath_.__metadata__() 220 self.assertEqual(m['retval']['type'] , 'Z') 221 @min_os_level('10.5') 222 def testMethods10_5(self): 223 self.assertResultIsBOOL(NSFileManager.setAttributes_ofItemAtPath_error_) 224 self.assertArgIsOut(NSFileManager.setAttributes_ofItemAtPath_error_, 2) 225 226 self.assertResultIsBOOL(NSFileManager.createDirectoryAtPath_withIntermediateDirectories_attributes_error_) 227 self.assertArgIsBOOL(NSFileManager.createDirectoryAtPath_withIntermediateDirectories_attributes_error_, 1) 228 self.assertArgIsOut(NSFileManager.createDirectoryAtPath_withIntermediateDirectories_attributes_error_, 3) 229 230 self.assertArgIsOut(NSFileManager.contentsOfDirectoryAtPath_error_, 1) 231 self.assertArgIsOut(NSFileManager.subpathsOfDirectoryAtPath_error_, 1) 232 self.assertArgIsOut(NSFileManager.attributesOfItemAtPath_error_, 1) 233 self.assertArgIsOut(NSFileManager.attributesOfFileSystemForPath_error_, 1) 234 235 self.assertResultIsBOOL(NSFileManager.createSymbolicLinkAtPath_withDestinationPath_error_) 236 self.assertArgIsOut(NSFileManager.createSymbolicLinkAtPath_withDestinationPath_error_, 2) 237 238 self.assertArgIsOut(NSFileManager.destinationOfSymbolicLinkAtPath_error_, 1) 239 240 self.assertResultIsBOOL(NSFileManager.copyItemAtPath_toPath_error_) 241 self.assertArgIsOut(NSFileManager.copyItemAtPath_toPath_error_, 2) 242 self.assertResultIsBOOL(NSFileManager.moveItemAtPath_toPath_error_) 243 self.assertArgIsOut(NSFileManager.moveItemAtPath_toPath_error_, 2) 244 self.assertResultIsBOOL(NSFileManager.linkItemAtPath_toPath_error_) 245 self.assertArgIsOut(NSFileManager.linkItemAtPath_toPath_error_, 2) 246 self.assertResultIsBOOL(NSFileManager.removeItemAtPath_error_) 247 self.assertArgIsOut(NSFileManager.removeItemAtPath_error_, 1) 248 249 250 def testMethods(self): 251 self.assertArgIsBOOL(NSFileManager.fileAttributesAtPath_traverseLink_, 1) 252 self.assertResultIsBOOL(NSFileManager.changeFileAttributes_atPath_) 253 self.assertResultIsBOOL(NSFileManager.createSymbolicLinkAtPath_pathContent_) 254 self.assertResultIsBOOL(NSFileManager.createDirectoryAtPath_attributes_) 255 self.assertResultIsBOOL(NSFileManager.linkPath_toPath_handler_) 256 self.assertResultIsBOOL(NSFileManager.copyPath_toPath_handler_) 257 self.assertResultIsBOOL(NSFileManager.movePath_toPath_handler_) 258 self.assertResultIsBOOL(NSFileManager.removeFileAtPath_handler_) 259 self.assertResultIsBOOL(NSFileManager.changeCurrentDirectoryPath_) 260 self.assertResultIsBOOL(NSFileManager.fileExistsAtPath_) 261 self.assertResultIsBOOL(NSFileManager.fileExistsAtPath_isDirectory_) 262 self.assertArgHasType(NSFileManager.fileExistsAtPath_isDirectory_, 1, b'o^' + objc._C_NSBOOL) 263 self.assertResultIsBOOL(NSFileManager.isReadableFileAtPath_) 264 self.assertResultIsBOOL(NSFileManager.isWritableFileAtPath_) 265 self.assertResultIsBOOL(NSFileManager.isExecutableFileAtPath_) 266 self.assertResultIsBOOL(NSFileManager.isDeletableFileAtPath_) 267 self.assertResultIsBOOL(NSFileManager.contentsEqualAtPath_andPath_) 268 self.assertResultIsBOOL(NSFileManager.createFileAtPath_contents_attributes_) 269 self.assertResultHasType(NSFileManager.fileSystemRepresentationWithPath_, b'^' + objc._C_CHAR_AS_TEXT) 270 self.assertResultIsNullTerminated(NSFileManager.fileSystemRepresentationWithPath_) 271 self.assertArgHasType(NSFileManager.stringWithFileSystemRepresentation_length_, 0, b'n^' + objc._C_CHAR_AS_TEXT) 272 self.assertArgSizeInArg(NSFileManager.stringWithFileSystemRepresentation_length_, 0, 1) 273 274 self.assertResultIsBOOL(NSDictionary.fileIsImmutable) 275 self.assertResultIsBOOL(NSDictionary.fileIsAppendOnly) 276 self.assertResultIsBOOL(NSDictionary.fileExtensionHidden) 277 278 def testProtocols(self): 279 self.assertResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldProceedAfterError_) 280 self.assertResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldCopyItemAtPath_toPath_) 281 self.assertResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldProceedAfterError_copyingItemAtPath_toPath_) 282 self.assertResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldMoveItemAtPath_toPath_) 283 self.assertResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldProceedAfterError_movingItemAtPath_toPath_) 284 self.assertResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldLinkItemAtPath_toPath_) 285 self.assertResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldProceedAfterError_linkingItemAtPath_toPath_) 286 self.assertResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldRemoveItemAtPath_) 287 self.assertResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldProceedAfterError_removingItemAtPath_) 288 289 @min_os_level('10.6') 290 def testProtocols10_6(self): 291 292 self.assertResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldCopyItemAtURL_toURL_) 293 self.assertResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldProceedAfterError_copyingItemAtURL_toURL_) 294 self.assertResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldMoveItemAtURL_toURL_) 295 self.assertResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldProceedAfterError_movingItemAtURL_toURL_) 296 self.assertResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldLinkItemAtURL_toURL_) 297 self.assertResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldProceedAfterError_linkingItemAtURL_toURL_) 298 self.assertResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldRemoveItemAtURL_) 299 self.assertResultIsBOOL(TestNSFileManagerHelper.fileManager_shouldProceedAfterError_removingItemAtURL_) 300 301if __name__ == '__main__': 302 main() 303