Skip to content

Commit 879ea28

Browse files
committed
fixing tests for dot files - for py<3.6 the files can have lines in different order
1 parent 052ee72 commit 879ea28

File tree

1 file changed

+79
-72
lines changed

1 file changed

+79
-72
lines changed

nipype/pipeline/engine/tests/test_engine.py

+79-72
Original file line numberDiff line numberDiff line change
@@ -486,18 +486,18 @@ def test_deep_nested_write_graph_runs(tmpdir):
486486

487487

488488
# examples of dot files used in the following test
489-
dotfile_orig = ('strict digraph {\n'
490-
'"mod1 (engine)";\n'
491-
'"mod2 (engine)";\n'
492-
'"mod1 (engine)" -> "mod2 (engine)";\n'
493-
'}\n')
494-
495-
dotfile_detailed_orig = ('digraph structs {\n'
496-
'node [shape=record];\n'
497-
'pipemod1 [label="{IN}|{ mod1 | engine | }|{OUT|<outoutput1> output1}"];\n'
498-
'pipemod2 [label="{IN|<ininput1> input1}|{ mod2 | engine | }|{OUT}"];\n'
499-
'pipemod1:outoutput1:e -> pipemod2:ininput1:w;\n'
500-
'}')
489+
dotfile_orig = ['strict digraph {\n',
490+
'"mod1 (engine)";\n',
491+
'"mod2 (engine)";\n',
492+
'"mod1 (engine)" -> "mod2 (engine)";\n',
493+
'}\n']
494+
495+
dotfile_detailed_orig = ['digraph structs {\n',
496+
'node [shape=record];\n',
497+
'pipemod1 [label="{IN}|{ mod1 | engine | }|{OUT|<outoutput1> output1}"];\n',
498+
'pipemod2 [label="{IN|<ininput1> input1}|{ mod2 | engine | }|{OUT}"];\n',
499+
'pipemod1:outoutput1:e -> pipemod2:ininput1:w;\n',
500+
'}']
501501

502502
dotfile_flat = dotfile_orig
503503
dotfile_detailed_flat = dotfile_detailed_orig
@@ -506,19 +506,19 @@ def test_deep_nested_write_graph_runs(tmpdir):
506506
dotfile_detailed_exec = dotfile_detailed_orig
507507

508508

509-
dotfile_hierarchical = ('digraph pipe{\n'
510-
' label="pipe";\n'
511-
' pipe_mod1[label="mod1 (engine)"];\n'
512-
' pipe_mod2[label="mod2 (engine)"];\n'
513-
' pipe_mod1 -> pipe_mod2;\n'
514-
'}')
509+
dotfile_hierarchical = ['digraph pipe{\n',
510+
' label="pipe";\n',
511+
' pipe_mod1[label="mod1 (engine)"];\n',
512+
' pipe_mod2[label="mod2 (engine)"];\n',
513+
' pipe_mod1 -> pipe_mod2;\n',
514+
'}']
515515

516-
dotfile_colored = ('digraph pipe{\n'
517-
' label="pipe";\n'
518-
' pipe_mod1[label="mod1 (engine)", style=filled, fillcolor="#FFFFC8"];\n'
519-
' pipe_mod2[label="mod2 (engine)", style=filled, fillcolor="#FFFFC8"];\n'
520-
' pipe_mod1 -> pipe_mod2;\n'
521-
'}')
516+
dotfile_colored = ['digraph pipe{\n',
517+
' label="pipe";\n',
518+
' pipe_mod1[label="mod1 (engine)", style=filled, fillcolor="#FFFFC8"];\n',
519+
' pipe_mod2[label="mod2 (engine)", style=filled, fillcolor="#FFFFC8"];\n',
520+
' pipe_mod1 -> pipe_mod2;\n',
521+
'}']
522522

523523
@pytest.mark.parametrize("simple", [True, False])
524524
@pytest.mark.parametrize("graph_type", ['orig', 'flat', 'exec', 'hierarchical', 'colored'])
@@ -535,24 +535,27 @@ def test_write_graph_dotfile(tmpdir, graph_type, simple):
535535

