Skip to content

Commit

Permalink
Merge pull request #8 from vixen-project/fix-csv-export
Browse files Browse the repository at this point in the history
Fix an issue with CSV export.
  • Loading branch information
prabhuramachandran committed Jan 14, 2018
2 parents 90b3040 + c562211 commit 5b21257
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 15 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ install:

before_script:
- firefox --version
- wget https://github.com/mozilla/geckodriver/releases/download/v0.16.1/geckodriver-v0.16.1-linux64.tar.gz
- wget https://github.com/mozilla/geckodriver/releases/download/v0.19.1/geckodriver-v0.19.1-linux64.tar.gz
- mkdir geckodriver
- tar -xzf geckodriver*.tar.gz -C geckodriver
- export PATH=$PATH:$PWD/geckodriver
Expand Down
7 changes: 5 additions & 2 deletions vixen/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@

if sys.version_info[0] > 2:
unicode = str
string_types = (str,)
else:
string_types = (basestring,)
INT = fields.NUMERIC(numtype=int)
FLOAT = fields.NUMERIC(numtype=float)

Expand Down Expand Up @@ -107,7 +110,7 @@ def _cleanup_query(q, tag_types):


def _check_value(value, expr):
if isinstance(expr, (str, unicode)):
if isinstance(expr, string_types):
return expr in value.lower()
else:
return expr == value
Expand Down Expand Up @@ -343,7 +346,7 @@ def export_csv(self, fname, cols=None):
data_cols = set([x for x in cols if x in self._data])

def _format(elem):
if isinstance(elem, str):
if isinstance(elem, string_types):
return '"%s"' % elem
else:
return str(elem) if elem is not None else ""
Expand Down
32 changes: 20 additions & 12 deletions vixen/tests/test_project.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,10 +121,14 @@ def test_load_should_restore_saved_state(self):

def test_export_to_csv(self):
# Given
p = Project(name='test', path=self.root)
tags = [TagInfo(name='completed', type='bool'),
TagInfo(name='comment', type='string')]

p = Project(name='test', path=self.root, tags=tags)
p.scan()
m = p.get('root.txt')
m.tags['completed'] = True
m.tags['comment'] = u'hello, world; foo'
out_fname = tempfile.mktemp(dir=self.root, suffix='.csv')

# When
Expand All @@ -134,25 +138,29 @@ def test_export_to_csv(self):
reader = csv.reader(open(out_fname))
cols = next(reader)
expected = [
'completed', 'ctime', 'file_name', 'mtime', 'path', 'relpath',
'size', 'type'
'comment', 'completed', 'ctime', 'file_name', 'mtime', 'path',
'relpath', 'size', 'type'
]
self.assertEqual(cols, expected)
expected = {'hello.py': 'False', 'root.txt': 'True'}
data = [next(reader), next(reader), next(reader), next(reader)]
data = sorted(data, key=lambda x: x[5])
data = sorted(data, key=lambda x: x[6])
row = data[0]
self.assertEqual(basename(row[4]), 'hello.py')
self.assertEqual(row[0], 'False')
self.assertEqual(basename(row[5]), 'hello.py')
self.assertEqual(row[1], 'False')
self.assertEqual(row[0], '')
row = data[1]
self.assertEqual(basename(row[4]), 'root.txt')
self.assertEqual(row[0], 'True')
self.assertEqual(basename(row[5]), 'root.txt')
self.assertEqual(row[1], 'True')
self.assertEqual(row[0], u'hello, world; foo')
row = data[2]
self.assertTrue(basename(row[4]).startswith('sub'))
self.assertEqual(row[0], 'False')
self.assertTrue(basename(row[5]).startswith('sub'))
self.assertEqual(row[1], 'False')
self.assertEqual(row[0], '')
row = data[3]
self.assertTrue(basename(row[4]).startswith('sub'))
self.assertEqual(row[0], 'False')
self.assertTrue(basename(row[5]).startswith('sub'))
self.assertEqual(row[1], 'False')
self.assertEqual(row[0], '')

def test_refresh_updates_new_media(self):
# Given
Expand Down

0 comments on commit 5b21257

Please sign in to comment.