comparison tests/test-command-template.t @ 36669:80d7fb6c2dec

templater: add hint to template parse errors to help locate issues Previously, we would print the error name and location, but this isn't as helpful as we can be. Let's add a hint that shows the location where we encountered the parse error. Differential Revision: https://phab.mercurial-scm.org/D2608
author Ryan McElroy <rmcelroy@fb.com>
date Sat, 03 Mar 2018 14:23:40 -0800
parents e80f8a134731
children 1b179d151578
comparison
equal deleted inserted replaced
36668:e77cee5de1c7 36669:80d7fb6c2dec
2764 hg: parse error at t:3: unmatched quotes 2764 hg: parse error at t:3: unmatched quotes
2765 [255] 2765 [255]
2766 2766
2767 $ hg log -T '{date' 2767 $ hg log -T '{date'
2768 hg: parse error at 1: unterminated template expansion 2768 hg: parse error at 1: unterminated template expansion
2769 ({date
2770 ^ here)
2769 [255] 2771 [255]
2770 $ hg log -T '{date(}' 2772 $ hg log -T '{date(}'
2771 hg: parse error at 7: not a prefix: end 2773 hg: parse error at 7: not a prefix: end
2774 ({date(}
2775 ^ here)
2772 [255] 2776 [255]
2773 $ hg log -T '{date)}' 2777 $ hg log -T '{date)}'
2774 hg: parse error at 5: invalid token 2778 hg: parse error at 5: invalid token
2779 ({date)}
2780 ^ here)
2775 [255] 2781 [255]
2776 $ hg log -T '{date date}' 2782 $ hg log -T '{date date}'
2777 hg: parse error at 6: invalid token 2783 hg: parse error at 6: invalid token
2784 ({date date}
2785 ^ here)
2778 [255] 2786 [255]
2779 2787
2780 $ hg log -T '{}' 2788 $ hg log -T '{}'
2781 hg: parse error at 2: not a prefix: end 2789 hg: parse error at 2: not a prefix: end
2790 ({}
2791 ^ here)
2782 [255] 2792 [255]
2783 $ hg debugtemplate -v '{()}' 2793 $ hg debugtemplate -v '{()}'
2784 (template 2794 (template
2785 (group 2795 (group
2786 None)) 2796 None))
2825 2835
2826 Error in nested template: 2836 Error in nested template:
2827 2837
2828 $ hg log -T '{"date' 2838 $ hg log -T '{"date'
2829 hg: parse error at 2: unterminated string 2839 hg: parse error at 2: unterminated string
2840 ({"date
2841 ^ here)
2830 [255] 2842 [255]
2831 2843
2832 $ hg log -T '{"foo{date|?}"}' 2844 $ hg log -T '{"foo{date|?}"}'
2833 hg: parse error at 11: syntax error 2845 hg: parse error at 11: syntax error
2846 ({"foo{date|?}"}
2847 ^ here)
2834 [255] 2848 [255]
2835 2849
2836 Thrown an error if a template function doesn't exist 2850 Thrown an error if a template function doesn't exist
2837 2851
2838 $ hg tip --template '{foo()}\n' 2852 $ hg tip --template '{foo()}\n'
3360 (integer '4'))) 3374 (integer '4')))
3361 (string '\n')) 3375 (string '\n'))
3362 -4 3376 -4
3363 $ hg debugtemplate '{(-)}\n' 3377 $ hg debugtemplate '{(-)}\n'
3364 hg: parse error at 3: not a prefix: ) 3378 hg: parse error at 3: not a prefix: )
3379 ({(-)}\n
3380 ^ here)
3365 [255] 3381 [255]
3366 $ hg debugtemplate '{(-a)}\n' 3382 $ hg debugtemplate '{(-a)}\n'
3367 hg: parse error: negation needs an integer argument 3383 hg: parse error: negation needs an integer argument
3368 [255] 3384 [255]
3369 3385
3525 foo 3541 foo
3526 $ hg log -r 2 -T "{if(rev, '{if(rev, r\'foo\')}')}"'\n' 3542 $ hg log -r 2 -T "{if(rev, '{if(rev, r\'foo\')}')}"'\n'
3527 foo 3543 foo
3528 $ hg log -r 2 -T '{if(rev, "{if(rev, \")}")}\n' 3544 $ hg log -r 2 -T '{if(rev, "{if(rev, \")}")}\n'
3529 hg: parse error at 21: unterminated string 3545 hg: parse error at 21: unterminated string
3546 ({if(rev, "{if(rev, \")}")}\n
3547 ^ here)
3530 [255] 3548 [255]
3531 $ hg log -r 2 -T '{if(rev, \"\\"")}\n' 3549 $ hg log -r 2 -T '{if(rev, \"\\"")}\n'
3532 hg: parse error: trailing \ in string 3550 hg: parse error: trailing \ in string
3533 [255] 3551 [255]
3534 $ hg log -r 2 -T '{if(rev, r\"\\"")}\n' 3552 $ hg log -r 2 -T '{if(rev, r\"\\"")}\n'