536536
with open("graph.dot") as f:
537537
graph_str = f.read()
538+
538539
if simple:
539-
assert graph_str == eval("dotfile_{}".format(graph_type))
540+
for str in eval("dotfile_{}".format(graph_type)):
541+
assert str in graph_str
540542
else:
541543
# if simple=False graph.dot uses longer names
542-
if graph_type in ["hierarchical", "colored"]:
543-
assert graph_str == eval("dotfile_{}".format(graph_type)).replace(
544-
"mod1 (engine)", "mod1.EngineTestInterface.engine").replace(
545-
"mod2 (engine)", "mod2.EngineTestInterface.engine")
546-
else:
547-
assert graph_str == eval("dotfile_{}".format(graph_type)).replace(
548-
"mod1 (engine)", "pipe.mod1.EngineTestInterface.engine").replace(
549-
"mod2 (engine)", "pipe.mod2.EngineTestInterface.engine")
544+
for str in eval("dotfile_{}".format(graph_type)):
545+
if graph_type in ["hierarchical", "colored"]:
546+
assert str.replace("mod1 (engine)", "mod1.EngineTestInterface.engine").replace(
547+
"mod2 (engine)", "mod2.EngineTestInterface.engine") in graph_str
548+
else:
549+
assert str.replace(
550+
"mod1 (engine)", "pipe.mod1.EngineTestInterface.engine").replace(
551+
"mod2 (engine)", "pipe.mod2.EngineTestInterface.engine") in graph_str
550552

551553
# graph_detailed is not created for hierachical or colored
552554
if graph_type not in ["hierarchical", "colored"]:
553555
with open("graph_detailed.dot") as f:
554-
graph_str =f.read()
555-
assert graph_str == eval("dotfile_detailed_{}".format(graph_type))
556+
graph_str = f.read()
557+
for str in eval("dotfile_detailed_{}".format(graph_type)):
558+
assert str in graph_str
556559

557560

558561
# examples of dot files used in the following test
@@ -563,32 +566,32 @@ def test_write_graph_dotfile(tmpdir, graph_type, simple):
563566
dotfile_detailed_iter_flat = dotfile_detailed_orig
564567

565568
dotfile_iter_exec = dotfile_orig
566-
dotfile_detailed_iter_exec = (
567-
'digraph structs {\n'
568-
'node [shape=record];\n'
569-
'pipemod1aIa1 [label="{IN}|{ a1 | engine | mod1.aI }|{OUT|<outoutput1> output1}"];\n'
570-
'pipemod2a1 [label="{IN|<ininput1> input1}|{ a1 | engine | mod2 }|{OUT}"];\n'
571-
'pipemod1aIa0 [label="{IN}|{ a0 | engine | mod1.aI }|{OUT|<outoutput1> output1}"];\n'
572-
'pipemod2a0 [label="{IN|<ininput1> input1}|{ a0 | engine | mod2 }|{OUT}"];\n'
573-
'pipemod1aIa0:outoutput1:e -> pipemod2a0:ininput1:w;\n'
574-
'pipemod1aIa1:outoutput1:e -> pipemod2a1:ininput1:w;\n'
575-
'}')
576-
577-
dotfile_iter_hierarchical = (
578-
'digraph pipe{\n'
579-
' label="pipe";\n'
580-
' pipe_mod1[label="mod1 (engine)", shape=box3d,style=filled, color=black, colorscheme=greys7 fillcolor=2];\n'
581-
' pipe_mod2[label="mod2 (engine)"];\n'
582-
' pipe_mod1 -> pipe_mod2;\n'
583-
'}')
584-
585-
dotfile_iter_colored = (
586-
'digraph pipe{\n'
587-
' label="pipe";\n'
588-
' pipe_mod1[label="mod1 (engine)", shape=box3d,style=filled, color=black, colorscheme=greys7 fillcolor=2];\n'
589-
' pipe_mod2[label="mod2 (engine)", style=filled, fillcolor="#FFFFC8"];\n'
590-
' pipe_mod1 -> pipe_mod2;\n'
591-
'}')
569+
dotfile_detailed_iter_exec = [
570+
'digraph structs {\n',
571+
'node [shape=record];\n',
572+
'pipemod1aIa1 [label="{IN}|{ a1 | engine | mod1.aI }|{OUT|<outoutput1> output1}"];\n',
573+
'pipemod2a1 [label="{IN|<ininput1> input1}|{ a1 | engine | mod2 }|{OUT}"];\n',
574+
'pipemod1aIa0 [label="{IN}|{ a0 | engine | mod1.aI }|{OUT|<outoutput1> output1}"];\n',
575+
'pipemod2a0 [label="{IN|<ininput1> input1}|{ a0 | engine | mod2 }|{OUT}"];\n',
576+
'pipemod1aIa0:outoutput1:e -> pipemod2a0:ininput1:w;\n',
577+
'pipemod1aIa1:outoutput1:e -> pipemod2a1:ininput1:w;\n',
578+
'}']
579+
580+
dotfile_iter_hierarchical = [
581+
'digraph pipe{\n',
582+
' label="pipe";\n',
583+
' pipe_mod1[label="mod1 (engine)", shape=box3d,style=filled, color=black, colorscheme=greys7 fillcolor=2];\n',
584+
' pipe_mod2[label="mod2 (engine)"];\n',
585+
' pipe_mod1 -> pipe_mod2;\n',
586+
'}']
587+
588+
dotfile_iter_colored = [
589+
'digraph pipe{\n',
590+
' label="pipe";\n',
591+
' pipe_mod1[label="mod1 (engine)", shape=box3d,style=filled, color=black, colorscheme=greys7 fillcolor=2];\n',
592+
' pipe_mod2[label="mod2 (engine)", style=filled, fillcolor="#FFFFC8"];\n',
593+
' pipe_mod1 -> pipe_mod2;\n',
594+
'}']
592595

