Author: Matti Picus <[email protected]>
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
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit