def test_parse_default(): with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = Yaml(wrapper, ast) parser.parse('.', YAML_WITH_DEFAULT_OFF) ast.walk() assert len(wrapper.nodes) == 0 with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) wrapper.full = True parser = Yaml(wrapper, ast) parser.parse('.', YAML_WITH_DEFAULT_OFF) ast.walk() assert len(wrapper.nodes) == 1
def test_text_parser(): with wrap() as wrapper: with open("f1.py", "w") as f: f.write("print 'hello'") with open("f2.py", "w") as f: f.write("print 'hello'") with open("index.md", "w") as f: f.write("") wrapper = Wrapper() wrapper.to_valid() wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = TextFile(wrapper, ast) parser.parse(".", """ *.py *.py|pyg *.md|jinja """) ast.walk() assert len(wrapper.nodes) == 8
def test_single_bundle_doc_with_args_2(): with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = Yaml(wrapper, ast) parser.parse( '.', """ - hello: - foo: bar - filter_fruit: orange - args: - ping: pong - another-task: - foo: baz - yet-another-task: - foo: bar - one-more-task - more: - hello - one-more-task - foo: bar """) ast.walk() assert wrapper.roots[0].key_with_class() == "bundle:more" assert len(wrapper.nodes) == 5
def test_single_bundle_doc_with_args_2(): with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = Yaml(wrapper, ast) parser.parse('.', """ - hello: - foo: bar - filter_fruit: orange - args: - ping: pong - another-task: - foo: baz - yet-another-task: - foo: bar - one-more-task - more: - hello - one-more-task - foo: bar """) ast.walk() assert wrapper.roots[0].key_with_class() == "bundle:more" assert len(wrapper.nodes) == 5
def test_text_parser(): with wrap() as wrapper: with open("f1.py", "w") as f: f.write("print 'hello'") with open("f2.py", "w") as f: f.write("print 'hello'") with open("index.md", "w") as f: f.write("") wrapper = Wrapper() wrapper.to_valid() wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = TextFile(wrapper, ast) parser.parse( ".", """ *.py *.py|pyg *.md|jinja """) ast.walk() assert len(wrapper.nodes) == 8
def test_parse_inactive(): with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = Yaml(wrapper, ast) parser.parse('.', YAML_WITH_INACTIVE) ast.walk() assert len(wrapper.nodes) == 0
def test_text_parser_blank_lines(): with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = TextFile(wrapper, ast) parser.parse('.', "\n\n") ast.walk() docs = wrapper.roots assert len(docs) == 0
def test_single_bundle_doc(): with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = Yaml(wrapper, ast) parser.parse('.', "hello") ast.walk() wrapper.transition('walked') wrapper.to_checked() assert "bundle:hello" in wrapper.nodes
def test_children_siblings_order(): with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = Yaml(wrapper, ast) parser.parse('.', """ p1: - c1 - c2: - g1 - g2 - g3 - c3 """) ast.walk() wrapper.transition('walked') wrapper.to_checked() wrapper.run() p1 = wrapper.nodes['bundle:p1'] assert [i.key_with_class() for i in p1.walk_inputs()] == [ 'bundle:c1', 'bundle:c2', 'bundle:g1', 'bundle:g2', 'bundle:g3', 'bundle:c3' ] c1 = wrapper.nodes['bundle:c1'] assert len(c1.inputs) == 0 c2 = wrapper.nodes['bundle:c2'] assert [i.key_with_class() for i in c2.walk_inputs()] == [ 'bundle:g1', 'bundle:g2', 'bundle:g3' ] c3 = wrapper.nodes['bundle:c3'] assert len(c3.inputs) == 0 g3 = wrapper.nodes['bundle:g3'] assert len(g3.inputs) == 0
def test_original_parser(): with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() conf = """{ "*.txt" : {} }""" ast = AbstractSyntaxTree(wrapper) parser = Original(wrapper, ast) parser.parse('.', conf) ast.walk() assert wrapper.roots[0].key_with_class() == "pattern:*.txt"
def test_except_patterndoc(): with wrap() as wrapper: with open("exceptme.abc", "w") as f: f.write("hello") wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = Yaml(wrapper, ast) parser.parse('.', """.abc:\n - except : 'exceptme.abc' """) ast.walk() assert len(wrapper.nodes) == 1
def test_text_parser_valid_json(): with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = TextFile(wrapper, ast) parser.parse('.', """ doc.txt { "contents" : "123" } """) ast.walk() docs = wrapper.roots assert docs[0].key == "doc.txt" assert docs[0].args['contents'] == "123"
def test_text_parser_comments(): with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = TextFile(wrapper, ast) parser.parse('.', """ valid.doc { "contents" : "foo" } # commented-out.doc """) ast.walk() assert len(wrapper.roots) == 1 assert wrapper.roots[0].key == "valid.doc"
def test_yaml_with_defaults(): with wrap() as wrapper: os.makedirs("s1/s2") with open("s1/s2/hello.txt", "w") as f: f.write("hello") wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = Yaml(wrapper, ast) parser.parse('.', YAML_WITH_DEFAULTS) ast.walk() assert wrapper.roots[0].args['foo'] == 'bar'
def test_text_parser_comments(): with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = TextFile(wrapper, ast) parser.parse( '.', """ valid.doc { "contents" : "foo" } # commented-out.doc """) ast.walk() assert len(wrapper.roots) == 1 assert wrapper.roots[0].key == "valid.doc"
def test_children_siblings_order(): with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = Yaml(wrapper, ast) parser.parse( '.', """ p1: - c1 - c2: - g1 - g2 - g3 - c3 """) ast.walk() wrapper.transition('walked') wrapper.to_checked() wrapper.run() p1 = wrapper.nodes['bundle:p1'] assert [i.key_with_class() for i in p1.walk_inputs()] == [ 'bundle:c1', 'bundle:c2', 'bundle:g1', 'bundle:g2', 'bundle:g3', 'bundle:c3' ] c1 = wrapper.nodes['bundle:c1'] assert len(c1.inputs) == 0 c2 = wrapper.nodes['bundle:c2'] assert [i.key_with_class() for i in c2.walk_inputs() ] == ['bundle:g1', 'bundle:g2', 'bundle:g3'] c3 = wrapper.nodes['bundle:c3'] assert len(c3.inputs) == 0 g3 = wrapper.nodes['bundle:g3'] assert len(g3.inputs) == 0
def test_single_file_doc(): with wrap() as wrapper: with open("hello.txt", "w") as f: f.write("hello") wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = Yaml(wrapper, ast) parser.parse('.', "hello.txt") ast.walk() wrapper.transition('walked') wrapper.to_checked() wrapper.run() assert "doc:hello.txt" in wrapper.nodes
def test_original_parser_allinputs(): with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() conf = """{ "*.txt" : {}, "hello.txt" : { "contents" : "Hello!" }, "*.md|jinja" : { "allinputs" : true } }""" ast = AbstractSyntaxTree(wrapper) parser = Original(wrapper, ast) parser.parse('.', conf) ast.walk() assert len(wrapper.roots) == 1 assert wrapper.roots[0].key_with_class() == "pattern:*.md|jinja"
def test_ast(): with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) ast.add_node("abc.txt", foo='bar', contents = 'abc') ast.add_dependency("abc.txt", "def.txt") ast.add_node("def.txt", foo='baz', contents = 'def') assert ast.tree == ['doc:abc.txt'] assert ast.args_for_node('doc:abc.txt')['foo'] == 'bar' assert ast.args_for_node('doc:def.txt')['foo'] == 'baz' assert ast.inputs_for_node('abc.txt') == ['doc:def.txt'] assert not ast.inputs_for_node('def.txt') ast.walk() assert len(wrapper.roots) == 1 assert len(wrapper.nodes) == 2
def run_yaml_with_target(target): with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = Yaml(wrapper, ast) parser.parse('.', YAML) ast.walk() wrapper.transition('walked') wrapper.to_checked() assert len(wrapper.roots) == 3 assert len(wrapper.nodes) == 8 wrapper.target = target wrapper.run() yield wrapper
def test_text_parser_virtual_file(): with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = TextFile(wrapper, ast) parser.parse('.', """ virtual.txt { "contents" : "hello" } """) ast.walk() wrapper.transition('walked') wrapper.to_checked() wrapper.run() docs = wrapper.roots assert docs[0].key == "virtual.txt" assert str(docs[0].output_data()) == "hello"
def test_text_parser_virtual_file(): with wrap() as wrapper: wrapper.nodes = {} wrapper.roots = [] wrapper.batch = dexy.batch.Batch(wrapper) wrapper.filemap = wrapper.map_files() ast = AbstractSyntaxTree(wrapper) parser = TextFile(wrapper, ast) parser.parse( '.', """ virtual.txt { "contents" : "hello" } """) ast.walk() wrapper.transition('walked') wrapper.to_checked() wrapper.run() docs = wrapper.roots assert docs[0].key == "virtual.txt" assert str(docs[0].output_data()) == "hello"