view tests/_testhelper.py @ 123:4d96ace53ba1

Make it work on Python2 too with all tests by explicitely declaring some strings to be Unicode strings. No tests need to be skipped on Python2 now.
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 06 May 2026 15:53:24 +0200
parents 859ab8abce0a
children
line wrap: on
line source

# -*- coding: utf-8 -*-
# :-
# SPDX-FileCopyrightText: © 2026 Franz Glasner
# SPDX-License-Identifier: MIT
# :-
"""Test helper"""

__all__ = ["TokenAssertHelper"]


from pygments.token import Token, is_token_subtype, string_to_tokentype


class TokenAssertHelper(object):
    """Mixin to test for token stream equality"""

    def assertTokenEqual(self, tok_or_str, txt, token):
        if is_token_subtype(tok_or_str, Token):
            t = tok_or_str
        else:
            t = string_to_tokentype(tok_or_str)
        self.assertEqual((t, txt), token)

    def assertNextTokenEqual(self, tok_or_str, txt, tokens):
        self.assertTokenEqual(tok_or_str, txt, next(tokens))

    def assertTokenStreamEqual(self, expected_tokens, given_tokens):
        for tok, txt in expected_tokens:
            self.assertNextTokenEqual(tok, txt, given_tokens)

    def assertTokenStreamEqualComplete(self, expected_tokens, given_tokens):
        self.assertTokenStreamEqual(expected_tokens, given_tokens)
        self.assertRaises(StopIteration, next, given_tokens)