Skip to content

Commit 0c5fe02

Browse files
authored
Merge pull request #36 from nexB/30-add-filetype-info-to-output
Add info to JSON and CSV output #30
2 parents 4552d11 + 0fb6e7a commit 0c5fe02

9 files changed

Lines changed: 164 additions & 59 deletions

File tree

src/deltacode/__init__.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -197,25 +197,40 @@ def to_dict(self):
197197
if self.category == 'added':
198198
return OrderedDict([
199199
('category', 'added'),
200-
('path', self.new_file.path)
200+
('path', self.new_file.path),
201+
('name', self.new_file.name),
202+
('type', self.new_file.type),
203+
('size', self.new_file.size)
201204
])
202205
elif self.category == 'removed':
203206
return OrderedDict([
204207
('category', 'removed'),
205-
('path', self.old_file.path)
208+
('path', self.old_file.path),
209+
('name', self.old_file.name),
210+
('type', self.old_file.type),
211+
('size', self.old_file.size)
206212
])
207213
elif self.category == 'modified':
208214
return OrderedDict([
209215
('category', 'modified'),
210-
('path', self.new_file.path)
216+
('path', self.new_file.path),
217+
('name', self.new_file.name),
218+
('type', self.new_file.type),
219+
('size', self.new_file.size)
211220
])
212221
elif self.category == 'license change':
213222
return OrderedDict([
214223
('category', 'license change'),
215-
('path', self.new_file.path)
224+
('path', self.new_file.path),
225+
('name', self.new_file.name),
226+
('type', self.new_file.type),
227+
('size', self.new_file.size)
216228
])
217229
else:
218230
return OrderedDict([
219231
('category', 'unmodified'),
220-
('path', self.new_file.path)
232+
('path', self.new_file.path),
233+
('name', self.new_file.name),
234+
('type', self.new_file.type),
235+
('size', self.new_file.size)
221236
])

