Skip to content

Commit

Permalink
#529 Implement sub class of Pom of Pymaven class and add test case
Browse files Browse the repository at this point in the history
  • Loading branch information
Li committed Mar 21, 2017
1 parent 25a1eea commit 0336890
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 1 deletion.
3 changes: 3 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,9 @@ def read(*names, **kwargs):
'pygments >= 2.0.0, <3.0.0',
'pdfminer >= 20140328',

# pymaven
'pymaven >= 0.1.0',

# typecode
'chardet >= 2.1.1, <3.0.0',
'binaryornot >= 0.4.0',
Expand Down
26 changes: 25 additions & 1 deletion src/packagedcode/maven.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@
from os.path import dirname
from os.path import join
import re
from lxml import etree

from pymaven import pom
from pymaven.client import MavenClient
from commoncode import filetype
from commoncode import fileutils
from typecode import contenttype
Expand All @@ -58,7 +61,6 @@
# or Maven1 support dropped entirely



class MavenJar(models.JavaJar):
metafiles = ('META-INF/**/*.pom', 'pom.xml',)
repo_types = (models.repo_maven,)
Expand All @@ -70,6 +72,28 @@ def recognize(cls, location):
return parse(location)


class PyMaven(pom.Pom):
def __init__(self, pom_location):
with open(pom_location) as fh:
xml = fh.read()
self._xml = etree.fromstring(
pom.STRIP_NAMESPACE_RE.sub('<project>', xml[xml.find('<project'):], 1),
parser=pom.POM_PARSER,
)
self._client = None

# dynamic attributes
self._parent = None
self._dep_mgmt = None
self._dependencies = None
self._properties = None
self.artifact_id = None
self.group_id = None
self.version = None

def _pom_factory(self, group, artifact, version):
return None

# Maven1 field name -> xpath
MAVEN1_FIELDS = [
('component_extend_1', '/project/extend'),
Expand Down
11 changes: 11 additions & 0 deletions tests/packagedcode/test_maven.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@

from packagedcode import maven
from packagedcode import xmlutils
from packagedcode.maven import PyMaven


class BaseMavenCase(testcase.FileBasedTesting):
Expand Down Expand Up @@ -387,6 +388,16 @@ def test_parse_pom_activemq_camel(self):
'maven/expectations/activemq-camel-pom.xml.json', regen=False)


class TestPyMaven(BaseMavenCase):
test_data_dir = os.path.join(os.path.dirname(__file__), 'data')

def test_parse_pom_activemq_camel(self):
test_loc = self.get_test_loc('maven/maven2/activemq-camel-pom.xml')
pymaven = PyMaven(test_loc)
expected = set([(('${project.groupId}', 'activemq-core', 'latest.release'), True), (('commons-logging', 'commons-logging-api', 'latest.release'), True), (('org.apache.camel', 'camel-jms', 'latest.release'), True), (('org.apache.camel', 'camel-spring', 'latest.release'), True), (('junit', 'junit', 'latest.release'), True), (('org.springframework', 'spring-test', 'latest.release'), True), (('org.apache.camel', 'camel-core', 'latest.release'), True), (('${project.groupId}', 'activemq-pool', 'latest.release'), True), (('org.hamcrest', 'hamcrest-all', 'latest.release'), True), (('org.apache.geronimo.specs', 'geronimo-annotation_1.0_spec', 'latest.release'), False)])
assert pymaven.get_dependencies()== expected


class TestMavenPackage(BaseMavenCase):
test_data_dir = os.path.join(os.path.dirname(__file__), 'data')

Expand Down

0 comments on commit 0336890

Please sign in to comment.