593596
@pytest.mark.parametrize("simple", [True, False])
594597
@pytest.mark.parametrize("graph_type", ['orig', 'flat', 'exec', 'hierarchical', 'colored'])
@@ -606,24 +609,28 @@ def test_write_graph_dotfile_iterables(tmpdir, graph_type, simple):
606609

607610
with open("graph.dot") as f:
608611
graph_str = f.read()
612+
609613
if simple:
610-
assert graph_str == eval("dotfile_iter_{}".format(graph_type))
614+
for str in eval("dotfile_iter_{}".format(graph_type)):
615+
assert str in graph_str
611616
else:
612617
# if simple=False graph.dot uses longer names
613-
if graph_type in ["hierarchical", "colored"]:
614-
assert graph_str == eval("dotfile_iter_{}".format(graph_type)).replace(
615-
"mod1 (engine)", "mod1.EngineTestInterface.engine").replace(
616-
"mod2 (engine)", "mod2.EngineTestInterface.engine")
617-
else:
618-
assert graph_str == eval("dotfile_iter_{}".format(graph_type)).replace(
619-
"mod1 (engine)", "pipe.mod1.EngineTestInterface.engine").replace(
620-
"mod2 (engine)", "pipe.mod2.EngineTestInterface.engine")
618+
for str in eval("dotfile_iter_{}".format(graph_type)):
619+
if graph_type in ["hierarchical", "colored"]:
620+
assert str.replace("mod1 (engine)", "mod1.EngineTestInterface.engine").replace(
621+
"mod2 (engine)", "mod2.EngineTestInterface.engine") in graph_str
622+
else:
623+
assert str.replace(
624+
"mod1 (engine)", "pipe.mod1.EngineTestInterface.engine").replace(
625+
"mod2 (engine)", "pipe.mod2.EngineTestInterface.engine") in graph_str
621626

622627
# graph_detailed is not created for hierachical or colored
623628
if graph_type not in ["hierarchical", "colored"]:
624629
with open("graph_detailed.dot") as f:
625-
graph_str =f.read()
626-
assert graph_str == eval("dotfile_detailed_iter_{}".format(graph_type))
630+
graph_str = f.read()
631+
for str in eval("dotfile_detailed_iter_{}".format(graph_type)):
632+
assert str in graph_str
633+
627634

628635

629636
def test_io_subclass():

0 commit comments

Comments
 (0)