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 2008/06/29 18:25:54 UTC

svn commit: r672636 - in /incubator/rat/main/trunk/scan/src/main/org/apache/rat/scan: connect.py scanner.py tests.py

Author: rdonkin
Date: Sun Jun 29 09:25:53 2008
New Revision: 672636

URL: http://svn.apache.org/viewvc?rev=672636&view=rev
Log:
Switch to xhtml for changes document

Modified:
    incubator/rat/main/trunk/scan/src/main/org/apache/rat/scan/connect.py
    incubator/rat/main/trunk/scan/src/main/org/apache/rat/scan/scanner.py
    incubator/rat/main/trunk/scan/src/main/org/apache/rat/scan/tests.py

Modified: incubator/rat/main/trunk/scan/src/main/org/apache/rat/scan/connect.py
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/scan/src/main/org/apache/rat/scan/connect.py?rev=672636&r1=672635&r2=672636&view=diff
==============================================================================
--- incubator/rat/main/trunk/scan/src/main/org/apache/rat/scan/connect.py (original)
+++ incubator/rat/main/trunk/scan/src/main/org/apache/rat/scan/connect.py Sun Jun 29 09:25:53 2008
@@ -29,8 +29,11 @@
 import sys
 import os.path
 
+def isoToday():
+    return datetime.datetime.utcnow().date().isoformat()
+
 def toXhtmlDocument(xml):
