def test_caching_virtual_file(): with tempdir(): runner1 = Runner() doc1 = Doc("abc.txt|dexy", contents = "these are the contents", runner=runner1) runner1.docs = [doc1] runner1.run() assert isinstance(doc1.artifacts[0], InitialVirtualArtifact) hashstring_0_1 = doc1.artifacts[0].hashstring assert isinstance(doc1.artifacts[1], FilterArtifact) hashstring_1_1 = doc1.artifacts[1].hashstring runner2 = Runner() doc2 = Doc( "abc.txt|dexy", contents = "these are the contents", runner=runner2) runner2.docs = [doc2] runner2.run() assert isinstance(doc2.artifacts[0], InitialVirtualArtifact) hashstring_0_2 = doc2.artifacts[0].hashstring assert isinstance(doc2.artifacts[1], FilterArtifact) hashstring_1_2 = doc2.artifacts[1].hashstring assert hashstring_0_1 == hashstring_0_2 assert hashstring_1_1 == hashstring_1_2
def test_caching(): with tempdir(): runner1 = Runner() with open("abc.txt", "w") as f: f.write("these are the contents") doc1 = Doc("abc.txt|dexy", runner=runner1) runner1.docs = [doc1] runner1.run() assert isinstance(doc1.artifacts[0], InitialArtifact) hashstring_0_1 = doc1.artifacts[0].hashstring assert isinstance(doc1.artifacts[1], FilterArtifact) hashstring_1_1 = doc1.artifacts[1].hashstring runner2 = Runner() doc2 = Doc("abc.txt|dexy", runner=runner2) runner2.docs = [doc2] runner2.run() assert isinstance(doc2.artifacts[0], InitialArtifact) hashstring_0_2 = doc2.artifacts[0].hashstring assert isinstance(doc2.artifacts[1], FilterArtifact) hashstring_1_2 = doc2.artifacts[1].hashstring assert hashstring_0_1 == hashstring_0_2 assert hashstring_1_1 == hashstring_1_2
def test_caching_virtual_file(): with tempdir(): runner1 = Runner() doc1 = Doc("abc.txt|dexy", contents="these are the contents", runner=runner1) runner1.docs = [doc1] runner1.run() assert isinstance(doc1.artifacts[0], InitialVirtualArtifact) hashstring_0_1 = doc1.artifacts[0].hashstring assert isinstance(doc1.artifacts[1], FilterArtifact) hashstring_1_1 = doc1.artifacts[1].hashstring runner2 = Runner() doc2 = Doc("abc.txt|dexy", contents="these are the contents", runner=runner2) runner2.docs = [doc2] runner2.run() assert isinstance(doc2.artifacts[0], InitialVirtualArtifact) hashstring_0_2 = doc2.artifacts[0].hashstring assert isinstance(doc2.artifacts[1], FilterArtifact) hashstring_1_2 = doc2.artifacts[1].hashstring assert hashstring_0_1 == hashstring_0_2 assert hashstring_1_1 == hashstring_1_2
def test_run_demo_single(): with divert_stdout() as stdout: runner = Runner() doc = SubclassTask("demo", runner=runner) runner.docs = [doc] runner.run() assert "pre 'demo' run 'demo' post 'demo'" == stdout.getvalue()
def test_add_new_subtask(): with divert_stdout() as stdout: runner = Runner() t1 = AddNewSubtask("parent", runner=runner) runner.docs = [t1] runner.run() assert stdout.getvalue() == "pre 'new' run 'new' post 'new'"
def test_runner_run(): with tempdir(): runner = Runner() runner.setup_dexy_dirs() d1 = Doc("abc.txt|outputabc", contents="these are the contents", runner=runner) d2 = Doc("hello.txt|outputabc", contents="these are more contents", runner=runner) assert d1.state == 'setup' assert d2.state == 'setup' runner.docs = [d1, d2] runner.run() assert d1.state == 'complete' assert d2.state == 'complete'
def test_run_demo_parent_child(): with divert_stdout() as stdout: runner = Runner() doc = SubclassTask( "parent", SubclassTask("child", runner=runner), runner=runner ) runner.docs = [doc] runner.run() assert "pre 'parent' pre 'child' run 'child' post 'child' run 'parent' post 'parent'" == stdout.getvalue()
def test_dependencies_only_run_once(): with divert_stdout() as stdout: runner = Runner() t1 = SubclassTask("1", runner=runner) t2 = SubclassTask("2", t1, runner=runner) t3 = SubclassTask("3", t1, runner=runner) runner.docs = [t1, t2, t3] runner.run() assert stdout.getvalue() == "pre '1' run '1' post '1' pre '2' run '2' post '2' pre '3' run '3' post '3'" assert len(t1.completed_children) == 0 assert t1 in t2.completed_children.values() assert t1 in t3.completed_children.values()