Skip to content

Commit a1744eb

Browse files
authored
Merge pull request #22 from nexB/resource-bug
Fix VirtualCodebase bug
2 parents 02fb544 + 3d6ff26 commit a1744eb

6 files changed

Lines changed: 65 additions & 23 deletions

File tree

CHANGELOG.rst

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,17 @@ vNext
55
-----
66

77

8+
Version 21.6.10
9+
---------------
10+
11+
- Do not fail if a Codebase file.size is None and not zero
12+
- Bump pinned dependencies including pkg:pypi/urllib3 for CVE-2021-33503
13+
14+
815
Version 21.5.25
916
---------------
1017

11-
- Fix click-realted bug https://github.com/nexB/scancode-toolkit/issues/2529
18+
- Fix click-related bug https://github.com/nexB/scancode-toolkit/issues/2529
1219
- Add tests to run on the latest of every dependency
1320

1421

requirements.txt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
attrs==19.3.0
2-
beautifulsoup4==4.7.1
3-
certifi==2020.12.5
4-
chardet==3.0.4
5-
click==6.7
1+
attrs==21.2.0
2+
beautifulsoup4==4.9.3
3+
certifi==2021.5.30
4+
chardet==4.0.0
5+
click==8.0.1
66
idna==2.10
77
intbitset==2.4.1
88
PyYAML==5.4.1
99
requests==2.25.1
1010
saneyaml==0.5.2
11-
six==1.12.0
12-
soupsieve==1.9.2
13-
text-unidecode==1.2
14-
typing==3.6.4
15-
urllib3==1.26.4
11+
six==1.16.0
12+
soupsieve==2.2.1
13+
text-unidecode==1.3
14+
typing==3.6.6
15+
urllib3==1.26.5

setup.cfg

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,21 @@ keywords =
2727
scancode-toolkit
2828

2929
[options]
30-
package_dir=
31-
=src
32-
packages=find:
30+
package_dir = =src
31+
packages = find:
3332
include_package_data = true
3433
zip_safe = false
34+
35+
python_requires = >=3.6.*, <4
36+
3537
install_requires =
3638
attrs >= 18.1, !=20.1.0
37-
click >= 6.0.0
38-
text_unidecode >= 1.0
3939
Beautifulsoup4 >= 4.0.0, < 5.0.0
40-
requests >= 2.7.0, < 3.0.0
40+
click >= 6.7, !=7.0
4141
intbitset >= 2.3.0, < 3.0
42-
saneyaml
42+
requests >= 2.7.0, < 3.0.0
43+
saneyaml >= 0.5.2
44+
text_unidecode >= 1.0
4345
typing >=3.6, < 3.7; python_version < "3.7"
4446

4547
setup_requires = setuptools_scm[toml] >= 4

src/commoncode/resource.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -884,7 +884,7 @@ def compute_counts(self, skip_root=False, skip_filtered=False):
884884
files_count += 1
885885
else:
886886
dirs_count += 1
887-
size_count += root.size
887+
size_count += root.size or 0
888888

889889
return files_count, dirs_count, size_count
890890

@@ -1133,9 +1133,9 @@ def _compute_children_counts(self, codebase, skip_filtered=False):
11331133
"""
11341134
files_count = dirs_count = size_count = 0
11351135
for child in self.children(codebase):
1136-
files_count += child.files_count
1137-
dirs_count += child.dirs_count
1138-
size_count += child.size_count
1136+
files_count += child.files_count or 0
1137+
dirs_count += child.dirs_count or 0
1138+
size_count += child.size_count or 0
11391139

11401140
if skip_filtered and child.is_filtered:
11411141
continue
@@ -1144,7 +1144,7 @@ def _compute_children_counts(self, codebase, skip_filtered=False):
11441144
files_count += 1
11451145
else:
11461146
dirs_count += 1
1147-
size_count += child.size
1147+
size_count += child.size or 0
11481148

11491149
self.files_count = files_count
11501150
self.dirs_count = dirs_count
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"headers": [],
3+
"files": [
4+
{
5+
"for_packages": [
6+
"pkg:deb/debian/bash@5.0-4?arch=amd64"
7+
],
8+
"compliance_alert": "",
9+
"path": "/node_16_slim.tar-extract/02c055ef67f5904019f43a41ea5f099996d8e7633749b6e606c400526b2c4b33/bin/bash",
10+
"size": 1168776,
11+
"type": "file",
12+
"name": "bash",
13+
"extension": ""
14+
},
15+
{
16+
"for_packages": [
17+
"pkg:deb/debian/gzip@1.9-3?arch=amd64"
18+
],
19+
"compliance_alert": "",
20+
"path": "/node_16_slim.tar-extract/02c055ef67f5904019f43a41ea5f099996d8e7633749b6e606c400526b2c4b33/bin/uncompress",
21+
"size": null,
22+
"type": "file",
23+
"name": "uncompress",
24+
"extension": ""
25+
}]
26+
}

tests/test_resource.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1325,6 +1325,13 @@ def test_VirtualCodebase_scanning_full_root(self):
13251325
assert "/Users/sesser/code/nexb/scancode-toolkit/samples/README" == resource.path
13261326
assert 1 == codebase.compute_counts()[0]
13271327

1328+
def test_VirtualCodebase_can_compute_counts_witrh_null(self):
1329+
# was failing with
1330+
# size_count += child.size
1331+
# TypeError: unsupported operand type(s) for +=: 'int' and 'NoneType'
1332+
test_file = self.get_test_loc("resource/virtual_codebase/node-16-slim.json")
1333+
codebase = VirtualCodebase(test_file)
1334+
codebase.compute_counts()
13281335

13291336
class TestResource(FileBasedTesting):
13301337
test_data_dir = join(dirname(__file__), 'data')

0 commit comments

Comments
 (0)