Author: Matti Picus <matti.pi...@gmail.com>
Branch: sort-nightly-directories
Changeset: r750:06b4a174180c
Date: 2013-03-20 21:08 -0700
http://bitbucket.org/pypy/buildbot/changeset/06b4a174180c/

Log:    simplify test, implement sorting

diff --git a/bot2/pypybuildbot/pypylist.py b/bot2/pypybuildbot/pypylist.py
--- a/bot2/pypybuildbot/pypylist.py
+++ b/bot2/pypybuildbot/pypylist.py
@@ -1,11 +1,10 @@
 import os.path
 import datetime
 import itertools
-import re
 import py
 import cgi
 import urllib
-from twisted.web import resource
+import sys
 from twisted.web.static import File, DirectoryLister
 
 class PyPyTarball(object):
@@ -104,15 +103,19 @@
         return self.vcs == 'latest'
 
 class PyPyDirectory(object):
-    def __init__(self, filename):
-        self.filename = filename
+    def __init__(self, filePath):
+        self.filename = filePath.basename()
+        self.filePath = filePath
         try:
             self.parse_filename()
         except ValueError:
             self.last_mod_time = 0
 
     def parse_filename(self):
-        raise ValueError
+        if self.filename == 'trunk':
+            self.last_mod_time = sys.maxsize
+            return
+        self.last_mod_time = self.filePath.getmtime()
 
     def key(self):
         return (self.last_mod_time)
@@ -124,23 +127,23 @@
         items.sort(key=PyPyTarball.key, reverse=True)
         return [item.filename for item in items]
 
-    def sortDirectoryNames(self, names):
-        items = map(PyPyTarball, names)
-        items.sort(key=PyPyTarball.key, reverse=True)
+    def sortDirectoryNames(self, filePaths):
+        items = map(PyPyDirectory, filePaths)
+        items.sort(key=PyPyDirectory.key, reverse=True)
         return [item.filename for item in items]
 
     def directoryListing(self):
-        def is_pypy_dir(names_unsorted):
-            for name in names_unsorted:
+        def is_pypy_dir(names):
+            for name in names:
                 if name.startswith('pypy-c'):
                     return True
             return False
-        names_unsorted = File.listNames(self)
-        if is_pypy_dir(names_unsorted):
-            names = self.sortBuildNames(names_unsorted)
+        names = File.listNames(self)
+        if is_pypy_dir(names):
+            names = self.sortBuildNames(names)
             Listener = PyPyDirectoryLister
         else:
-            names = self.sortDirectoryNames(names_unsorted)
+            names = self.sortDirectoryNames(File.listEntities(self))
             Listener = DirectoryLister
         return Listener(self.path,
                         names,
diff --git a/bot2/pypybuildbot/test/test_pypylist.py 
b/bot2/pypybuildbot/test/test_pypylist.py
--- a/bot2/pypybuildbot/test/test_pypylist.py
+++ b/bot2/pypybuildbot/test/test_pypylist.py
@@ -69,22 +69,18 @@
     assert os.path.basename(__file__) in files
 
 def test_dir_render(tmpdir):
-    import os, time
-    from twisted.web.test.test_web import DummyRequest
     # Create a bunch of directories, including one named trunk,
     # Make sure the time order is reversed collation order
-    tmpdir.mkdir('trunk')
+    trunk = tmpdir.mkdir('trunk')
+    oldtime = trunk.mtime()
     for ascii in range(ord('a'), ord('m')):
-        tmpdir.mkdir(chr(ascii) * 4)
-        time.sleep(0.1)
+        newdir = tmpdir.mkdir(chr(ascii) * 4)
+        newdir.setmtime(oldtime + ascii * 10)
     pypylist = PyPyList(tmpdir.strpath)
     listener = pypylist.directoryListing()
-    request = DummyRequest([os.path.dirname(tmpdir.strpath)])
-    page = listener.render(request)
-    tmpdir.join('index.html').write(page)
-    for ascii in range(ord('a'), ord('m') - 1):
-        assert page.find(chr(ascii) * 4) > page.find((chr(ascii + 1)) * 4)
-    assert page.find('trunk') < page.find('mmm')
+    assert listener.dirs == ['trunk', 'mmmm', 'llll',
+        'kkkk','jjjj','iiii','hhhh','gggg','ffff','eeee',
+        'dddd','cccc','bbbb','aaaa']
 
 def load_BuildmasterConfig():
     import os
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to