sapling/eden/scm/tests/test-argspans.py
Adam Simpkins ab3a7cb21f Move fb-mercurial sources into an eden/scm subdirectory.
Summary:
In preparation for merging fb-mercurial sources to the Eden repository,
move everything from the top-level directory into an `eden/scm`
subdirectory.
2019-11-13 16:04:48 -08:00

67 lines
1.4 KiB
Python

# Copyright 2019 Facebook, Inc.
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
# fmt: off
from __future__ import absolute_import
import os
import sys
from testutil import argspans
try:
import parso
parso.parse
except ImportError:
sys.stderr.write("skipped: missing feature: parso\n")
sys.exit(80)
def testfunc():
def foo(x, y):
filepath, lineno, indent, spans = argspans.argspans()
assert os.path.basename(filepath) == "test-argspans.py"
assert lineno == 34
assert indent == 12
assert spans == [((34, 16), (34, 17)), ((34, 19), (34, 24))]
if True:
if True:
foo(1, "abc")
def nested(x, y):
def inner1(x, y):
inner2(x, y)
def inner2(x, y):
filepath, lineno, indent, spans = argspans.argspans(nested=2)
assert lineno == 48
assert indent == 4
assert spans == [((48, 11), (48, 13)), ((48, 15), (48, 20))]
inner1(x, y)
nested(42, "def")
def testoperator():
class A(object):
def __eq__(self, rhs):
filepath, lineno, indent, spans = argspans.argspans()
assert indent == 4
assert spans == [((58, 11), (60, 7))]
A() == """multi
line
"""
testfunc()
testoperator()
# fmt: on