-    today = datetime.datetime.utcnow().date().isoformat()
+    today = isoToday()
     return """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
@@ -60,65 +63,68 @@
         f.close()
     return file
 
-build_dir = sys.argv[1]
-base_file_name = sys.argv[2]
-diff_file_name = sys.argv[3]
-ssh_host = sys.argv[4]
-src_dir = sys.argv[5]
-
-base_file = os.path.join(build_dir, base_file_name)
-diff_file = os.path.join(build_dir, diff_file_name)
-
-print 'Apache RAT Scan - Distribution Scanner'
-print '---------------------------------------'
-print 'ssh-agent MUST loaded with an appropriate'
-print 'key for people.apache.org.'
-print 'Alias host apache to people.apache.org'
-print 'in the ssh client configuration.'
-print ''
-print 'Reading scanning script from local disc...'
-file = open(os.path.join(src_dir,'scanner.py'), 'r')
-script = file.read()
-file.close()
-print 'Ok'
-print ''
-print 'Opening connection to people.apache.org...'
-process = subprocess.Popen('ssh -T -t ' + ssh_host, shell=True, 
-                           stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-print 'Ok'
-print ''
-print 'About to run scanning script:'
-print 'Time for tea...'
-stdout_value, stderr_value = process.communicate("python <<TillEndOfScript234875823947592345988223\n" 
-                                                 + script + "\nTillEndOfScript234875823947592345988223\n")
-if not stderr_value == '':
-    print 'ERROR: ' + stderr_value
-print 'Ok'
-
-xml = ''
-for document in stdout_value.split("<div class='audit'>"):
-    if document.count("<span class='base-dir'>/www/www.apache.org/dist/incubator</span>") > 0:
-        xml = xml + "<div class='audit'>" + document
-    elif document.count("<span class='base-dir'>/www/archive.apache.org/dist/incubator</span>") > 0:
-        xml = xml + "<div class='audit'>" + document
-    else:
-        print "OUTPUT (probably nothing to worry about):"
-        print document
-        
-if xml == "":
-    print "No results returned"
-else:
-    xml = toXhtmlDocument(xml)
-    path = save(base_file, xml)
-    subprocess.Popen('gpg --armor --detach-sig ' + path, shell=True).wait()
+def connectAndAudit():
+    build_dir = sys.argv[1]
+    base_file_name = sys.argv[2]
+    diff_file_name = sys.argv[3]
+    ssh_host = sys.argv[4]
+    src_dir = sys.argv[5]
+    
+    base_file = os.path.join(build_dir, base_file_name)
+    diff_file = os.path.join(build_dir, diff_file_name)
     
+    print 'Apache RAT Scan - Distribution Scanner'
+    print '---------------------------------------'
+    print 'ssh-agent MUST loaded with an appropriate'
+    print 'key for people.apache.org.'
+    print 'Alias host apache to people.apache.org'
+    print 'in the ssh client configuration.'
+    print ''
+    print 'Reading scanning script from local disc...'
+    file = open(os.path.join(src_dir,'scanner.py'), 'r')
+    script = file.read()
+    file.close()
+    print 'Ok'
+    print ''
+    print 'Opening connection to people.apache.org...'
+    process = subprocess.Popen('ssh -T -t ' + ssh_host, shell=True, 
+                               stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    print 'Ok'
+    print ''
+    print 'About to run scanning script:'
+    print 'Time for tea...'
+    stdout_value, stderr_value = process.communicate("python <<TillEndOfScript234875823947592345988223\n" 
+                                                     + script + "\nTillEndOfScript234875823947592345988223\n")
+    if not stderr_value == '':
+        print 'ERROR: ' + stderr_value
+    print 'Ok'
     
-    prefix = base_file_name[0:-14]
-    auditor = diff.Auditor(build_dir, prefix)
-    auditor.printSignatureChecks()
-    latestDiffs = auditor.latestDiffs()
-    if latestDiffs == None:
-        print "First run so skipping comparison "
+    xml = ''
+    for document in stdout_value.split("<div class='audit'>"):
+        if document.count("<span class='base-dir'>/www/www.apache.org/dist/incubator</span>") > 0:
+            xml = xml + "<div class='audit'>" + document
+        elif document.count("<span class='base-dir'>/www/archive.apache.org/dist/incubator</span>") > 0:
+            xml = xml + "<div class='audit'>" + document
+        else:
+            print "OUTPUT (probably nothing to worry about):"
+            print document
+            
+    if xml == "":
+        print "No results returned"
     else:
-        save(diff_file, toXhtmlDocument(latestDiffs))
-    
\ No newline at end of file
+        xml = toXhtmlDocument(xml)
+        path = save(base_file, xml)
+        subprocess.Popen('gpg --armor --detach-sig ' + path, shell=True).wait()
+        
+        
+        prefix = base_file_name[0:-14]
+        auditor = diff.Auditor(build_dir, prefix)
+        auditor.printSignatureChecks()
+        latestDiffs = auditor.latestDiffs()
+        if latestDiffs == None:
+            print "First run so skipping comparison "
+        else:
+            save(diff_file, toXhtmlDocument(latestDiffs))
+
+if __name__ == '__main__':
+    connectAndAudit()
\ No newline at end of file

Modified: incubator/rat/main/trunk/scan/src/main/org/apache/rat/scan/scanner.py
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/scan/src/main/org/apache/rat/scan/scanner.py?rev=672636&r1=672635&r2=672636&view=diff
==============================================================================
--- incubator/rat/main/trunk/scan/src/main/org/apache/rat/scan/scanner.py (original)
+++ incubator/rat/main/trunk/scan/src/main/org/apache/rat/scan/scanner.py Sun Jun 29 09:25:53 2008
@@ -106,7 +106,7 @@
                 elif not (ext == '.sha1' or ext == '.md5' or ext=='.sha' or ext == '.asc'):
                     document = Document(root, name)
                     result = result + document.toXml();
-            result = result + "</ul>"
+            result = result + "</ul></li>"
             if '.svn' in dirs:
                 dirs.remove('.svn')
         result = result + """</ul>

Modified: incubator/rat/main/trunk/scan/src/main/org/apache/rat/scan/tests.py
URL: http://svn.apache.org/viewvc/incubator/rat/main/trunk/scan/src/main/org/apache/rat/scan/tests.py?rev=672636&r1=672635&r2=672636&view=diff
==============================================================================
--- incubator/rat/main/trunk/scan/src/main/org/apache/rat/scan/tests.py (original)
+++ incubator/rat/main/trunk/scan/src/main/org/apache/rat/scan/tests.py Sun Jun 29 09:25:53 2008
@@ -16,9 +16,13 @@
 import unittest
 import diff
 import xml.parsers.expat
