@@ -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
502502dotfile_flat = dotfile_orig
503503dotfile_detailed_flat = dotfile_detailed_orig
@@ -506,19 +506,19 @@ def test_deep_nested_write_graph_runs(tmpdir):
506506dotfile_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):
563566dotfile_detailed_iter_flat = dotfile_detailed_orig
564567
565568dotfile_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
629636def test_io_subclass ():
0 commit comments