Skip to content

Commit fea657e

Browse files
authored
Merge pull request #1660 from aboutcode-org/1659-no-migration-for-bump
Avoid migrations on version bumps
2 parents 9c23eb8 + 91112af commit fea657e

File tree

4 files changed

+79
-22
lines changed

4 files changed

+79
-22
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Generated by Django 4.2.16 on 2024-11-15 11:34
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("vulnerabilities", "0082_vulnerability_exploitability_and_more"),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name="packagechangelog",
15+
name="software_version",
16+
field=models.CharField(
17+
help_text="Version of the software at the time of change", max_length=100
18+
),
19+
),
20+
migrations.AlterField(
21+
model_name="vulnerabilitychangelog",
22+
name="software_version",
23+
field=models.CharField(
24+
help_text="Version of the software at the time of change", max_length=100
25+
),
26+
),
27+
]

vulnerabilities/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1281,7 +1281,8 @@ class ChangeLog(models.Model):
12811281
software_version = models.CharField(
12821282
max_length=100,
12831283
help_text="Version of the software at the time of change",
1284-
default=VULNERABLECODE_VERSION,
1284+
blank=False,
1285+
null=False,
12851286
)
12861287

12871288
@property

vulnerabilities/tests/test_changelog.py

Lines changed: 50 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,23 @@
77
# See https://aboutcode.org for more information about nexB OSS projects.
88
#
99
from datetime import datetime
10+
from unittest.mock import patch
1011

1112
import pytest
13+
from packageurl import PackageURL
1214
from univers.version_range import NpmVersionRange
1315
from univers.versions import SemverVersion
1416

15-
from vulnerabilities.import_runner import ImportRunner
17+
from vulnerabilities import models
1618
from vulnerabilities.importer import AffectedPackage
17-
from vulnerabilities.models import *
1819
from vulnerabilities.pipelines.npm_importer import NpmImporterPipeline
1920

2021

2122
@pytest.mark.django_db
2223
def test_package_changelog():
23-
pkg, _ = Package.objects.get_or_create_from_purl("pkg:npm/[email protected]")
24-
assert PackageChangeLog.objects.filter(package=pkg).count() == 0
25-
adv = Advisory.objects.create(
24+
pkg, _ = models.Package.objects.get_or_create_from_purl("pkg:npm/[email protected]")
25+
assert models.PackageChangeLog.objects.filter(package=pkg).count() == 0
26+
adv = models.Advisory.objects.create(
2627
created_by=NpmImporterPipeline.pipeline_id,
2728
summary="TEST",
2829
date_collected=datetime.now(),
@@ -39,16 +40,18 @@ def test_package_changelog():
3940
aliases=["CVE-123"],
4041
)
4142
NpmImporterPipeline().import_advisory(advisory=adv)
42-
assert PackageChangeLog.objects.filter(package=pkg).count() == 1
43+
assert models.PackageChangeLog.objects.filter(package=pkg).count() == 1
4344
NpmImporterPipeline().import_advisory(advisory=adv)
44-
assert PackageChangeLog.objects.filter(package=pkg).count() == 1
45+
assert models.PackageChangeLog.objects.filter(package=pkg).count() == 1
4546
assert (
46-
PackageChangeLog.objects.filter(action_type=PackageChangeLog.FIXING, package=pkg).count()
47+
models.PackageChangeLog.objects.filter(
48+
action_type=models.PackageChangeLog.FIXING, package=pkg
49+
).count()
4750
== 1
4851
)
49-
pkg1, _ = Package.objects.get_or_create_from_purl("pkg:npm/[email protected]")
50-
assert PackageChangeLog.objects.filter(package=pkg1).count() == 0
51-
adv = Advisory.objects.create(
52+
pkg1, _ = models.Package.objects.get_or_create_from_purl("pkg:npm/[email protected]")
53+
assert models.PackageChangeLog.objects.filter(package=pkg1).count() == 0
54+
adv = models.Advisory.objects.create(
5255
created_by=NpmImporterPipeline.pipeline_id,
5356
summary="TEST-1",
5457
date_collected=datetime.now(),
@@ -65,20 +68,21 @@ def test_package_changelog():
6568
aliases=["CVE-145"],
6669
)
6770
NpmImporterPipeline().import_advisory(advisory=adv)
68-
assert PackageChangeLog.objects.filter(package=pkg1).count() == 1
71+
assert models.PackageChangeLog.objects.filter(package=pkg1).count() == 1
6972
NpmImporterPipeline().import_advisory(advisory=adv)
70-
assert PackageChangeLog.objects.filter(package=pkg1).count() == 1
73+
assert models.PackageChangeLog.objects.filter(package=pkg1).count() == 1
7174
assert (
72-
PackageChangeLog.objects.filter(
73-
action_type=PackageChangeLog.AFFECTED_BY, package=pkg1
75+
models.PackageChangeLog.objects.filter(
76+
action_type=models.PackageChangeLog.AFFECTED_BY,
77+
package=pkg1,
7478
).count()
7579
== 1
7680
)
7781

7882

7983
@pytest.mark.django_db
8084
def test_vulnerability_changelog():
81-
adv = Advisory.objects.create(
85+
adv = models.Advisory.objects.create(
8286
created_by=NpmImporterPipeline.pipeline_id,
8387
summary="TEST_1",
8488
date_collected=datetime.now(),
@@ -97,10 +101,37 @@ def test_vulnerability_changelog():
97101
NpmImporterPipeline().import_advisory(advisory=adv)
98102
# 1 Changelogs is expected here:
99103
# 1 for importing vuln details
100-
assert VulnerabilityChangeLog.objects.count() == 1
104+
assert models.VulnerabilityChangeLog.objects.count() == 1
101105
NpmImporterPipeline().import_advisory(advisory=adv)
102-
assert VulnerabilityChangeLog.objects.count() == 1
106+
assert models.VulnerabilityChangeLog.objects.count() == 1
103107
assert (
104-
VulnerabilityChangeLog.objects.filter(action_type=VulnerabilityChangeLog.IMPORT).count()
108+
models.VulnerabilityChangeLog.objects.filter(
109+
action_type=models.VulnerabilityChangeLog.IMPORT
110+
).count()
105111
== 1
106112
)
113+
114+
115+
@patch("vulnerabilities.models.VULNERABLECODE_VERSION", "test-version")
116+
@pytest.mark.django_db
117+
def test_vulnerability_changelog_software_version():
118+
adv = models.Advisory.objects.create(
119+
created_by=NpmImporterPipeline.pipeline_id,
120+
summary="TEST_1",
121+
date_collected=datetime.now(),
122+
url="https://test.com/source",
123+
affected_packages=[
124+
AffectedPackage(
125+
package=PackageURL(
126+
type="npm",
127+
name="foo",
128+
),
129+
fixed_version=SemverVersion("1.0"),
130+
).to_dict()
131+
],
132+
aliases=["CVE-TEST-1234"],
133+
)
134+
NpmImporterPipeline().import_advisory(advisory=adv)
135+
npm_vulnerability_log = models.VulnerabilityChangeLog.objects.first()
136+
137+
assert ("test-version", npm_vulnerability_log.software_version)

vulnerablecode/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99

1010
import os
1111
import sys
12-
import warnings
13-
from pathlib import Path
1412

1513
__version__ = "34.3.2"
1614

0 commit comments

Comments
 (0)