Skip to content

Commit

Permalink
Fix #28, whitelist xml.etree.ElementTree.{Element,SubElement} usage
Browse files Browse the repository at this point in the history
  • Loading branch information
mschwager committed Apr 27, 2020
1 parent 1b44014 commit 7f44779
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 0 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Expand Up @@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]
### Fixed
- False positive for `DUO107` when `xml.etree.ElementTree.{Element,SubElement}` used ([#28](https://github.com/dlint-py/dlint/issues/28))

## [0.10.3] - 2020-03-09
### Fixed
Expand Down
2 changes: 2 additions & 0 deletions dlint/linters/bad_xml_use.py
Expand Up @@ -32,4 +32,6 @@ def illegal_modules(self):
def whitelisted_modules(self):
return [
'xml.sax.saxutils',
'xml.etree.ElementTree.Element',
'xml.etree.ElementTree.SubElement',
]
45 changes: 45 additions & 0 deletions tests/test_bad_xml_use.py
Expand Up @@ -63,6 +63,51 @@ def test_saxutils_import_usage(self):

assert result == expected

def test_element_import_usage(self):
python_node = self.get_ast_node(
"""
import xml.etree.ElementTree.Element
import xml.etree.ElementTree.SubElement
from xml.etree.ElementTree import Element
from xml.etree.ElementTree import SubElement
"""
)

linter = dlint.linters.BadXMLUseLinter()
linter.visit(python_node)

result = linter.get_results()
expected = []

assert result == expected

def test_element_parse_import_usage(self):
python_node = self.get_ast_node(
"""
import xml.etree.ElementTree.parse
from xml.etree.ElementTree import parse
"""
)

linter = dlint.linters.BadXMLUseLinter()
linter.visit(python_node)

result = linter.get_results()
expected = [
dlint.linters.base.Flake8Result(
lineno=2,
col_offset=0,
message=dlint.linters.BadXMLUseLinter._error_tmpl
),
dlint.linters.base.Flake8Result(
lineno=3,
col_offset=0,
message=dlint.linters.BadXMLUseLinter._error_tmpl
),
]

assert result == expected

def test_defused_lxml_usage(self):
python_node = self.get_ast_node(
"""
Expand Down

0 comments on commit 7f44779

Please sign in to comment.