+import tempfile
+import shutil
+import connect
+import os.path
 
 TEST_BASE_DIR="../../../../../test/org/apache/rat/scan/"
-SCANNER_OUT="""<div class='audit'>\n<p>\nAt <span class=\'at\'>NOW</span> started to scan root <span class=\'base-dir\'>../../../../../test/org/apache/rat/scan/scanner/</span>\n</p><p>\nArtifacts by directory:\n</p>\n<ul><li><span class=\'dir\'>../../../../../test/org/apache/rat/scan/scanner/</span><ul><li><a name=\'../../../../../test/org/apache/rat/scan/scanner/HenryV.txt\' class=\'resource\'>HenryV.txt</a><dl><dt>md5</dt><dd class=\'md5\'>c81f4cd3b2203ae869b8c6acea6bf73c</dd><dt>sha</dt><dd class=\'sha\'>2ae73f5cfe7943a7d51b46e653948af7f067a6b01e61c827201c8e17b9231956f48b3e8e0da64e822ca9fdeb7a62f5af623406e2dbb9b39a8dabf569d2046402</dd><dt>ripe</dt><dd class=\'ripe\'>4b0a5f9317e0d3165ea4982f90e7266a553d8353</dd></dl></li><li><a name=\'../../../../../test/org/apache/rat/scan/scanner/RichardIII.txt\' class=\'resource\'>RichardIII.txt</a><dl><dt>md5</dt><dd class=\'md5\'>911bade3f0bcdb652f1331fb19d7bf07</dd><dt>sha</dt><dd class=\'sha\'>3fd5d26bbbea1dfddeeab642bffd0d7fbdc6c4e
 d0d06faae3283e1e7b220d943200048630663c6a33e7cbd26fceab585920cd77d3481ce4dfa209b5000ccd4de</dd><dt>ripe</dt><dd class=\'ripe\'>30ddc78d8bf08ef52ec8a7a8f7553c27931a6d0d</dd></dl></li></ul><li><span class=\'dir\'>../../../../../test/org/apache/rat/scan/scanner/sub</span><ul></ul><li><span class=\'dir\'>../../../../../test/org/apache/rat/scan/scanner/sub/deep</span><ul><li><a name=\'../../../../../test/org/apache/rat/scan/scanner/sub/deep/Hamlet.txt\' class=\'resource\'>Hamlet.txt</a><dl><dt>md5</dt><dd class=\'md5\'>1ccce242df4a39d25057aebed53be182</dd><dt>sha</dt><dd class=\'sha\'>2b92d82dcd9db3a3142f1bd1522d0a3818555edfb3fd579d80e3b7ebc67adb8fb73db0185ccdc72704294005fb3830529e8962715f2dbfa7da0bb0553abb573a</dd><dt>ripe</dt><dd class=\'ripe\'>307a14094c28da7a46f894ed10eb732fb4d0f199</dd></dl></li><li><a name=\'../../../../../test/org/apache/rat/scan/scanner/sub/deep/JuliusCaesar\' class=\'resource\'>JuliusCaesar</a><dl><dt>md5</dt><dd class=\'md5\'>0ef9754818b94baecca3596b43eb
 0753</dd><dt>sha</dt><dd class=\'sha\'>54184034009fc6b4e0dadfb0e14a1bad9c4c03791a982c4a7111dc7e4596164c1ca3dc49ec37c6081daf2bcd59d73a6c085beb1203b667066b77b58731f72460</dd><dt>ripe</dt><dd class=\'ripe\'>0aa5485c5b892be83910fae34c304c1ac41240ec</dd></dl></li></ul></ul>\n</div>"""
