Skip to content

Commit

Permalink
Merge pull request #72 from andrewbaxter/sanitize_eggpaths
Browse files Browse the repository at this point in the history
Sanitize version names when creating egg paths.
  • Loading branch information
pablohoffman committed Dec 24, 2014
2 parents 26cfb94 + 8023720 commit 9a95ece
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 10 deletions.
4 changes: 3 additions & 1 deletion scrapyd/eggstorage.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import re
from glob import glob
from os import path, makedirs, remove
from shutil import copyfileobj, rmtree
Expand Down Expand Up @@ -45,5 +46,6 @@ def delete(self, project, version=None):
self.delete(project)

def _eggpath(self, project, version):
x = path.join(self.basedir, project, "%s.egg" % version)
sanitized_version = re.sub(r'[^a-zA-Z0-9_-]', '_', version)
x = path.join(self.basedir, project, "%s.egg" % sanitized_version)
return x
30 changes: 21 additions & 9 deletions scrapyd/tests/test_eggstorage.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,24 +20,36 @@ def test_interface(self):

def test_put_get_list_delete(self):
self.eggst.put(StringIO("egg01"), 'mybot', '01')
self.eggst.put(StringIO("egg03"), 'mybot', '03')
self.eggst.put(StringIO("egg02"), 'mybot', '02')

self.assertEqual(self.eggst.list('mybot'), ['01', '02', '03'])
self.eggst.put(StringIO("egg03"), 'mybot', '03/ver')
self.eggst.put(StringIO("egg02"), 'mybot', '02_my branch')

self.assertEqual(self.eggst.list('mybot'), [
'01',
'02_my_branch',
'03_ver'
])
self.assertEqual(self.eggst.list('mybot2'), [])

v, f = self.eggst.get('mybot')
self.assertEqual(v, "03")
self.assertEqual(v, "03_ver")
self.assertEqual(f.read(), "egg03")
f.close()

v, f = self.eggst.get('mybot', '02')
self.assertEqual(v, "02")
v, f = self.eggst.get('mybot', '02_my branch')
self.assertEqual(v, "02_my branch")
self.assertEqual(f.read(), "egg02")
f.close()

v, f = self.eggst.get('mybot', '02_my_branch')
self.assertEqual(v, "02_my_branch")
self.assertEqual(f.read(), "egg02")
f.close()

self.eggst.delete('mybot', '02')
self.assertEqual(self.eggst.list('mybot'), ['01', '03'])
self.eggst.delete('mybot', '02_my branch')
self.assertEqual(self.eggst.list('mybot'), ['01', '03_ver'])

self.eggst.delete('mybot', '03_ver')
self.assertEqual(self.eggst.list('mybot'), ['01'])

self.eggst.delete('mybot')
self.assertEqual(self.eggst.list('mybot'), [])

0 comments on commit 9a95ece

Please sign in to comment.