You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@creadur.apache.org by rd...@apache.org on 2011/07/10 15:38:59 UTC
svn commit: r1144860 - in /incubator/rat/eye/trunk:
org/apache/rat/eye/engine.py test/test_engine.py
Author: rdonkin
Date: Sun Jul 10 13:38:58 2011
New Revision: 1144860
URL: http://svn.apache.org/viewvc?rev=1144860&view=rev
Log:
Start to model artifacts
Modified:
incubator/rat/eye/trunk/org/apache/rat/eye/engine.py
incubator/rat/eye/trunk/test/test_engine.py
Modified: incubator/rat/eye/trunk/org/apache/rat/eye/engine.py
URL: http://svn.apache.org/viewvc/incubator/rat/eye/trunk/org/apache/rat/eye/engine.py?rev=1144860&r1=1144859&r2=1144860&view=diff
==============================================================================
--- incubator/rat/eye/trunk/org/apache/rat/eye/engine.py (original)
+++ incubator/rat/eye/trunk/org/apache/rat/eye/engine.py Sun Jul 10 13:38:58 2011
@@ -82,12 +82,43 @@ def extension(filename):
else:
result = extension + result
+ if (result is None):
+ result = ""
# Prune any trailing or leading dots
return result.strip('.')
+#
+# Builders
+#
+
+def buildJar(name, path='.', filenames=[]):
+ """
+ return: A Jar archive when appropriate, None otherwise
+ rtype: Jar, or None
+ """
+ if (extension(name).lower() == "jar"):
+ return Jar(path, name)
+ else:
+ return None
-
+def buildArchive(name, path='.', filenames=[]):
+ """
+ return: A Jar archive when appropriate, None otherwise
+ rtype: Jar, or None
+ """
+ return buildJar(name, path, filenames)
+
+def listArchives(path, filenames):
+ """
+ Builds a list of primary relese artifacts from the given files.
+
+ return: list of archives
+ rtype: appropriate Archive type
+ """
+ # Filter out None from list of archives built
+ return filter(None, [buildArchive(name, path, filenames) for name in filenames])
+
#
# Classes
#
@@ -136,6 +167,8 @@ class Directory():
isHidden(self.path)
+
+
class Artifact():
"""
A primary release artifact.
@@ -148,5 +181,26 @@ class Artifact():
self.name = name
self.root = root(name)
- def isJar():
- return False
+ def __repr__(self):
+ return "artifact:name=" + self.name
+
+ def __eq__(self, other):
+
+ try:
+ return (self.name == getattr(other, "name") and
+ self.path == getattr(other, "path"))
+ except AttributeError:
+ return False
+
+class Jar(Artifact):
+ """
+ An artifact compressed using the zip algorithm
+ and laid out according to the Jar format.
+ """
+
+ def __init__(self, path, name):
+ Artifact.__init__(self, path, name)
+
+
+ def __repr__(self):
+ return "jar:name=" + self.name
Modified: incubator/rat/eye/trunk/test/test_engine.py
URL: http://svn.apache.org/viewvc/incubator/rat/eye/trunk/test/test_engine.py?rev=1144860&r1=1144859&r2=1144860&view=diff
==============================================================================
--- incubator/rat/eye/trunk/test/test_engine.py (original)
+++ incubator/rat/eye/trunk/test/test_engine.py Sun Jul 10 13:38:58 2011
@@ -53,6 +53,45 @@ class TestScanner(unittest.TestCase):
self.assertEqual(engine.extension("toast.tar.gz"), "tar.gz")
self.assertEqual(engine.extension("sing.zip"), "zip")
+ def testBuildJar(self):
+ """
+ Jar building tests.
+ """
+
+ self.assertIsInstance(engine.buildJar("whatever.jar"), engine.Jar)
+
+ self.assertIsNone(engine.buildJar("whatever"))
+ self.assertIsNone(engine.buildJar("bing.html"))
+ self.assertIsNone(engine.buildJar("ping.md5"))
+ self.assertIsNone(engine.buildJar("toast.tar.gz"))
+ self.assertIsNone(engine.buildJar("sing.zip"))
+
+
+ def testBuildArchive(self):
+ """
+ Archive building tests.
+ """
+
+ self.assertIsInstance(engine.buildArchive("whatever.jar"), engine.Jar)
+
+ self.assertIsNone(engine.buildArchive("whatever"))
+ self.assertIsNone(engine.buildArchive("bing.html"))
+ self.assertIsNone(engine.buildArchive("ping.md5"))
+ self.assertIsNone(engine.buildArchive("toast.tar.gz"))
+ self.assertIsNone(engine.buildArchive("sing.zip"))
+
+ def testListArchivesWhenOneJarPresent(self):
+ aDirectoryPath = "."
+ aJarName = "something.jar"
+ jarArchiveWithPathAndName = engine.Jar(aDirectoryPath, aJarName)
+ # Chaff
+ aNameWithoutPrefix = "whatever"
+ notAJarName = "somethingelse.html"
+ # Combined
+ names = [aNameWithoutPrefix, aJarName , notAJarName]
+
+ self.assertEqual(engine.listArchives(aDirectoryPath, names), [jarArchiveWithPathAndName])
+
def testConstructArtifact(self):
"""