+SCANNER_OUT="""<div class='audit'>\n<p>\nAt <span class=\'at\'>NOW</span> started to scan root <span class=\'base-dir\'>../../../../../test/org/apache/rat/scan/scanner/</span>\n</p><p>\nArtifacts by directory:\n</p>\n<ul><li><span class=\'dir\'>../../../../../test/org/apache/rat/scan/scanner/</span><ul><li><a name=\'../../../../../test/org/apache/rat/scan/scanner/HenryV.txt\' class=\'resource\'>HenryV.txt</a><dl><dt>md5</dt><dd class=\'md5\'>c81f4cd3b2203ae869b8c6acea6bf73c</dd><dt>sha</dt><dd class=\'sha\'>2ae73f5cfe7943a7d51b46e653948af7f067a6b01e61c827201c8e17b9231956f48b3e8e0da64e822ca9fdeb7a62f5af623406e2dbb9b39a8dabf569d2046402</dd><dt>ripe</dt><dd class=\'ripe\'>4b0a5f9317e0d3165ea4982f90e7266a553d8353</dd></dl></li><li><a name=\'../../../../../test/org/apache/rat/scan/scanner/RichardIII.txt\' class=\'resource\'>RichardIII.txt</a><dl><dt>md5</dt><dd class=\'md5\'>911bade3f0bcdb652f1331fb19d7bf07</dd><dt>sha</dt><dd class=\'sha\'>3fd5d26bbbea1dfddeeab642bffd0d7fbdc6c4e
 d0d06faae3283e1e7b220d943200048630663c6a33e7cbd26fceab585920cd77d3481ce4dfa209b5000ccd4de</dd><dt>ripe</dt><dd class=\'ripe\'>30ddc78d8bf08ef52ec8a7a8f7553c27931a6d0d</dd></dl></li></ul></li><li><span class=\'dir\'>../../../../../test/org/apache/rat/scan/scanner/sub</span><ul></ul></li><li><span class=\'dir\'>../../../../../test/org/apache/rat/scan/scanner/sub/deep</span><ul><li><a name=\'../../../../../test/org/apache/rat/scan/scanner/sub/deep/Hamlet.txt\' class=\'resource\'>Hamlet.txt</a><dl><dt>md5</dt><dd class=\'md5\'>1ccce242df4a39d25057aebed53be182</dd><dt>sha</dt><dd class=\'sha\'>2b92d82dcd9db3a3142f1bd1522d0a3818555edfb3fd579d80e3b7ebc67adb8fb73db0185ccdc72704294005fb3830529e8962715f2dbfa7da0bb0553abb573a</dd><dt>ripe</dt><dd class=\'ripe\'>307a14094c28da7a46f894ed10eb732fb4d0f199</dd></dl></li><li><a name=\'../../../../../test/org/apache/rat/scan/scanner/sub/deep/JuliusCaesar\' class=\'resource\'>JuliusCaesar</a><dl><dt>md5</dt><dd class=\'md5\'>0ef9754818b94baecc
 a3596b43eb0753</dd><dt>sha</dt><dd class=\'sha\'>54184034009fc6b4e0dadfb0e14a1bad9c4c03791a982c4a7111dc7e4596164c1ca3dc49ec37c6081daf2bcd59d73a6c085beb1203b667066b77b58731f72460</dd><dt>ripe</dt><dd class=\'ripe\'>0aa5485c5b892be83910fae34c304c1ac41240ec</dd></dl></li></ul></li></ul>\n</div>"""
 
 class ReadXmlTestCase(unittest.TestCase):
     
@@ -200,6 +204,21 @@
     def testScan(self):
         self.assertEquals(SCANNER_OUT, self.scanner.scan())
         
+class RoundTripTest(unittest.TestCase):
+    def setUp(self):
+        self.working_dir = tempfile.mkdtemp()
+        self.auditor = diff.Auditor(self.working_dir, "audit")
+        self.scanner = scanner.Scanner(TEST_BASE_DIR + "scanner/")
+        
+    def tearDown(self):
+        if not self.working_dir == None:
+            shutil.rmtree(self.working_dir, True)
+        
+    def testRoundTrip(self):
+        xhtml = connect.toXhtmlDocument(self.scanner.scan())
+        name = "audit-" + connect.isoToday() + ".html"
+        connect.save(os.path.join(self.working_dir, name), xhtml)
+        self.assertNotEqual(None, self.auditor.load(name))
         
 class ScanDocumentTest(unittest.TestCase):
     def setUp(self):