1. Georg Brandl
  2. sphinx


sphinx / tests / test_highlighting.py

Georg Brandl 849b21d 

Georg Brandl 38ed9ca 
Georg Brandl f4b28e7 
Georg Brandl 849b21d 

Georg Brandl d93ed8f 

Georg Brandl 849b21d 

Georg Brandl d192b83 
Georg Brandl 849b21d 

Benjamin Peterso… 2f9fbff 
Georg Brandl d192b83 

Georg Brandl 849b21d 
Georg Brandl d93ed8f 

Georg Brandl 849b21d 

Georg Brandl d192b83 
Benjamin Peterso… 2f9fbff 

Georg Brandl d192b83 

# -*- coding: utf-8 -*-

    Test the Pygments highlighting bridge.

    :copyright: Copyright 2007-2009 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.

from util import *

    import pygments
except ImportError:
    from nose.plugins.skip import SkipTest
    raise SkipTest('pygments not available')

from pygments.lexer import RegexLexer
from pygments.token import Text, Name
from pygments.formatters.html import HtmlFormatter

from sphinx.highlighting import PygmentsBridge

class MyLexer(RegexLexer):
    name = 'testlexer'

    tokens = {
        'root': [
            ('a', Name),
            ('b', Text),

class MyFormatter(HtmlFormatter):
    def format(self, tokensource, outfile):

class ComplainOnUnhighlighted(PygmentsBridge):
    def unhighlighted(self, source):
        raise AssertionError("should highlight %r" % source)

def test_add_lexer(app):
    app.add_lexer('test', MyLexer())

    bridge = PygmentsBridge('html')
    ret = bridge.highlight_block('ab', 'test')
    assert '<span class="n">a</span>b' in ret

def test_detect_interactive():
    bridge = ComplainOnUnhighlighted('html')
    blocks = [
        >>> testing()
    for block in blocks:
        ret = bridge.highlight_block(block.lstrip(), 'python')
        assert ret.startswith("<div class=\"highlight\">")

def test_set_formatter():
    PygmentsBridge.html_formatter = MyFormatter
        bridge = PygmentsBridge('html')
        ret = bridge.highlight_block('foo', 'python')
        assert ret == 'test'
        PygmentsBridge.html_formatter = HtmlFormatter