Beispiel #1
0
 def test_run_task(self):
     f = Mock()
     task = Task("foobaz")
     task << Chute.create(f)()
     Hellbox.add_task(task)
     Hellbox.run_task("foobaz")
     assert f.called
Beispiel #2
0
 def test_run_task(self):
     f = Mock()
     task = Task("foobaz")
     task << Chute.create(f)()
     Hellbox.add_task(task)
     Hellbox.run_task("foobaz")
     assert f.called
    def _generate(self, file):
        Hellbox.info(f"Generating OTF: {file.basename}")

        return file.transform(
            "fontmake -o otf -u \"{input}\" --output-path \"{output}\"",
            extension="otf"
        )
Beispiel #4
0
 def test_run_task(self):
     f = Mock()
     task = Task('foobaz')
     task.start_chain(Chute.create(f)())
     Hellbox.add_task(task)
     Hellbox.run_task('foobaz')
     assert f.called
Beispiel #5
0
    def _insert_dummy(self, file):
        Hellbox.info(f"Updating DSIG: {file.basename}")

        copy = file.copy()

        font = ttLib.TTFont(copy.content_path)
        font.tables["DSIG"] = self._create_signature()
        font.save(copy.content_path)

        return copy
Beispiel #6
0
    def _hint(self, file):
        Hellbox.info(f"Hinting: {file.basename}")

        if file.extension == "ttf":
            return file.transform("ttfautohint \"{input}\" \"{output}\"")
        elif file.extension == "otf":
            return file.transform(
                "autohint -o \"{output}\" -nb -q \"{input}\"")
        else:
            Hellbox.warn(f"Skipping {file.basename} (not a hintable format)")
            return file
Beispiel #7
0
    def test_usage(self):
        task = Task("build")
        task.describe("Does the building")
        task << Bar(2, grade=3) >> Foo()
        task << Foo() >> Bar(level=2)
        Hellbox.add_task(task)

        task = Task("package")
        task.describe("Does the packaging\nZips and tars")
        task << Foo()
        Hellbox.add_task(task)

        assert Hellbox.usage() == USAGE
Beispiel #8
0
    def test_usage(self):
        task = Task("build")
        task.describe("Does the building")
        task << Bar(2, grade=3) >> Foo()
        task << Foo() >> Bar(level=2)
        Hellbox.add_task(task)

        task = Task("package")
        task.describe("Does the packaging\nZips and tars")
        task << Foo()
        Hellbox.add_task(task)

        assert Hellbox.usage() == USAGE
Beispiel #9
0
 def test_compose_many(self):
     foo = Noop()
     bar = Noop()
     baz = Noop()
     composed = Hellbox.compose(foo, bar, baz)()
     assert composed.head == foo
     assert composed.tail == baz
Beispiel #10
0
 def test_find_missing_task(self):
     task = Hellbox.find_task_by_name("bazzio")
     Hellbox._warn = Hellbox.warn
     Hellbox.warn = Mock()
     task.run()
     assert Hellbox.warn.called
     Hellbox.warn = Hellbox._warn
Beispiel #11
0
 def test_compose_many(self):
     foo = Noop()
     bar = Noop()
     baz = Noop()
     composed = Hellbox.compose(foo, bar, baz)()
     assert composed.head == foo
     assert composed.tail == baz
Beispiel #12
0
 def test_find_missing_task(self):
     task = Hellbox.find_task_by_name("bazzio")
     Hellbox._warn = Hellbox.warn
     Hellbox.warn = Mock()
     task.run()
     assert Hellbox.warn.called
     Hellbox.warn = Hellbox._warn
Beispiel #13
0
 def test_find_missing_task(self):
     task = Hellbox.find_task_by_name('bazzio')
     assert type(task) is NullTask
     Hellbox._warn = Hellbox.warn
     Hellbox.warn = Mock()
     task.run()
     assert Hellbox.warn.called
     Hellbox.warn = Hellbox._warn
Beispiel #14
0
 def test_compose(self):
     noop = lambda x: x
     foo = Chute.create(noop)()
     bar = Chute.create(noop)()
     Composite = Hellbox.compose(foo, bar)
     composed = Composite()
     assert composed.head is foo
     assert composed.tail is bar
     assert bar in foo.callbacks
