diff options
| author | Victor Uriarte <victor.m.uriarte@intel.com> | 2016-06-12 14:39:05 -0700 |
|---|---|---|
| committer | Victor Uriarte <victor.m.uriarte@intel.com> | 2016-06-12 14:39:05 -0700 |
| commit | fae3d94f7f3039d5d7b264b6b4aad69c6b03c9a4 (patch) | |
| tree | 4482461b018aa857db73698b6385642063aabd42 | |
| parent | 8ad44059d4d9ab5a8a7489a963dcb8de45ca3a0a (diff) | |
| download | sqlparse-fae3d94f7f3039d5d7b264b6b4aad69c6b03c9a4.tar.gz | |
Fix token-parent behavior
Closes issue #226
| -rw-r--r-- | sqlparse/sql.py | 3 | ||||
| -rw-r--r-- | tests/test_parse.py | 8 |
2 files changed, 11 insertions, 0 deletions
diff --git a/sqlparse/sql.py b/sqlparse/sql.py index cee6af5..52b3bf1 100644 --- a/sqlparse/sql.py +++ b/sqlparse/sql.py @@ -140,6 +140,7 @@ class TokenList(Token): def __init__(self, tokens=None): self.tokens = tokens or [] + [setattr(token, 'parent', self) for token in tokens] super(TokenList, self).__init__(None, text_type(self)) def __str__(self): @@ -300,11 +301,13 @@ class TokenList(Token): def insert_before(self, where, token): """Inserts *token* before *where*.""" + token.parent = self self.tokens.insert(self.token_index(where), token) def insert_after(self, where, token, skip_ws=True): """Inserts *token* after *where*.""" next_token = self.token_next(where, skip_ws=skip_ws) + token.parent = self if next_token is None: self.tokens.append(token) else: diff --git a/tests/test_parse.py b/tests/test_parse.py index 0f5af04..75a7ab5 100644 --- a/tests/test_parse.py +++ b/tests/test_parse.py @@ -390,3 +390,11 @@ def test_wildcard_multiplication(): p = sqlparse.parse('select 1 * 2 from dual')[0] assert p.tokens[2][2].ttype == T.Operator + + +def test_stmt_tokens_parents(): + # see issue 226 + sql = "CREATE TABLE test();" + stmt = sqlparse.parse(sql)[0] + for token in stmt.tokens: + assert token.has_ancestor(stmt) |
