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):
         """