Beispiel #15
0
 def test_compose(self):
     foo = Noop()
     bar = Noop()
     composed = Hellbox.compose(foo, bar)()
     assert composed.head == foo
     assert composed.head is not foo
     assert composed.tail == bar
     assert composed.tail is not bar
     assert bar in composed.head.callbacks
Beispiel #16
0
 def test_compose(self):
     foo = Noop()
     bar = Noop()
     composed = Hellbox.compose(foo, bar)()
     assert composed.head == foo
     assert composed.head is not foo
     assert composed.tail == bar
     assert composed.tail is not bar
     assert bar in composed.head.callbacks
Beispiel #17
0
 def test_multiple_compose(self):
     foo = Noop()
     bar = Noop()
     Composite = Hellbox.compose(foo, bar)
     composed = Composite()
     assert composed.head == foo
     assert composed.tail == bar
     composed2 = Composite()
     assert composed is not composed2
     assert composed.head is not composed2.head
Beispiel #18
0
 def test_multiple_compose(self):
     foo = Noop()
     bar = Noop()
     Composite = Hellbox.compose(foo, bar)
     composed = Composite()
     assert composed.head == foo
     assert composed.tail == bar
     composed2 = Composite()
     assert composed is not composed2
     assert composed.head is not composed2.head
Beispiel #19
0
 def test_run_task_with_requirements(self):
     f = Mock()
     f2 = Mock()
     task = Task('fooqaaz')
     task.requires('foobar')
     task.start_chain(Chute.create(f)())
     task2 = Task('foobar')
     task2.start_chain(Chute.create(f2)())
     Hellbox.add_task(task)
     Hellbox.add_task(task2)
     Hellbox.run_task('fooqaaz')
     assert f2.called
Beispiel #20
0
 def test_run_task_with_requirements(self):
     f = Mock()
     f2 = Mock()
     task = Task("fooqaaz")
     task.requires("foobar")
     task << Chute.create(f)()
     task2 = Task("foobar")
     task2 << Chute.create(f2)()
     Hellbox.add_task(task)
     Hellbox.add_task(task2)
     Hellbox.run_task("fooqaaz")
     assert f2.called
Beispiel #21
0
 def test_run_task_with_requirements(self):
     f = Mock()
     f2 = Mock()
     task = Task("fooqaaz")
     task.requires("foobar")
     task << Chute.create(f)()
     task2 = Task("foobar")
     task2 << Chute.create(f2)()
     Hellbox.add_task(task)
     Hellbox.add_task(task2)
     Hellbox.run_task("fooqaaz")
     assert f2.called
Beispiel #22
0
 def test_get_default_task_name(self):
     Hellbox.default = 'bar'
     assert Hellbox.get_task_name_or_default('default') is 'bar'
Beispiel #23
0
 def test_find_task_by_name(self):
     Hellbox.add_task(Task("foo"))
     assert Hellbox.find_task_by_name("foo")
Beispiel #24
0
 def teardown(self):
     Hellbox.reset_tasks()
Beispiel #25
0
 def test_usage_without_tasks(self):
     assert Hellbox.usage() == "No tasks have been defined in Hellfile.py"
Beispiel #26
0
 def test_with(self):
     with Hellbox("foo") as task:
         assert task
         assert type(task) is Task
     assert Hellbox.find_task_by_name("foo")
Beispiel #27
0
    def _generate(self, file):
        Hellbox.info(f"Generating WOFF2: {file.basename}")

        return file.transform("woff2_compress \"{input}\"", extension="woff2")
Beispiel #28
0
 def test_get_task_name(self):
     assert Hellbox.get_task_name_or_default("bar") == "bar"
Beispiel #29
0
 def test_usage_without_tasks(self):
     assert Hellbox.usage() == "No tasks have been defined in Hellfile.py"
Beispiel #30
0
"""
Example hellfile.py

To run with development version of Hellbox, from this directory run:
> hell init (This will fail because pip doesn't know about hellbox yet)
> cd .. && ./example/.hellbox/bin/python setup.py install
> cd example && hell freeze && hell inspect
"""

from hellbox import Hellbox
from packages.test import TestUFO
from packages.generate_otf import GenerateOTF
from packages.extension import BuildRoboFontExtension