src/deltacode/cli.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,15 @@ def generate_csv(delta, result_file):
4343
"""
4444
with open(result_file, 'wb') as out:
4545
csv_out = csv.writer(out)
46-
csv_out.writerow(['Type of delta', 'Path'])
47-
for row in [(f.category, f.old_file.path if f.category == 'removed' else f.new_file.path) for d in delta.deltas for f in delta.deltas.get(d)]:
48-
csv_out.writerow(row)
46+
csv_out.writerow(['Type of delta', 'Path', 'Name', 'Type', 'Size'])
47+
for row in [(
48+
f.category,
49+
f.old_file.path if f.category == 'removed' else f.new_file.path,
50+
f.old_file.name if f.category == 'removed' else f.new_file.name,
51+
f.old_file.type if f.category == 'removed' else f.new_file.type,
52+
f.old_file.size if f.category == 'removed' else f.new_file.size)
53+
for d in delta.deltas for f in delta.deltas.get(d)]:
54+
csv_out.writerow(row)
4955

5056

5157
def generate_json(delta, result_file):

tests/data/cli/added1.csv

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
Type of delta,Path
2-
added,a/a5.py
3-
unmodified,a/a3.py
4-
unmodified,b/b4.py
5-
unmodified,a/a2.py
6-
unmodified,b/b2.py
7-
unmodified,b/b1.py
8-
unmodified,b/b3.py
9-
unmodified,a/a4.py
10-
unmodified,a/a1.py
1+
Type of delta,Path,Name,Type,Size
2+
added,a/a5.py,a5.py,file,200
3+
unmodified,a/a3.py,a3.py,file,200
4+
unmodified,b/b4.py,b4.py,file,200
5+
unmodified,a/a2.py,a2.py,file,200
6+
unmodified,b/b2.py,b2.py,file,200
7+
unmodified,b/b1.py,b1.py,file,200
8+
unmodified,b/b3.py,b3.py,file,200
9+
unmodified,a/a4.py,a4.py,file,200
10+
unmodified,a/a1.py,a1.py,file,200

tests/data/cli/modified1.csv

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
Type of delta,Path
2-
modified,a/a4.py
3-
unmodified,a/a3.py
4-
unmodified,b/b4.py
5-
unmodified,b/b1.py
6-
unmodified,a/a2.py
7-
unmodified,b/b2.py
8-
unmodified,b/b3.py
9-
unmodified,a/a1.py
1+
Type of delta,Path,Name,Type,Size
2+
modified,a/a4.py,a4.py,file,246
3+
unmodified,a/a3.py,a3.py,file,200
4+
unmodified,b/b4.py,b4.py,file,200
5+
unmodified,b/b1.py,b1.py,file,200
6+
unmodified,a/a2.py,a2.py,file,200
7+
unmodified,b/b2.py,b2.py,file,200
8+
unmodified,b/b3.py,b3.py,file,200
9+
unmodified,a/a1.py,a1.py,file,200
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Type of delta,Path
2-
modified,some/path/c/c1.py
3-
license change,some/path/a/a1.py
4-
license change,some/path/b/b1.py
1+
Type of delta,Path,Name,Type,Size
2+
modified,some/path/c/c1.py,c1.py,file,300
3+
license change,some/path/a/a1.py,a1.py,file,300
4+
license change,some/path/b/b1.py,b1.py,file,300
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
Type of delta,Path
2-
modified,some/path/a/a1.py
3-
modified,some/path/b/b1.py
1+
Type of delta,Path,Name,Type,Size
2+
modified,some/path/a/a1.py,a1.py,file,350
3+
modified,some/path/b/b1.py,b1.py,file,290

tests/data/cli/removed1.csv

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
Type of delta,Path
2-
removed,a/a4.py
3-
unmodified,a/a3.py
4-
unmodified,b/b4.py
5-
unmodified,b/b1.py
6-
unmodified,a/a2.py
7-
unmodified,b/b2.py
8-
unmodified,b/b3.py
9-
unmodified,a/a1.py
1+
Type of delta,Path,Name,Type,Size
2+
removed,a/a4.py,a4.py,file,200
3+
unmodified,a/a3.py,a3.py,file,200
4+
unmodified,b/b4.py,b4.py,file,200
5+
unmodified,b/b1.py,b1.py,file,200
6+
unmodified,a/a2.py,a2.py,file,200
7+
unmodified,b/b2.py,b2.py,file,200
8+
unmodified,b/b3.py,b3.py,file,200
9+
unmodified,a/a1.py,a1.py,file,200

tests/data/cli/renamed1.csv

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
Type of delta,Path
2-
added,a/a4_renamed_not_modified.py
3-
removed,a/a4.py
4-
unmodified,a/a3.py
5-
unmodified,b/b4.py
6-
unmodified,b/b1.py
7-
unmodified,b/b2.py
8-
unmodified,b/b3.py
9-
unmodified,a/a1.py
10-
unmodified,a/a2.py
1+
Type of delta,Path,Name,Type,Size
2+
added,a/a4_renamed_not_modified.py,a4_renamed_not_modified.py,file,200
3+
removed,a/a4.py,a4.py,file,200
4+
unmodified,a/a3.py,a3.py,file,200
5+
unmodified,b/b4.py,b4.py,file,200
6+
unmodified,b/b1.py,b1.py,file,200
7+
unmodified,b/b2.py,b2.py,file,200
8+
unmodified,b/b3.py,b3.py,file,200
9+
unmodified,a/a1.py,a1.py,file,200
10+
unmodified,a/a2.py,a2.py,file,200

tests/test_deltacode.py

Lines changed: 90 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,10 @@ def test_DeltaCode_to_dict_simple_unmodified(self):
331331
('unmodified', [
332332
OrderedDict([
333333
('category', 'unmodified'),
334-
('path', u'test/unmodified.txt')
334+
('path', u'test/unmodified.txt'),
335+
('name', u'unmodified.txt'),
336+
('type', u'file'),
337+
('size', 11)
335338
])
336339
])
337340
])
@@ -593,9 +596,13 @@ def test_Delta_to_dict_removed(self):
593596
'sha1': 'a',
594597
'original_path': ''
595598
})
599+
596600
expected = {
597601
'category': 'removed',
598-
'path': 'path/removed.txt'
602+
'path': 'path/removed.txt',
603+
'name': 'removed.txt',
604+
'type': 'file',
605+
'size': 20
599606
}
600607

601608
delta = deltacode.Delta(None, old, 'removed')
@@ -611,9 +618,13 @@ def test_Delta_to_dict_added(self):
611618
'sha1': 'a',
612619
'original_path': ''
613620
})
621+
614622
expected = {
615623
'category': 'added',
616-
'path': 'path/added.txt'
624+
'path': 'path/added.txt',
625+
'name': 'added.txt',
626+
'type': 'file',
627+
'size': 20
617628
}
618629

619630
delta = deltacode.Delta(new, None, 'added')
@@ -640,7 +651,10 @@ def test_Delta_to_dict_modified(self):
640651

641652
expected = {
642653
'category': 'modified',
643-
'path': 'path/modified.txt'
654+
'path': 'path/modified.txt',
655+
'name': 'modified.txt',
656+
'type': 'file',
657+
'size': 20
644658
}
645659

646660
delta = deltacode.Delta(new, old, 'modified')
@@ -667,7 +681,10 @@ def test_Delta_to_dict_unmodified(self):
667681

668682
expected = {
669683
'category': 'unmodified',
670-
'path': 'path/unmodified.txt'
684+
'path': 'path/unmodified.txt',
685+
'name': 'unmodified.txt',
686+
'type': 'file',
687+
'size': 20
671688
}
672689

673690
delta = deltacode.Delta(new, old, 'unmodified')
@@ -677,7 +694,74 @@ def test_Delta_to_dict_unmodified(self):
677694
def test_Delta_to_dict_empty(self):
678695
delta = deltacode.Delta()
679696

680-
assert delta.to_dict() == OrderedDict([('category', 'unmodified'), ('path', '')])
697+
assert delta.to_dict() == OrderedDict([('category', 'unmodified'), ('path', ''), ('name', ''), ('type', ''), ('size', '')])
698+
699+
def test_Delta_to_dict_license_modified(self):
700+
new_scan = self.get_test_loc('deltacode/scan_modified_new_license_added.json')
701+
old_scan = self.get_test_loc('deltacode/scan_modified_old_license_added.json')
702+
703+
result = DeltaCode(new_scan, old_scan)
704+
705+
expected = OrderedDict([
706+
('added', []),
707+
('removed', []),
708+
('modified', [
709+
OrderedDict([
710+
('category', 'modified'),
711+
('path', u'some/path/c/c1.py'),
712+
('name', u'c1.py'),
713+
('type', u'file'),
714+
('size', 300)
715+
]),
716+
OrderedDict([
717+
('category', 'license change'),
718+
('path', u'some/path/a/a1.py'),
719+
('name', u'a1.py'),
720+
('type', u'file'),
721+
('size', 300)
722+
]),
723+
OrderedDict([
724+
('category', 'license change'),
725+
('path', u'some/path/b/b1.py'),
726+
('name', u'b1.py'),
727+
('type', u'file'),
728+
('size', 300)
729+
])
730+
]),
731+
('unmodified', [])
732+
])
733+
734+
assert result.to_dict() == expected
735+
736+
def test_Delta_to_dict_no_license_key_value(self):
737+
new_scan = self.get_test_loc('deltacode/scan_modified_new_no_license_key.json')
738+
old_scan = self.get_test_loc('deltacode/scan_modified_old_no_license_key.json')
739+
740+
result = DeltaCode(new_scan, old_scan)
741+
742+
expected = OrderedDict([
743+
('added', []),
744+
('removed', []),
745+
('modified', [
746+
OrderedDict([
747+
('category', 'modified'),
748+
('path', u'some/path/a/a1.py'),
749+
('name', u'a1.py'),
750+
('type', u'file'),
751+
('size', 250)
752+
]),
753+
OrderedDict([
754+
('category', 'modified'),
755+
('path', u'some/path/b/b1.py'),
756+
('name', u'b1.py'),
757+
('type', u'file'),
758+
('size', 310)
759+
])
760+
]),
761+
('unmodified', [])
762+
])
763+
764+
assert result.to_dict() == expected
681765

682766
def test_Delta_create_object_removed(self):
683767
new = None

0 commit comments

Comments
 (0)