summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2010-01-01 02:39:05 +0200
committerLars Wirzenius <liw@liw.fi>2010-01-01 02:39:05 +0200
commit0a418e80e25bf108130764c47cd6599ed267d4ee (patch)
tree581bb6346131f2ad8c026fa32aef67071c349a85
parent8b79181c018bc83ad0c488cb4bffcbe0a90910a6 (diff)
downloadsummain-0a418e80e25bf108130764c47cd6599ed267d4ee.tar.gz
Implement mtime handling for FilesystemObject.
-rw-r--r--summainlib.py10
-rw-r--r--summainlib_tests.py12
2 files changed, 20 insertions, 2 deletions
diff --git a/summainlib.py b/summainlib.py
index 81cc973..4b509fa 100644
--- a/summainlib.py
+++ b/summainlib.py
@@ -14,6 +14,8 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import os
+import time
import urllib
@@ -26,9 +28,15 @@ class FilesystemObject(object):
'''
- def __init__(self, filename):
+ def __init__(self, filename, stat_result=None):
+ stat_result = stat_result or os.lstat(filename)
self.values = dict()
self['Name'] = filename
+ self['Mtime'] = self.format_time(stat_result.st_mtime)
+
+ def format_time(self, timestamp):
+ return time.strftime('%Y-%m-%d %H:%M:%S +0000',
+ time.gmtime(timestamp))
def hook_name(self, value):
return urllib.quote(value)
diff --git a/summainlib_tests.py b/summainlib_tests.py
index 12af97d..89e1caf 100644
--- a/summainlib_tests.py
+++ b/summainlib_tests.py
@@ -19,10 +19,20 @@ import unittest
import summainlib
+class FakeStatResult(object):
+
+ def __init__(self, *args, **kwargs):
+ for name, value in kwargs.iteritems():
+ setattr(self, name, value)
+
+
class FilesystemObjectTests(unittest.TestCase):
+ def setUp(self):
+ self.st = FakeStatResult(st_mtime=1262307723)
+
def new(self, name):
- return summainlib.FilesystemObject(name)
+ return summainlib.FilesystemObject(name, stat_result=self.st)
def test_formats_simple_name_identically(self):
self.assertEqual(self.new('foo')['Name'], 'foo')