MakeOTF = Hellbox.compose(TestUFO(), GenerateOTF())

MakeExt = Hellbox.compose(BuildRoboFontExtension(info_format="yaml"))

with Hellbox("font") as task:
    task.describe("Does a little generation dance.")
    task.read("*.ufo", "src/*") >> MakeOTF() >> task.write("otf")

with Hellbox("extension") as task:
    task.describe("Builds a robofont extension in place.")
    task.requires("font")
    task.read("src") >> MakeExt() >> task.write(".")

Hellbox.default = "font"
Beispiel #31
0
 def teardown(self):
     Hellbox.reset_tasks()
Beispiel #32
0
 def test_init(self):
     h = Hellbox("foo")
     assert hasattr(h, "task")
     assert type(h.task) is Task
Beispiel #33
0
 def test_with(self):
     with Hellbox("foo") as task:
         assert task
         assert type(task) is Task
     assert Hellbox.find_task_by_name("foo")
Beispiel #34
0
 def test_get_default_task_name(self):
     Hellbox.default = "bar"
     assert Hellbox.get_task_name_or_default("default") == "bar"
Beispiel #35
0
 def _process(self, file):
     Hellbox.info(f"Doing something: {file.basename}")
     return file
Beispiel #36
0
from hellbox import Hellbox
from hellbox.jobs.fontmake import GenerateOtf, GenerateTtf

with Hellbox("build") as task:
    ufo = task.read("ufo/*")
    otf = ufo >> GenerateOtf()
    ttf = ufo >> GenerateTtf()

    otf >> task.write("build/otf")
    ttf >> task.write("build/ttf")
Beispiel #37
0
 def test_get_task_name(self):
     assert Hellbox.get_task_name_or_default('bar') is 'bar'
Beispiel #38
0
 def test_get_default_task_name(self):
     Hellbox.default = "bar"
     assert Hellbox.get_task_name_or_default("default") == "bar"
Beispiel #39
0
 def test_find_task_by_name(self):
     Hellbox.add_task(Task("foo"))
     assert Hellbox.find_task_by_name("foo")
Beispiel #40
0
from hellbox import Hellbox
from hellbox.jobs.dsig import InsertDummyDsig
from hellbox.jobs.fontmake import GenerateOtf, GenerateTtf

from lib.autohint import Autohint
from lib.woff import GenerateWoff
from lib.woff2 import GenerateWoff2

PostProduction = Hellbox.compose(InsertDummyDsig(), Autohint())

Hellbox.default = "build"

with Hellbox("build") as task:
    task.describe("Builds font files from source")

    source = task.read("source/*.ufo")
    otf = source >> GenerateOtf() >> PostProduction()
    ttf = source >> GenerateTtf() >> PostProduction()
    woff = ttf >> GenerateWoff()
    woff2 = ttf >> GenerateWoff2()

    otf >> task.write("build/otf")
    ttf >> task.write("build/ttf")
    woff >> task.write("build/woff")
    woff2 >> task.write("build/woff2")
Beispiel #41
0
 def test_get_task_name(self):
     assert Hellbox.get_task_name_or_default("bar") == "bar"
Beispiel #42
0
"""
Example hellfile.py

To run with development version of Hellbox, from this directory run:
> hell init (This will fail because pip doesn't know about hellbox yet)
> cd .. && ./example/.hellbox/bin/python setup.py install
> cd example && hell freeze && hell inspect
"""

from hellbox import Hellbox
from packages.test import TestUFO
from packages.generate_otf import GenerateOTF
from packages.extension import BuildRoboFontExtension


MakeOTF = Hellbox.compose(TestUFO(), GenerateOTF())

MakeExt = Hellbox.compose(BuildRoboFontExtension(info_format="yaml"))


with Hellbox("font") as task:
    task.describe("Does a little generation dance.")
    task.read("*.ufo", "src/*") >> MakeOTF() >> task.write("otf")

with Hellbox("extension") as task:
    task.describe("Builds a robofont extension in place.")
    task.requires("font")
    task.read("src") >> MakeExt() >> task.write(".")


Hellbox.default = "font"
Beispiel #43
0
    def _generate(self, file):
        Hellbox.info(f"Generating WOFF: {file.basename}")

        return file.transform("sfnt2woff-zopfli \"{input}\"", extension="woff")