@@ -486,18 +486,18 @@ def test_deep_nested_write_graph_runs(tmpdir):
486
486
487
487
488
488
# 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
+ '}' ]
501
501
502
502
dotfile_flat = dotfile_orig
503
503
dotfile_detailed_flat = dotfile_detailed_orig
@@ -506,19 +506,19 @@ def test_deep_nested_write_graph_runs(tmpdir):
506
506
dotfile_detailed_exec = dotfile_detailed_orig
507
507
508
508
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
+ '}' ]
515
515
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
+ '}' ]
522
522
523
523
@pytest .mark .parametrize ("simple" , [True , False ])
524
524
@pytest .mark .parametrize ("graph_type" , ['orig' , 'flat' , 'exec' , 'hierarchical' , 'colored' ])
@@ -535,24 +535,27 @@ def test_write_graph_dotfile(tmpdir, graph_type, simple):
535
535
536
536
with open ("graph.dot" ) as f :
537
537
graph_str = f .read ()
538
+
538
539
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
540
542
else :
541
543
# 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
550
552
551
553
# graph_detailed is not created for hierachical or colored
552
554
if graph_type not in ["hierarchical" , "colored" ]:
553
555
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
556
559
557
560
558
561
# examples of dot files used in the following test
@@ -563,32 +566,32 @@ def test_write_graph_dotfile(tmpdir, graph_type, simple):
563
566
dotfile_detailed_iter_flat = dotfile_detailed_orig
564
567
565
568
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
+ '}' ]
592
595
593
596
@pytest .mark .parametrize ("simple" , [True , False ])
594
597
@pytest .mark .parametrize ("graph_type" , ['orig' , 'flat' , 'exec' , 'hierarchical' , 'colored' ])
@@ -606,24 +609,28 @@ def test_write_graph_dotfile_iterables(tmpdir, graph_type, simple):
606
609
607
610
with open ("graph.dot" ) as f :
608
611
graph_str = f .read ()
612
+
609
613
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
611
616
else :
612
617
# 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
621
626
622
627
# graph_detailed is not created for hierachical or colored
623
628
if graph_type not in ["hierarchical" , "colored" ]:
624
629
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
+
627
634
628
635
629
636
def test_io_subclass ():
0 commit comments