@@ -648,10 +648,17 @@ def test_invalid(self):
648
648
assert_model (node , expected )
649
649
650
650
651
+ class RemoveNonDataTokensVisitor (ModelVisitor ):
652
+ def visit_Statement (self , node ):
653
+ node .tokens = node .data_tokens
654
+
655
+
651
656
class TestTry (unittest .TestCase ):
652
657
653
658
def test_try_except_else_finally (self ):
654
- model = get_model ('''\
659
+ for data_only in [True , False ]:
660
+ with self .subTest (data_only = data_only ):
661
+ model = get_model ('''\
655
662
*** Test Cases ***
656
663
Example
657
664
TRY
@@ -665,30 +672,40 @@ def test_try_except_else_finally(self):
665
672
FINALLY
666
673
Log finally here!
667
674
END
668
- ''' , data_only = True )
669
- node = model .sections [0 ].body [0 ].body [0 ]
670
- expected = Try (
671
- header = TryHeader ([Token (Token .TRY , 'TRY' , 3 , 4 )]),
672
- body = [KeywordCall ([Token (Token .KEYWORD , 'Fail' , 4 , 8 ), Token (Token .ARGUMENT , 'Oh no!' , 4 , 16 )])],
673
- next = Try (
674
- header = ExceptHeader ([Token (Token .EXCEPT , 'EXCEPT' , 5 , 4 ), Token (Token .ARGUMENT , 'does not match' , 5 , 13 )]),
675
- body = [KeywordCall ((Token (Token .KEYWORD , 'No operation' , 6 , 8 ),))],
676
- next = Try (
677
- header = ExceptHeader ((Token (Token .EXCEPT , 'EXCEPT' , 7 , 4 ), Token (Token .AS , 'AS' , 7 , 14 ), Token (Token .VARIABLE , '${exp}' , 7 , 20 ))),
678
- body = [KeywordCall ((Token (Token .KEYWORD , 'Log' , 8 , 8 ), Token (Token .ARGUMENT , 'Catch' , 8 , 15 )))],
675
+ ''' , data_only = data_only )
676
+ node = model .sections [0 ].body [0 ].body [0 ]
677
+ expected = Try (
678
+ header = TryHeader ([Token (Token .TRY , 'TRY' , 3 , 4 )]),
679
+ body = [KeywordCall ([Token (Token .KEYWORD , 'Fail' , 4 , 8 ),
680
+ Token (Token .ARGUMENT , 'Oh no!' , 4 , 16 )])],
679
681
next = Try (
680
- header = ElseHeader ((Token (Token .ELSE , 'ELSE' , 9 , 4 ),)),
681
- body = [KeywordCall ((Token (Token .KEYWORD , 'No operation' , 10 , 8 ),))],
682
+ header = ExceptHeader ([Token (Token .EXCEPT , 'EXCEPT' , 5 , 4 ),
683
+ Token (Token .ARGUMENT , 'does not match' , 5 , 13 )]),
684
+ body = [KeywordCall ((Token (Token .KEYWORD , 'No operation' , 6 , 8 ),))],
682
685
next = Try (
683
- header = FinallyHeader ((Token (Token .FINALLY , 'FINALLY' , 11 , 4 ),)),
684
- body = [KeywordCall ((Token (Token .KEYWORD , 'Log' , 12 , 8 ), Token (Token .ARGUMENT , 'finally here!' , 12 , 15 )))]
686
+ header = ExceptHeader ((Token (Token .EXCEPT , 'EXCEPT' , 7 , 4 ),
687
+ Token (Token .AS , 'AS' , 7 , 14 ),
688
+ Token (Token .VARIABLE , '${exp}' , 7 , 20 ))),
689
+ body = [KeywordCall ((Token (Token .KEYWORD , 'Log' , 8 , 8 ),
690
+ Token (Token .ARGUMENT , 'Catch' , 8 , 15 )))],
691
+ next = Try (
692
+ header = ElseHeader ((Token (Token .ELSE , 'ELSE' , 9 , 4 ),)),
693
+ body = [KeywordCall ((Token (Token .KEYWORD , 'No operation' , 10 , 8 ),))],
694
+ next = Try (
695
+ header = FinallyHeader ((Token (Token .FINALLY , 'FINALLY' , 11 , 4 ),)),
696
+ body = [KeywordCall ((Token (Token .KEYWORD , 'Log' , 12 , 8 ),
697
+ Token (Token .ARGUMENT , 'finally here!' , 12 , 15 )))]
698
+ )
699
+ )
685
700
)
686
- )
701
+ ),
702
+ end = End ([Token (Token .END , 'END' , 13 , 4 )])
687
703
)
688
- ),
689
- end = End ([Token (Token .END , 'END' , 13 , 4 )])
690
- )
691
- assert_model (node , expected )
704
+
705
+ if not data_only :
706
+ RemoveNonDataTokensVisitor ().visit (node )
707
+
708
+ assert_model (node , expected )
692
709
693
710
694
711
class TestVariables (unittest .TestCase ):
0 commit comments