def test_runPackages(self): path = os.path.join(os.path.dirname(__file__), "package/empty.drawbot") package = DrawBotPackage(path) with StdOutCollector() as output: succes, _ = package.run() self.assertEqual(output.lines(), ['hello world'])
def __init__(self): self.bundle = DrawBotPackage() self.w = vanilla.Window((350, 320), "Package builder") y = 10 m = 120 for attr in self.packageInfo: text = vanilla.TextBox((10, y, m - 15, 22), "%s:" % attr, alignment="right") edit = vanilla.EditText((m, y, -10, 22), placeholder=getattr(self.bundle.info, attr)) setattr(self.w, "%s_text" % attr, text) setattr(self.w, "%s_edit" % attr, edit) y += 30 self.w.note = vanilla.TextBox((m, y, -10, 22), "Everything is optional.", sizeStyle="mini") y += 30 self.w.h1 = vanilla.HorizontalLine((0, y, 0, 1)) y += 10 self.w.scriptRoot_text = vanilla.TextBox((10, y, m - 15, 22), "Script Root:", alignment="right") self.w.scriptRoot = vanilla.PathControl((m, y - 2, -10, 22), None, pathStyle="popUp", callback=self.scriptRootCallback) y += 25 self.w.scriptRoot_note = vanilla.TextBox((m, y, -10, 22), "A folder containing all required python files.", sizeStyle="mini") self.w.buildButton = vanilla.Button((-120, -30, -10, 22), "Build", callback=self.buildCallback) self.w.open()
def application_openFile_(self, app, path): ext = os.path.splitext(path)[-1] if ext.lower() == ".drawbot": succes, report = DrawBotPackage(path).run() if not succes: fileName = os.path.basename(path) message("The DrawBot package '%s' failed." % fileName, report) return True return False
def test_readPackage(self): path = os.path.join(os.path.dirname(__file__), "package/empty.drawbot") package = DrawBotPackage(path) self.assertEqual(package.info.asDict(), {}) self.assertEqual(package.info.version, "0.0") self.assertEqual(package.info.developer, "") self.assertEqual(package.info.developerURL, "") self.assertEqual(package.info.requiresVersion, "0.0") self.assertEqual(package.info.mainScript, "main.py") path = os.path.join(os.path.dirname(__file__), "package/simple.drawbot") package = DrawBotPackage(path) self.assertEqual(package.info.version, "1.0") self.assertEqual(package.info.developer, "drawbot") self.assertEqual(package.info.developerURL, "http://www.drawbot.com") self.assertEqual(package.info.requiresVersion, "3.0") self.assertEqual(package.info.mainScript, "main.py")
def __init__(self): self.bundle = DrawBotPackage() self.w = vanilla.Window((350, 320), "Package builder") y = 10 m = 120 for attr in self.packageInfo: text = vanilla.TextBox((10, y, m - 15, 22), "%s:" % attr, alignment="right") edit = vanilla.EditText( (m, y, -10, 22), placeholder=getattr(self.bundle.info, attr)) setattr(self.w, "%s_text" % attr, text) setattr(self.w, "%s_edit" % attr, edit) y += 30 self.w.note = vanilla.TextBox((m, y, -10, 22), "Everything is optional.", sizeStyle="mini") y += 30 self.w.h1 = vanilla.HorizontalLine((0, y, 0, 1)) y += 10 self.w.scriptRoot_text = vanilla.TextBox((10, y, m - 15, 22), "Script Root:", alignment="right") self.w.scriptRoot = vanilla.PathControl( (m, y - 2, -10, 22), None, pathStyle="popUp", callback=self.scriptRootCallback) y += 25 self.w.scriptRoot_note = vanilla.TextBox( (m, y, -10, 22), "A folder containing all required python files.", sizeStyle="mini") self.w.buildButton = vanilla.Button((-120, -30, -10, 22), "Build", callback=self.buildCallback) self.w.open()
def test_buildPackage(self): package = DrawBotPackage() package.info.name = "demo" package.info.developer = "drawbot" package.info.developerURL = "http://www.drawbot.com" package.info.requiresVersion = "3.0" package.info.mainScript = "main.py" succes, _ = package.buildPackage("does/not/exists", "does/not/exists") self.assertFalse(succes) with TempFolder(suffix=".drawbot") as tempPath: succes, _ = package.buildPackage(tempPath.path, "does/not/exists") self.assertFalse(succes) with TempFolder() as tempScriptRoot: succes, _ = package.buildPackage(tempPath.path, tempScriptRoot.path) self.assertFalse(succes) with TempFile(suffix=".py", dir=tempScriptRoot.path) as tmp: with open(tmp.path, "w") as f: f.write("print('hello world'") package.info.mainScript = os.path.basename(tmp.path) succes, _ = package.buildPackage(tempPath.path, tempScriptRoot.path) self.assertTrue(succes)
def test_missingMainScript(self): path = os.path.join(os.path.dirname(__file__), "package/missingMainScript.drawbot") package = DrawBotPackage(path) succes, message = package.run() self.assertEqual(succes, False) self.assertTrue(message.startswith("Cannot find"))
class DrawBotPackageController(BaseWindowController): packageInfo = [ "name", "version", "developer", "developerURL", "requiresVersion", "mainScript", ] def __init__(self): self.bundle = DrawBotPackage() self.w = vanilla.Window((350, 320), "Package builder") y = 10 m = 120 for attr in self.packageInfo: text = vanilla.TextBox((10, y, m - 15, 22), "%s:" % attr, alignment="right") edit = vanilla.EditText( (m, y, -10, 22), placeholder=getattr(self.bundle.info, attr)) setattr(self.w, "%s_text" % attr, text) setattr(self.w, "%s_edit" % attr, edit) y += 30 self.w.note = vanilla.TextBox((m, y, -10, 22), "Everything is optional.", sizeStyle="mini") y += 30 self.w.h1 = vanilla.HorizontalLine((0, y, 0, 1)) y += 10 self.w.scriptRoot_text = vanilla.TextBox((10, y, m - 15, 22), "Script Root:", alignment="right") self.w.scriptRoot = vanilla.PathControl( (m, y - 2, -10, 22), None, pathStyle="popUp", callback=self.scriptRootCallback) y += 25 self.w.scriptRoot_note = vanilla.TextBox( (m, y, -10, 22), "A folder containing all required python files.", sizeStyle="mini") self.w.buildButton = vanilla.Button((-120, -30, -10, 22), "Build", callback=self.buildCallback) self.w.open() def scriptRootCallback(self, sender): url = sender.get() if url and not os.path.isdir(url): sender.set(None) self.showMessage("Package error.", "The script root must be a folder.") def buildCallback(self, sender): for attr in self.packageInfo: control = getattr(self.w, "%s_edit" % attr) value = str(control.get()) if value: setattr(self.bundle.info, attr, value) root = self.w.scriptRoot.get() if root is None: self.showMessage("Package error.", "A scripting root must be provided.") return def saveBundle(path): if path: succes, report = self.bundle.buildPackage(path, root) if not succes: self.showMessage("Package error.", report) self.showPutFile(["drawbot"], saveBundle)
class DrawBotPackageController(BaseWindowController): packageInfo = [ "name", "version", "developer", "developerURL", "requiresVersion", "mainScript", ] def __init__(self): self.bundle = DrawBotPackage() self.w = vanilla.Window((350, 320), "Package builder") y = 10 m = 120 for attr in self.packageInfo: text = vanilla.TextBox((10, y, m - 15, 22), "%s:" % attr, alignment="right") edit = vanilla.EditText((m, y, -10, 22), placeholder=getattr(self.bundle.info, attr)) setattr(self.w, "%s_text" % attr, text) setattr(self.w, "%s_edit" % attr, edit) y += 30 self.w.note = vanilla.TextBox((m, y, -10, 22), "Everything is optional.", sizeStyle="mini") y += 30 self.w.h1 = vanilla.HorizontalLine((0, y, 0, 1)) y += 10 self.w.scriptRoot_text = vanilla.TextBox((10, y, m - 15, 22), "Script Root:", alignment="right") self.w.scriptRoot = vanilla.PathControl((m, y - 2, -10, 22), None, pathStyle="popUp", callback=self.scriptRootCallback) y += 25 self.w.scriptRoot_note = vanilla.TextBox((m, y, -10, 22), "A folder containing all required python files.", sizeStyle="mini") self.w.buildButton = vanilla.Button((-120, -30, -10, 22), "Build", callback=self.buildCallback) self.w.open() def scriptRootCallback(self, sender): url = sender.get() if url and not os.path.isdir(url): sender.set(None) self.showMessage("Package error.", "The script root must be a folder.") def buildCallback(self, sender): for attr in self.packageInfo: control = getattr(self.w, "%s_edit" % attr) value = str(control.get()) if value: setattr(self.bundle.info, attr, value) root = self.w.scriptRoot.get() if root is None: self.showMessage("Package error.", "A scripting root must be provided.") return def saveBundle(path): if path: succes, report = self.bundle.buildPackage(path, root) if not succes: self.showMessage("Package error.", report) self.showPutFile(["drawbot"], saveBundle)