def testErrorIfUploadExceedsMaximumSize(self): sourceDir = tempfile.mkdtemp() with open(sourceDir + "/a.py", "wb") as f: f.write(os.urandom(2000000)) uploadPacker = SystemUploadPacker(UploadOptions()) uploadPacker.MAX_UPLOAD_SIZE_MB = 1 self.assertRaises(Exception, uploadPacker.prepareUpload, sourceDir, tempfile.mkstemp()[1])
def testLogMessageWhenUploadTooSmall(self): LOG_HISTORY.clear() sourceDir = tempfile.mkdtemp() with open(sourceDir + "/a.py", "wb") as f: f.write(os.urandom(1)) uploadPacker = SystemUploadPacker(UploadOptions()) uploadPacker.prepareUpload(sourceDir, tempfile.mkstemp()[1]) self.assertEqual(LOG_HISTORY, ["Upload size is 1 MB", \ "Warning: Upload is very small, source directory might not contain all source code"])
def testDefaultExcludePatterns(self): sourceDir = tempfile.mkdtemp() self.createTempFile(sourceDir, "a.py", "a") subDir = sourceDir + "/node_modules" os.mkdir(subDir) self.createTempFile(subDir, "b.py", "b") outputFile = tempfile.mkstemp()[1] uploadPacker = SystemUploadPacker(UploadOptions()) uploadPacker.prepareUpload(sourceDir, outputFile) self.assertEqual(os.path.exists(outputFile), True) self.assertEqual(zipfile.ZipFile(outputFile).namelist(), ["a.py"])
def testCreateZipFromDirectory(self): sourceDir = tempfile.mkdtemp() self.createTempFile(sourceDir, "a.py", "a") self.createTempFile(sourceDir, "b.py", "b") outputFile = tempfile.mkstemp()[1] uploadPacker = SystemUploadPacker(UploadOptions()) uploadPacker.prepareUpload(sourceDir, outputFile) entries = zipfile.ZipFile(outputFile).namelist() entries.sort() self.assertEqual(entries, ["a.py", "b.py"])
def testExcludeGitHistory(self): sourceDir = tempfile.mkdtemp() self.createTempFile(sourceDir, "a.py", "a") subDir = sourceDir + "/.git" os.mkdir(subDir) self.createTempFile(subDir, "b.py", "b") outputFile = tempfile.mkstemp()[1] uploadPacker = SystemUploadPacker(UploadOptions(includeHistory=False)) uploadPacker.prepareUpload(sourceDir, outputFile) self.assertEqual(os.path.exists(outputFile), True) self.assertEqual(zipfile.ZipFile(outputFile).namelist(), ["a.py"])
def testPathPrefixDoesNotLeadToDoubleSlash(self): sourceDir = tempfile.mkdtemp() self.createTempFile(sourceDir, "a.py", "a") outputFile = tempfile.mkstemp()[1] uploadPacker = SystemUploadPacker(UploadOptions(pathPrefix="/backend/")) uploadPacker.prepareUpload(sourceDir, outputFile) entries = zipfile.ZipFile(outputFile).namelist() entries.sort() self.assertEqual(os.path.exists(outputFile), True) self.assertEqual(entries, ["backend/a.py"])
def testLogUploadContents(self): LOG_HISTORY.clear() sourceDir = tempfile.mkdtemp() with open(sourceDir + "/a.py", "wb") as f: f.write(os.urandom(1)) with open(sourceDir + "/b.py", "wb") as f: f.write(os.urandom(1)) uploadPacker = SystemUploadPacker(UploadOptions(showContents=True)) uploadPacker.prepareUpload(sourceDir, tempfile.mkstemp()[1]) self.assertEqual(LOG_HISTORY, ["Adding file to upload: a.py", "Adding file to upload: b.py", \ "Upload size is 1 MB", \ "Warning: Upload is very small, source directory might not contain all source code"])
def testIncludeGitHistory(self): sourceDir = tempfile.mkdtemp() self.createTempFile(sourceDir, "a.py", "a") subDir = sourceDir + "/.git" os.mkdir(subDir) self.createTempFile(subDir, "b.py", "b") outputFile = tempfile.mkstemp()[1] uploadPacker = SystemUploadPacker(UploadOptions(includeHistory=True)) uploadPacker.prepareUpload(sourceDir, outputFile) entries = zipfile.ZipFile(outputFile).namelist() entries.sort() self.assertEqual(entries, [".git/b.py", "a.py"])
def testPreserveDirectoryStructureInUpload(self): sourceDir = tempfile.mkdtemp() subDirA = sourceDir + "/a" os.mkdir(subDirA) self.createTempFile(subDirA, "a.py", "a") subDirB = sourceDir + "/b" os.mkdir(subDirB) self.createTempFile(subDirB, "b.py", "b") outputFile = tempfile.mkstemp()[1] uploadPacker = SystemUploadPacker(UploadOptions()) uploadPacker.prepareUpload(sourceDir, outputFile) entries = zipfile.ZipFile(outputFile).namelist() entries.sort() self.assertEqual(os.path.exists(outputFile), True) self.assertEqual(entries, ["a/a.py", "b/b.py"])
def testUsePathPrefixInUpload(self): sourceDir = tempfile.mkdtemp() subDirA = sourceDir + "/a" os.mkdir(subDirA) self.createTempFile(subDirA, "a.py", "a") subDirB = sourceDir + "/b" os.mkdir(subDirB) self.createTempFile(subDirB, "b.py", "b") outputFile = tempfile.mkstemp()[1] uploadPacker = SystemUploadPacker(UploadOptions(pathPrefix="frontend")) uploadPacker.prepareUpload(sourceDir, outputFile) entries = zipfile.ZipFile(outputFile).namelist() entries.sort() self.assertEqual(os.path.exists(outputFile), True) self.assertEqual(entries, ["frontend/a/a.py", "frontend/b/b.py"])