Skip to content

Commit

Permalink
logging: always show source locations as absolute paths (#10460)
Browse files Browse the repository at this point in the history
  • Loading branch information
dhellmann committed Jun 16, 2022
1 parent 6ef22d2 commit 9c9a52d
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
3 changes: 3 additions & 0 deletions sphinx/util/logging.py
Expand Up @@ -12,6 +12,7 @@

from sphinx.errors import SphinxWarning
from sphinx.util.console import colorize
from sphinx.util.osutil import abspath

if TYPE_CHECKING:
from sphinx.application import Sphinx
Expand Down Expand Up @@ -514,6 +515,8 @@ class WarningLogRecordTranslator(SphinxLogRecordTranslator):

def get_node_location(node: Node) -> Optional[str]:
(source, line) = get_source_line(node)
if source:
source = abspath(source)
if source and line:
return "%s:%s" % (source, line)
elif source:
Expand Down
18 changes: 17 additions & 1 deletion tests/test_util_logging.py
Expand Up @@ -2,13 +2,14 @@

import codecs
import os
import os.path

import pytest
from docutils import nodes

from sphinx.errors import SphinxWarning
from sphinx.testing.util import strip_escseq
from sphinx.util import logging
from sphinx.util import logging, osutil
from sphinx.util.console import colorize
from sphinx.util.logging import is_suppressed_warning, prefixed_warnings
from sphinx.util.parallel import ParallelTasks
Expand Down Expand Up @@ -379,3 +380,18 @@ def test_prefixed_warnings(app, status, warning):
assert 'WARNING: Another PREFIX: message3' in warning.getvalue()
assert 'WARNING: PREFIX: message4' in warning.getvalue()
assert 'WARNING: message5' in warning.getvalue()


def test_get_node_location_abspath():
# Ensure that node locations are reported as an absolute path,
# even if the source attribute is a relative path.

relative_filename = os.path.join('relative', 'path.txt')
absolute_filename = osutil.abspath(relative_filename)

n = nodes.Node()
n.source = relative_filename

location = logging.get_node_location(n)

assert location == absolute_filename + ':'

0 comments on commit 9c9a52d

Please sign in to comment.