def test_singleSourceSetup(self): '''Test setting up a single source folder''' # setup the cache folder so that we can do tests cacheFolderPath = tempFolderManager.getNewTempFolder() cacheController.setCacheFolder(cacheFolderPath) sourceFolderPath = tempFolderManager.getNewTempFolder() # sanity check that it was not already somehow the source folders already self.assertFalse(sourceFolderPath in cacheController.sourceFolders, 'The new sourceFolder was found in the sourceFodlers variable too soon') self.assertNotEqual(sourceFolderPath, cacheController.writeableCacheFolder, 'The new sourceFolder should not be the selected cache folder') # check that adding the source folder results in it being actually added cacheController.addSourceFolders(sourceFolderPath) self.assertTrue(sourceFolderPath in cacheController.sourceFolders, 'After being added with addSourceFolders the test source path was not in the sourceFolders vaiable') self.assertTrue(sourceFolderPath in cacheController.getSourceFolders(), 'After being added with addSourceFolders the test source path was not in the getSourceFolders output') # check that this has not affected the cache folder setting self.assertEqual(cacheFolderPath, cacheController.getCacheFolder(), 'After adding a source folder the cache folder should not change') # remove the source folder, and check to make sure it is removed cacheController.removeSourceFolders(sourceFolderPath) self.assertFalse(sourceFolderPath in cacheController.sourceFolders, 'After calling removeSourceFolder the source folder was still in the sourceFolders list') # cleanup cacheController.removeCacheFolder() cacheController.removeSourceFolders(cacheFolderPath) tempFolderManager.cleanupItem(cacheFolderPath) tempFolderManager.cleanupItem(sourceFolderPath)
def test_multipleSourceSetup(self): '''Test setting up multiple source folders''' # setup the cache folder so that we can do tests cacheFolderPath = tempFolderManager.getNewTempFolder() cacheController.setCacheFolder(cacheFolderPath) firstSourceFolderPath = tempFolderManager.getNewTempFolder() secondSourceFolderPath = tempFolderManager.getNewTempFolder() thirdSourceFolderPath = tempFolderManager.getNewTempFolder() # add the first two items and confirm they are there cacheController.addSourceFolders([firstSourceFolderPath, secondSourceFolderPath]) self.assertTrue(firstSourceFolderPath in cacheController.sourceFolders, 'After being added with addSourceFolders the first test source path was not in the sourceFolders vaiable') self.assertTrue(firstSourceFolderPath in cacheController.getSourceFolders(), 'After being added with addSourceFolders the first test source path was not in the getSourceFolders output') self.assertTrue(secondSourceFolderPath in cacheController.sourceFolders, 'After being added with addSourceFolders the second test source path was not in the sourceFolders vaiable') self.assertTrue(secondSourceFolderPath in cacheController.getSourceFolders(), 'After being added with addSourceFolders the second test source path was not in the getSourceFolders output') # add the third item, verifying that all three are there cacheController.addSourceFolders(thirdSourceFolderPath) self.assertTrue(firstSourceFolderPath in cacheController.sourceFolders, 'After adding the third source item with addSourceFolders the first test source path was not in the sourceFolders vaiable') self.assertTrue(firstSourceFolderPath in cacheController.getSourceFolders(), 'After adding the third source item with addSourceFolders the first test source path was not in the getSourceFolders output') self.assertTrue(secondSourceFolderPath in cacheController.sourceFolders, 'After adding the third source item with addSourceFolders the second test source path was not in the sourceFolders vaiable') self.assertTrue(secondSourceFolderPath in cacheController.getSourceFolders(), 'After adding the third source item with addSourceFolders the second test source path was not in the getSourceFolders output') self.assertTrue(thirdSourceFolderPath in cacheController.sourceFolders, 'After adding the third source item with addSourceFolders the third test source path was not in the sourceFolders vaiable') self.assertTrue(thirdSourceFolderPath in cacheController.getSourceFolders(), 'After adding the third source item with addSourceFolders the third test source path was not in the getSourceFolders output') # remove the second item, and verify that it is removed, and the other two still there cacheController.removeSourceFolders(secondSourceFolderPath) self.assertFalse(secondSourceFolderPath in cacheController.sourceFolders, 'After removing the second source item with removeSourceFolders the second test source path was still in the sourceFolders vaiable') self.assertFalse(secondSourceFolderPath in cacheController.getSourceFolders(), 'After removing the second source item with removeSourceFolders the second test source path was still in the getSourceFolders output') self.assertTrue(firstSourceFolderPath in cacheController.sourceFolders, 'After removing the second source item with removeSourceFolders the first test source path was not in the sourceFolders vaiable') self.assertTrue(firstSourceFolderPath in cacheController.getSourceFolders(), 'After removing the second source item with removeSourceFolders the first test source path was not in the getSourceFolders output') self.assertTrue(thirdSourceFolderPath in cacheController.sourceFolders, 'After removing the second source item with removeSourceFolders the third test source path was not in the sourceFolders vaiable') self.assertTrue(thirdSourceFolderPath in cacheController.getSourceFolders(), 'After removing the second source item with removeSourceFolders the third test source path was not in the getSourceFolders output') # remove the two remaining items and verify that they are gone cacheController.removeSourceFolders([firstSourceFolderPath, thirdSourceFolderPath]) self.assertFalse(firstSourceFolderPath in cacheController.sourceFolders, 'After removing the first and third source item with removeSourceFolders the first test source path was still in the sourceFolders vaiable') self.assertFalse(secondSourceFolderPath in cacheController.sourceFolders, 'After removing the first and third source item with removeSourceFolders the second test source path was still in the sourceFolders vaiable') self.assertFalse(thirdSourceFolderPath in cacheController.sourceFolders, 'After removing the first and third source item with removeSourceFolders the third test source path was still in the sourceFolders vaiable') # cleanup cacheController.removeCacheFolder() cacheController.removeSourceFolders(cacheFolderPath) tempFolderManager.cleanupItem(cacheFolderPath) tempFolderManager.cleanupItem(firstSourceFolderPath) tempFolderManager.cleanupItem(secondSourceFolderPath) tempFolderManager.cleanupItem(thirdSourceFolderPath)
def getDownloadedPkgInDmgPath(): global downloadedPkgInDmgPath if downloadedPkgInDmgPath is not None and os.path.exists(downloadedPkgInDmgPath): return downloadedPkgInDmgPath # download a smaller update from Apple if it is not already cached cacheController.setCacheFolder(tempFolderManager.tempFolderManager.getNewTempFolder()) cacheController.addSourceFolders(commonConfiguration.standardCacheFolder) sampleItemDMG = installerPackage.installerPackage('http://support.apple.com/downloads/DL792/en_US/AirPortClientUpdate2009001.dmg', 'sha1:168065c8bf2e6530a3053899ac7a6a210e9397d7') sampleItemDMG.findItem(progressReporter=False) downloadedPkgInDmgPath = sampleItemDMG.getItemLocalPath() return downloadedPkgInDmgPath
def test_cacheSetup(self): '''Test setting up cache folder''' cacheFolderPath = tempFolderManager.getNewTempFolder() # sanity check that it was not already somehow the cache and source folders already self.assertNotEqual( cacheFolderPath, cacheController.writeableCacheFolder, 'The cache folder to be used for testing was already set: ' + str(cacheFolderPath)) self.assertFalse( cacheFolderPath in cacheController.sourceFolders, 'The new cache folder was somehow already in the source folder set: ' + str(cacheFolderPath)) # check that adding a folder adds it to the inside cacheController.setCacheFolder(cacheFolderPath) self.assertEqual( cacheFolderPath, cacheController.writeableCacheFolder, 'Using setCacheFolder did not result in the cache folder being set in the class' ) self.assertEqual( cacheFolderPath, cacheController.getCacheFolder(), 'Using setCacheFolder did not result in the item the ouput of getCacheFolder: ' + str(cacheController.getCacheFolder())) # check that this got added to the sourceFolders as well self.assertTrue( cacheFolderPath in cacheController.sourceFolders, 'When selecting a cacheFolder it should automatically be added to the sourcefolder list, but was not' ) self.assertTrue( cacheFolderPath in cacheController.getSourceFolders(), 'When selecting a cacheFolder it should automatically be added to the getSourceFolders output, but was not' ) # remove the setting, and test to see that it is removed from everywhere cacheController.removeCacheFolder() self.assertEqual( cacheController.writeableCacheFolder, None, 'After calling removeCacheFolder the cache folder variable was still set' ) self.assertRaises(RuntimeWarning, cacheController.getCacheFolder) self.assertFalse( cacheFolderPath in cacheController.sourceFolders, 'After calling removeCacheFolder the cache folder should not be in the sourceFolders list' )
def test_singleSourceSetup(self): '''Test setting up a single source folder''' # setup the cache folder so that we can do tests cacheFolderPath = tempFolderManager.getNewTempFolder() cacheController.setCacheFolder(cacheFolderPath) sourceFolderPath = tempFolderManager.getNewTempFolder() # sanity check that it was not already somehow the source folders already self.assertFalse( sourceFolderPath in cacheController.sourceFolders, 'The new sourceFolder was found in the sourceFodlers variable too soon' ) self.assertNotEqual( sourceFolderPath, cacheController.writeableCacheFolder, 'The new sourceFolder should not be the selected cache folder') # check that adding the source folder results in it being actually added cacheController.addSourceFolders(sourceFolderPath) self.assertTrue( sourceFolderPath in cacheController.sourceFolders, 'After being added with addSourceFolders the test source path was not in the sourceFolders vaiable' ) self.assertTrue( sourceFolderPath in cacheController.getSourceFolders(), 'After being added with addSourceFolders the test source path was not in the getSourceFolders output' ) # check that this has not affected the cache folder setting self.assertEqual( cacheFolderPath, cacheController.getCacheFolder(), 'After adding a source folder the cache folder should not change') # remove the source folder, and check to make sure it is removed cacheController.removeSourceFolders(sourceFolderPath) self.assertFalse( sourceFolderPath in cacheController.sourceFolders, 'After calling removeSourceFolder the source folder was still in the sourceFolders list' ) # cleanup cacheController.removeCacheFolder() cacheController.removeSourceFolders(cacheFolderPath) tempFolderManager.cleanupItem(cacheFolderPath) tempFolderManager.cleanupItem(sourceFolderPath)
def test_cacheSetup(self): '''Test setting up cache folder''' cacheFolderPath = tempFolderManager.getNewTempFolder() # sanity check that it was not already somehow the cache and source folders already self.assertNotEqual(cacheFolderPath, cacheController.writeableCacheFolder, 'The cache folder to be used for testing was already set: ' + str(cacheFolderPath)) self.assertFalse(cacheFolderPath in cacheController.sourceFolders, 'The new cache folder was somehow already in the source folder set: ' + str(cacheFolderPath)) # check that adding a folder adds it to the inside cacheController.setCacheFolder(cacheFolderPath) self.assertEqual(cacheFolderPath, cacheController.writeableCacheFolder, 'Using setCacheFolder did not result in the cache folder being set in the class') self.assertEqual(cacheFolderPath, cacheController.getCacheFolder(), 'Using setCacheFolder did not result in the item the ouput of getCacheFolder: ' + str(cacheController.getCacheFolder())) # check that this got added to the sourceFolders as well self.assertTrue(cacheFolderPath in cacheController.sourceFolders, 'When selecting a cacheFolder it should automatically be added to the sourcefolder list, but was not') self.assertTrue(cacheFolderPath in cacheController.getSourceFolders(), 'When selecting a cacheFolder it should automatically be added to the getSourceFolders output, but was not') # remove the setting, and test to see that it is removed from everywhere cacheController.removeCacheFolder() self.assertEqual(cacheController.writeableCacheFolder, None, 'After calling removeCacheFolder the cache folder variable was still set') self.assertRaises(RuntimeWarning, cacheController.getCacheFolder) self.assertFalse(cacheFolderPath in cacheController.sourceFolders, 'After calling removeCacheFolder the cache folder should not be in the sourceFolders list')
def test_multipleSourceSetup(self): '''Test setting up multiple source folders''' # setup the cache folder so that we can do tests cacheFolderPath = tempFolderManager.getNewTempFolder() cacheController.setCacheFolder(cacheFolderPath) firstSourceFolderPath = tempFolderManager.getNewTempFolder() secondSourceFolderPath = tempFolderManager.getNewTempFolder() thirdSourceFolderPath = tempFolderManager.getNewTempFolder() # add the first two items and confirm they are there cacheController.addSourceFolders( [firstSourceFolderPath, secondSourceFolderPath]) self.assertTrue( firstSourceFolderPath in cacheController.sourceFolders, 'After being added with addSourceFolders the first test source path was not in the sourceFolders vaiable' ) self.assertTrue( firstSourceFolderPath in cacheController.getSourceFolders(), 'After being added with addSourceFolders the first test source path was not in the getSourceFolders output' ) self.assertTrue( secondSourceFolderPath in cacheController.sourceFolders, 'After being added with addSourceFolders the second test source path was not in the sourceFolders vaiable' ) self.assertTrue( secondSourceFolderPath in cacheController.getSourceFolders(), 'After being added with addSourceFolders the second test source path was not in the getSourceFolders output' ) # add the third item, verifying that all three are there cacheController.addSourceFolders(thirdSourceFolderPath) self.assertTrue( firstSourceFolderPath in cacheController.sourceFolders, 'After adding the third source item with addSourceFolders the first test source path was not in the sourceFolders vaiable' ) self.assertTrue( firstSourceFolderPath in cacheController.getSourceFolders(), 'After adding the third source item with addSourceFolders the first test source path was not in the getSourceFolders output' ) self.assertTrue( secondSourceFolderPath in cacheController.sourceFolders, 'After adding the third source item with addSourceFolders the second test source path was not in the sourceFolders vaiable' ) self.assertTrue( secondSourceFolderPath in cacheController.getSourceFolders(), 'After adding the third source item with addSourceFolders the second test source path was not in the getSourceFolders output' ) self.assertTrue( thirdSourceFolderPath in cacheController.sourceFolders, 'After adding the third source item with addSourceFolders the third test source path was not in the sourceFolders vaiable' ) self.assertTrue( thirdSourceFolderPath in cacheController.getSourceFolders(), 'After adding the third source item with addSourceFolders the third test source path was not in the getSourceFolders output' ) # remove the second item, and verify that it is removed, and the other two still there cacheController.removeSourceFolders(secondSourceFolderPath) self.assertFalse( secondSourceFolderPath in cacheController.sourceFolders, 'After removing the second source item with removeSourceFolders the second test source path was still in the sourceFolders vaiable' ) self.assertFalse( secondSourceFolderPath in cacheController.getSourceFolders(), 'After removing the second source item with removeSourceFolders the second test source path was still in the getSourceFolders output' ) self.assertTrue( firstSourceFolderPath in cacheController.sourceFolders, 'After removing the second source item with removeSourceFolders the first test source path was not in the sourceFolders vaiable' ) self.assertTrue( firstSourceFolderPath in cacheController.getSourceFolders(), 'After removing the second source item with removeSourceFolders the first test source path was not in the getSourceFolders output' ) self.assertTrue( thirdSourceFolderPath in cacheController.sourceFolders, 'After removing the second source item with removeSourceFolders the third test source path was not in the sourceFolders vaiable' ) self.assertTrue( thirdSourceFolderPath in cacheController.getSourceFolders(), 'After removing the second source item with removeSourceFolders the third test source path was not in the getSourceFolders output' ) # remove the two remaining items and verify that they are gone cacheController.removeSourceFolders( [firstSourceFolderPath, thirdSourceFolderPath]) self.assertFalse( firstSourceFolderPath in cacheController.sourceFolders, 'After removing the first and third source item with removeSourceFolders the first test source path was still in the sourceFolders vaiable' ) self.assertFalse( secondSourceFolderPath in cacheController.sourceFolders, 'After removing the first and third source item with removeSourceFolders the second test source path was still in the sourceFolders vaiable' ) self.assertFalse( thirdSourceFolderPath in cacheController.sourceFolders, 'After removing the first and third source item with removeSourceFolders the third test source path was still in the sourceFolders vaiable' ) # cleanup cacheController.removeCacheFolder() cacheController.removeSourceFolders(cacheFolderPath) tempFolderManager.cleanupItem(cacheFolderPath) tempFolderManager.cleanupItem(firstSourceFolderPath) tempFolderManager.cleanupItem(secondSourceFolderPath) tempFolderManager.cleanupItem(thirdSourceFolderPath)
def setUp(self): '''Create folders for the cache folder and 2 source folders''' self.cacheFolderPath = tempFolderManager.getNewTempFolder() cacheController.setCacheFolder(self.cacheFolderPath) self.firstSourceFolderPath = tempFolderManager.getNewTempFolder() self.secondSourceFolderPath = tempFolderManager.getNewTempFolder() cacheController.addSourceFolders( [self.firstSourceFolderPath, self.secondSourceFolderPath]) # ToDo: think about making sure we have an absolutely clean setup # file with a known name and checksum, with the checksum in the path checksumFilePath = os.path.join( self.firstSourceFolderPath, 'aFile sha1-f475597b627a4d580ec1619a94c7afb9cc75abe4.txt') testFile = open(checksumFilePath, 'w') testFile.write( "a" * 400) # sha1 checksum: f475597b627a4d580ec1619a94c7afb9cc75abe4 testFile.close() # file with a known name and checksum, with the checksum in the path, inside a subfolder checksumInSubfolderFilePath = os.path.join( self.firstSourceFolderPath, 'subfolder', 'bFile sha1-8bc1e4c5d467c10555dae3c4ea04471b856b23bc.txt') os.mkdir(os.path.join(self.firstSourceFolderPath, 'subfolder')) testFile = open(checksumInSubfolderFilePath, 'w') testFile.write( "b" * 150) # sha1 checksum: 8bc1e4c5d467c10555dae3c4ea04471b856b23bc testFile.close() # file with a known name and checksum, without the checksum in the path nameFilePath = os.path.join(self.firstSourceFolderPath, 'cFile.txt') testFile = open(nameFilePath, 'w') testFile.write( "c" * 300) # sha1 checksum: bc5b916598902018a023717425314bee88ff7fe9 testFile.close() # file with a known name and checksum in a subfolder, without the checksum in the path nameInSubfolderFilePath = os.path.join(self.firstSourceFolderPath, 'subfolder', 'dFile.txt') testFile = open(nameInSubfolderFilePath, 'w') testFile.write( "d" * 180) # sha1 checksum: b07eaa471ef7af455e1079a59135b1ebac44a72e testFile.close() # file with a known name in the second folder nameInSecondSourceFolderFilePath = os.path.join( self.secondSourceFolderPath, 'eFile.txt') testFile = open(nameInSecondSourceFolderFilePath, 'w') testFile.write( "E" * 40) # sha1 checksum: 981ee57582ef1b95fb2f87982280a6dd01f46cc8 testFile.close() # create two files, with the same name but different checksums, one in a subfolder outerDifferentChecksumFilePath = os.path.join( self.secondSourceFolderPath, 'fFile.txt') testFile = open(outerDifferentChecksumFilePath, 'w') testFile.write( "f" * 80) # sha1 checksum: c8280ce5bfab50ffac50bbca5e22540335708ad9 testFile.close() os.mkdir(os.path.join(self.secondSourceFolderPath, 'fFileFolder')) innerDifferentChecksumFilePath = os.path.join( self.secondSourceFolderPath, 'fFileFolder', 'fFile.txt') testFile = open(innerDifferentChecksumFilePath, 'w') testFile.write( "f" * 40) # sha1 checksum: e0bbc5c28208d8909a27a5890216e24da6eb8cd3 testFile.close() # two files with the same contents and name, but one inside a folder, and one at the root outerSameChecksumFilePath = os.path.join(self.secondSourceFolderPath, 'gFile.txt') testFile = open(outerSameChecksumFilePath, 'w') testFile.write( "g" * 177) # sha1 checksum: 9315056a35b92557f3180c7c53d33c80dca7095e testFile.close() os.mkdir(os.path.join(self.secondSourceFolderPath, 'gFileFolder')) innerSameChecksumFilePath = os.path.join(self.secondSourceFolderPath, 'gFileFolder', 'gFile.txt') testFile = open(innerSameChecksumFilePath, 'w') testFile.write( "g" * 177) # sha1 checksum: 9315056a35b92557f3180c7c53d33c80dca7095e testFile.close() # ToDo: absolute path # ToDo: absolute path crossing a symlink self.testMaterials = [ # this should be in the format: # filename - checksumType - checksumValue - desiredOutput - errorMessage # find file by checksum { 'fileName': 'aFile.txt', 'checksumType': 'sha1', 'checksumValue': 'f475597b627a4d580ec1619a94c7afb9cc75abe4', 'filePath': checksumFilePath, 'errorMessage': 'findItem could not find the aFile by checksum' }, # find a file in a folder by checksum { 'fileName': 'bFile.txt', 'checksumType': 'sha1', 'checksumValue': '8bc1e4c5d467c10555dae3c4ea04471b856b23bc', 'filePath': checksumInSubfolderFilePath, 'errorMessage': 'findItem could not find the bFile inside a subfolder by checksum' }, # find a file by the name, indluding extension { 'fileName': 'cFile.txt', 'checksumType': 'sha1', 'checksumValue': 'bc5b916598902018a023717425314bee88ff7fe9', 'filePath': nameFilePath, 'errorMessage': 'findItem could not find the cFile by the name, indluding extension' }, # find a file by the name, minus the extension { 'fileName': 'cFile', 'checksumType': 'sha1', 'checksumValue': 'bc5b916598902018a023717425314bee88ff7fe9', 'filePath': nameFilePath, 'errorMessage': 'findItem could not find the cFile by the name, minus the extension' }, # find a file by the name, with a bad extension { 'fileName': 'cFile.bad', 'checksumType': 'sha1', 'checksumValue': 'bc5b916598902018a023717425314bee88ff7fe9', 'filePath': nameFilePath, 'errorMessage': 'findItem could not find the cFile by the name, with a bad extension' }, # find a file in a subfolder by the name, indluding extension { 'fileName': 'dFile.txt', 'checksumType': 'sha1', 'checksumValue': 'b07eaa471ef7af455e1079a59135b1ebac44a72e', 'filePath': nameInSubfolderFilePath, 'errorMessage': 'findItem could not find the dFile in a subfolder by the name, indluding extension' }, # find a file in a subfolder by the name, minus the extension { 'fileName': 'dFile', 'checksumType': 'sha1', 'checksumValue': 'b07eaa471ef7af455e1079a59135b1ebac44a72e', 'filePath': nameInSubfolderFilePath, 'errorMessage': 'findItem could not find the dFile in a subfolder by the name, minus the extension' }, # find a file in the second source folder by the name, minus the extension { 'fileName': 'eFile', 'checksumType': 'sha1', 'checksumValue': '981ee57582ef1b95fb2f87982280a6dd01f46cc8', 'filePath': nameInSecondSourceFolderFilePath, 'errorMessage': 'findItem could not find the eFile in the second source folder by name without checksume' }, # find the inner source file when there is one in the root with the same name but a differnt checksum { 'fileName': 'fFile', 'checksumType': 'sha1', 'checksumValue': 'e0bbc5c28208d8909a27a5890216e24da6eb8cd3', 'filePath': innerDifferentChecksumFilePath, 'errorMessage': 'findItem could not find the inner fFile by checksum' }, # find the outer source { 'fileName': 'fFile', 'checksumType': 'sha1', 'checksumValue': 'c8280ce5bfab50ffac50bbca5e22540335708ad9', 'filePath': outerDifferentChecksumFilePath, 'errorMessage': 'findItem could not find the outer fFile by checksum' }, # find the inner source file by looking for it by a relative path { 'fileName': 'gFileFolder/gFile.txt', 'checksumType': 'sha1', 'checksumValue': '9315056a35b92557f3180c7c53d33c80dca7095e', 'filePath': innerSameChecksumFilePath, 'errorMessage': 'findItem could not find the inner gFile by relative path' }, # make sure that the outer file is found when not giving the relative path { 'fileName': 'gFile.txt', 'checksumType': 'sha1', 'checksumValue': '9315056a35b92557f3180c7c53d33c80dca7095e', 'filePath': outerSameChecksumFilePath, 'errorMessage': 'findItem could not find the outer gFile by name/checksum' }, ]
def setUp(self): '''Create folders for the cache folder and 2 source folders''' self.cacheFolderPath = tempFolderManager.getNewTempFolder() cacheController.setCacheFolder(self.cacheFolderPath) self.firstSourceFolderPath = tempFolderManager.getNewTempFolder() self.secondSourceFolderPath = tempFolderManager.getNewTempFolder() cacheController.addSourceFolders([self.firstSourceFolderPath, self.secondSourceFolderPath]) # ToDo: think about making sure we have an absolutely clean setup # file with a known name and checksum, with the checksum in the path checksumFilePath = os.path.join(self.firstSourceFolderPath, 'aFile sha1-f475597b627a4d580ec1619a94c7afb9cc75abe4.txt') testFile = open(checksumFilePath, 'w') testFile.write("a" * 400) # sha1 checksum: f475597b627a4d580ec1619a94c7afb9cc75abe4 testFile.close() # file with a known name and checksum, with the checksum in the path, inside a subfolder checksumInSubfolderFilePath = os.path.join(self.firstSourceFolderPath, 'subfolder', 'bFile sha1-8bc1e4c5d467c10555dae3c4ea04471b856b23bc.txt') os.mkdir(os.path.join(self.firstSourceFolderPath, 'subfolder')) testFile = open(checksumInSubfolderFilePath, 'w') testFile.write("b" * 150) # sha1 checksum: 8bc1e4c5d467c10555dae3c4ea04471b856b23bc testFile.close() # file with a known name and checksum, without the checksum in the path nameFilePath = os.path.join(self.firstSourceFolderPath, 'cFile.txt') testFile = open(nameFilePath, 'w') testFile.write("c" * 300) # sha1 checksum: bc5b916598902018a023717425314bee88ff7fe9 testFile.close() # file with a known name and checksum in a subfolder, without the checksum in the path nameInSubfolderFilePath = os.path.join(self.firstSourceFolderPath, 'subfolder', 'dFile.txt') testFile = open(nameInSubfolderFilePath, 'w') testFile.write("d" * 180) # sha1 checksum: b07eaa471ef7af455e1079a59135b1ebac44a72e testFile.close() # file with a known name in the second folder nameInSecondSourceFolderFilePath = os.path.join(self.secondSourceFolderPath, 'eFile.txt') testFile = open(nameInSecondSourceFolderFilePath, 'w') testFile.write("E" * 40) # sha1 checksum: 981ee57582ef1b95fb2f87982280a6dd01f46cc8 testFile.close() # create two files, with the same name but different checksums, one in a subfolder outerDifferentChecksumFilePath = os.path.join(self.secondSourceFolderPath, 'fFile.txt') testFile = open(outerDifferentChecksumFilePath, 'w') testFile.write("f" * 80) # sha1 checksum: c8280ce5bfab50ffac50bbca5e22540335708ad9 testFile.close() os.mkdir(os.path.join(self.secondSourceFolderPath, 'fFileFolder')) innerDifferentChecksumFilePath = os.path.join(self.secondSourceFolderPath, 'fFileFolder', 'fFile.txt') testFile = open(innerDifferentChecksumFilePath, 'w') testFile.write("f" * 40) # sha1 checksum: e0bbc5c28208d8909a27a5890216e24da6eb8cd3 testFile.close() # two files with the same contents and name, but one inside a folder, and one at the root outerSameChecksumFilePath = os.path.join(self.secondSourceFolderPath, 'gFile.txt') testFile = open(outerSameChecksumFilePath, 'w') testFile.write("g" * 177) # sha1 checksum: 9315056a35b92557f3180c7c53d33c80dca7095e testFile.close() os.mkdir(os.path.join(self.secondSourceFolderPath, 'gFileFolder')) innerSameChecksumFilePath = os.path.join(self.secondSourceFolderPath, 'gFileFolder', 'gFile.txt') testFile = open(innerSameChecksumFilePath, 'w') testFile.write("g" * 177) # sha1 checksum: 9315056a35b92557f3180c7c53d33c80dca7095e testFile.close() # ToDo: absolute path # ToDo: absolute path crossing a symlink self.testMaterials = [ # this should be in the format: # filename - checksumType - checksumValue - desiredOutput - errorMessage # find file by checksum {'fileName':'aFile.txt', 'checksumType':'sha1', 'checksumValue':'f475597b627a4d580ec1619a94c7afb9cc75abe4', 'filePath':checksumFilePath, 'errorMessage':'findItem could not find the aFile by checksum'}, # find a file in a folder by checksum {'fileName':'bFile.txt', 'checksumType':'sha1', 'checksumValue':'8bc1e4c5d467c10555dae3c4ea04471b856b23bc', 'filePath':checksumInSubfolderFilePath, 'errorMessage':'findItem could not find the bFile inside a subfolder by checksum'}, # find a file by the name, indluding extension {'fileName':'cFile.txt', 'checksumType':'sha1', 'checksumValue':'bc5b916598902018a023717425314bee88ff7fe9', 'filePath':nameFilePath, 'errorMessage':'findItem could not find the cFile by the name, indluding extension'}, # find a file by the name, minus the extension {'fileName':'cFile', 'checksumType':'sha1', 'checksumValue':'bc5b916598902018a023717425314bee88ff7fe9', 'filePath':nameFilePath, 'errorMessage':'findItem could not find the cFile by the name, minus the extension'}, # find a file by the name, with a bad extension {'fileName':'cFile.bad', 'checksumType':'sha1', 'checksumValue':'bc5b916598902018a023717425314bee88ff7fe9', 'filePath':nameFilePath, 'errorMessage':'findItem could not find the cFile by the name, with a bad extension'}, # find a file in a subfolder by the name, indluding extension {'fileName':'dFile.txt', 'checksumType':'sha1', 'checksumValue':'b07eaa471ef7af455e1079a59135b1ebac44a72e', 'filePath':nameInSubfolderFilePath, 'errorMessage':'findItem could not find the dFile in a subfolder by the name, indluding extension'}, # find a file in a subfolder by the name, minus the extension {'fileName':'dFile', 'checksumType':'sha1', 'checksumValue':'b07eaa471ef7af455e1079a59135b1ebac44a72e', 'filePath':nameInSubfolderFilePath, 'errorMessage':'findItem could not find the dFile in a subfolder by the name, minus the extension'}, # find a file in the second source folder by the name, minus the extension {'fileName':'eFile', 'checksumType':'sha1', 'checksumValue':'981ee57582ef1b95fb2f87982280a6dd01f46cc8', 'filePath':nameInSecondSourceFolderFilePath, 'errorMessage':'findItem could not find the eFile in the second source folder by name without checksume'}, # find the inner source file when there is one in the root with the same name but a differnt checksum {'fileName':'fFile', 'checksumType':'sha1', 'checksumValue':'e0bbc5c28208d8909a27a5890216e24da6eb8cd3', 'filePath':innerDifferentChecksumFilePath, 'errorMessage':'findItem could not find the inner fFile by checksum'}, # find the outer source {'fileName':'fFile', 'checksumType':'sha1', 'checksumValue':'c8280ce5bfab50ffac50bbca5e22540335708ad9', 'filePath':outerDifferentChecksumFilePath, 'errorMessage':'findItem could not find the outer fFile by checksum'}, # find the inner source file by looking for it by a relative path {'fileName':'gFileFolder/gFile.txt', 'checksumType':'sha1', 'checksumValue':'9315056a35b92557f3180c7c53d33c80dca7095e', 'filePath':innerSameChecksumFilePath, 'errorMessage':'findItem could not find the inner gFile by relative path'}, # make sure that the outer file is found when not giving the relative path {'fileName':'gFile.txt', 'checksumType':'sha1', 'checksumValue':'9315056a35b92557f3180c7c53d33c80dca7095e', 'filePath':outerSameChecksumFilePath, 'errorMessage':'findItem could not find the outer gFile by name/checksum'}, ]