Skip to content

Commit ede7730

Browse files
committed
fix CI errors and imports
Signed-off-by: Varsha U N <[email protected]>
1 parent 8cceed7 commit ede7730

File tree

4 files changed

+52
-170
lines changed

4 files changed

+52
-170
lines changed

scanpipe/pipelines/__init__.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import logging
2626
import traceback
2727
from contextlib import contextmanager
28-
from datetime import datetime
2928
from functools import wraps
3029
from pathlib import Path
3130

@@ -36,7 +35,6 @@
3635
from pyinstrument import Profiler
3736

3837
from aboutcode.pipeline import BasePipeline
39-
from scancodeio.settings import download_store
4038

4139
logger = logging.getLogger(__name__)
4240

@@ -180,6 +178,7 @@ def download_missing_inputs(self):
180178
if error_tracebacks:
181179
raise InputFilesError(error_tracebacks)
182180

181+
183182
class ProjectPipeline(CommonStepsMixin, BasePipeline):
184183
"""Main class for all project related pipelines including common steps methods."""
185184

scanpipe/pipes/input.py

Lines changed: 27 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import logging
2424
import os
2525
import shutil
26-
from datetime import datetime
2726
from pathlib import Path
2827

2928
from django.core.exceptions import FieldDoesNotExist
@@ -34,7 +33,6 @@
3433
import requests
3534
from typecode.contenttype import get_type
3635

37-
from scancodeio.settings import download_store
3836
from scanpipe import pipes
3937
from scanpipe.models import CodebaseRelation
4038
from scanpipe.models import CodebaseResource
@@ -261,43 +259,21 @@ def add_input_from_url(project, url, filename=None):
261259
raise
262260

263261
filename = filename or url.split("/")[-1] or "downloaded_file"
262+
input_path = project.input_path / filename
264263

265-
if download_store:
266-
try:
267-
download = download_store.put(
268-
content=content,
269-
download_url=url,
270-
download_date=datetime.now().isoformat(),
271-
filename=filename,
272-
)
273-
InputSource.objects.create(
274-
project=project,
275-
sha256=download.sha256,
276-
download_url=download.download_url,
277-
filename=download.filename,
278-
download_date=download.download_date,
279-
file_path=str(download.path),
280-
is_uploaded=False,
281-
)
282-
except Exception as e:
283-
logger.error(f"Failed to archive download for {url}: {e}")
284-
raise
285-
else:
286-
input_path = project.input_path / filename
287-
try:
288-
input_path.parent.mkdir(parents=True, exist_ok=True)
289-
with open(input_path, "wb") as f:
290-
f.write(content)
291-
InputSource.objects.create(
292-
project=project,
293-
filename=filename,
294-
download_url=url,
295-
file_path=str(input_path),
296-
is_uploaded=False,
297-
)
298-
except Exception as e:
299-
logger.error(f"Failed to save {filename} to {input_path}: {e}")
300-
raise
264+
try:
265+
input_path.parent.mkdir(parents=True, exist_ok=True)
266+
with open(input_path, "wb") as f:
267+
f.write(content)
268+
InputSource.objects.create(
269+
project=project,
270+
filename=filename,
271+
download_url=url,
272+
is_uploaded=False,
273+
)
274+
except Exception as e:
275+
logger.error(f"Failed to save {filename} to {input_path}: {e}")
276+
raise
301277

302278

303279
def add_input_from_upload(project, uploaded_file):
@@ -307,39 +283,16 @@ def add_input_from_upload(project, uploaded_file):
307283
"""
308284
content = uploaded_file.read()
309285
filename = uploaded_file.name
310-
311-
if download_store:
312-
try:
313-
download = download_store.put(
314-
content=content,
315-
download_url="",
316-
download_date=datetime.now().isoformat(),
317-
filename=filename,
318-
)
319-
InputSource.objects.create(
320-
project=project,
321-
sha256=download.sha256,
322-
download_url=download.download_url,
323-
filename=download.filename,
324-
download_date=download.download_date,
325-
file_path=str(download.path),
326-
is_uploaded=True,
327-
)
328-
except Exception as e:
329-
logger.error(f"Failed to archive upload {filename}: {e}")
330-
raise
331-
else:
332-
input_path = project.input_path / filename
333-
try:
334-
input_path.parent.mkdir(parents=True, exist_ok=True)
335-
with open(input_path, "wb") as f:
336-
f.write(content)
337-
InputSource.objects.create(
338-
project=project,
339-
filename=filename,
340-
file_path=str(input_path),
341-
is_uploaded=True,
342-
)
343-
except Exception as e:
344-
logger.error(f"Failed to save {filename} to {input_path}: {e}")
345-
raise
286+
input_path = project.input_path / filename
287+
try:
288+
input_path.parent.mkdir(parents=True, exist_ok=True)
289+
with open(input_path, "wb") as f:
290+
f.write(content)
291+
InputSource.objects.create(
292+
project=project,
293+
filename=filename,
294+
is_uploaded=True,
295+
)
296+
except Exception as e:
297+
logger.error(f"Failed to save {filename} to {input_path}: {e}")
298+
raise

scanpipe/tests/test_input.py

Lines changed: 23 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@
2525

2626

2727
from pathlib import Path
28+
from unittest.mock import Mock
2829
from unittest.mock import patch
2930

3031
from django.core.files.uploadedfile import SimpleUploadedFile
3132
from django.test import TestCase
32-
from django.conf import settings
3333

3434
from scanpipe.models import InputSource
3535
from scanpipe.pipes.input import add_input_from_upload
@@ -49,64 +49,46 @@ def setUp(self):
4949

5050
@patch("requests.get")
5151
def test_add_input_from_url(self, mock_get):
52-
test_url = "https://files.pythonhosted.org/packages/sample.tar.gz"
53-
mock_get.return_value.content = self.test_content
54-
mock_get.return_value.status_code = 200
52+
test_url = "https://example.com/test.tar.gz"
53+
mock_response = Mock()
54+
mock_response.content = self.test_content
55+
mock_response.raise_for_status.return_value = None
56+
mock_get.return_value = mock_response
5557
add_input_from_url(self.project, test_url, filename=self.test_filename)
5658
input_source = InputSource.objects.get(project=self.project)
57-
self.assertEqual(input_source.filename, self.test_filename)
5859
self.assertEqual(input_source.download_url, test_url)
59-
self.assertTrue(input_source.sha256)
60-
self.assertTrue(input_source.download_date)
61-
self.assertFalse(input_source.is_uploaded)
62-
self.assertTrue(
63-
input_source.file_path.startswith(settings.CENTRAL_ARCHIVE_PATH)
64-
)
65-
self.assertTrue(Path(input_source.file_path).exists())
66-
67-
@patch("scanpipe.pipes.input.download_store", None)
68-
@patch("requests.get")
69-
def test_add_input_from_url_fallback(self, mock_get):
70-
test_url = "https://files.pythonhosted.org/packages/sample.tar.gz"
71-
mock_get.return_value.content = self.test_content
72-
mock_get.return_value.status_code = 200
73-
add_input_from_url(self.project, test_url, filename=self.test_filename)
74-
input_source = InputSource.objects.get(project=self.project)
7560
self.assertEqual(input_source.filename, self.test_filename)
76-
self.assertEqual(input_source.download_url, test_url)
77-
self.assertFalse(input_source.sha256)
78-
self.assertFalse(input_source.download_date)
7961
self.assertFalse(input_source.is_uploaded)
80-
self.assertTrue(
81-
str(input_source.file_path).startswith(str(self.project.input_path))
82-
)
83-
self.assertTrue(Path(input_source.file_path).exists())
62+
self.assertTrue((self.project.input_path / self.test_filename).exists())
8463

8564
def test_add_input_from_upload(self):
8665
uploaded_file = SimpleUploadedFile(self.test_filename, self.test_content)
8766
add_input_from_upload(self.project, uploaded_file)
8867
input_source = InputSource.objects.get(project=self.project)
8968
self.assertEqual(input_source.filename, self.test_filename)
9069
self.assertEqual(input_source.download_url, "")
91-
self.assertTrue(input_source.sha256)
92-
self.assertTrue(input_source.download_date)
9370
self.assertTrue(input_source.is_uploaded)
94-
self.assertTrue(
95-
input_source.file_path.startswith(settings.CENTRAL_ARCHIVE_PATH)
96-
)
97-
self.assertTrue(Path(input_source.file_path).exists())
71+
self.assertTrue((self.project.input_path / self.test_filename).exists())
72+
73+
@patch("requests.get")
74+
def test_add_input_from_url_fallback(self, mock_get):
75+
test_url = "https://example.com/test.tar.gz"
76+
mock_response = Mock()
77+
mock_response.content = self.test_content
78+
mock_response.raise_for_status.return_value = None
79+
mock_get.return_value = mock_response
80+
add_input_from_url(self.project, test_url, filename=self.test_filename)
81+
input_source = InputSource.objects.get(project=self.project)
82+
self.assertEqual(input_source.download_url, test_url)
83+
self.assertEqual(input_source.filename, self.test_filename)
84+
self.assertFalse(input_source.is_uploaded)
85+
self.assertTrue((self.project.input_path / self.test_filename).exists())
9886

99-
@patch("scanpipe.pipes.input.download_store", None)
10087
def test_add_input_from_upload_fallback(self):
10188
uploaded_file = SimpleUploadedFile(self.test_filename, self.test_content)
10289
add_input_from_upload(self.project, uploaded_file)
10390
input_source = InputSource.objects.get(project=self.project)
10491
self.assertEqual(input_source.filename, self.test_filename)
10592
self.assertEqual(input_source.download_url, "")
106-
self.assertFalse(input_source.sha256)
107-
self.assertFalse(input_source.download_date)
10893
self.assertTrue(input_source.is_uploaded)
109-
self.assertTrue(
110-
str(input_source.file_path).startswith(str(self.project.input_path))
111-
)
112-
self.assertTrue(Path(input_source.file_path).exists())
94+
self.assertTrue((self.project.input_path / self.test_filename).exists())

scanpipe/tests/test_pipelines.py

Lines changed: 1 addition & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
from scanpipe import pipes
4242
from scanpipe.models import CodebaseResource
4343
from scanpipe.models import DiscoveredPackage
44-
from scanpipe.models import InputSource
4544
from scanpipe.pipelines import CommonStepsMixin
4645
from scanpipe.pipelines import InputFilesError
4746
from scanpipe.pipelines import Pipeline
@@ -185,7 +184,7 @@ def test_scanpipe_pipeline_class_download_inputs_attribute(self):
185184
run = project1.add_pipeline("download_inputs")
186185
pipeline = run.make_pipeline_instance()
187186
self.assertTrue(pipeline.download_inputs)
188-
expected = (CommonStepsMixin.download_missing_inputs)
187+
expected = (CommonStepsMixin.download_missing_inputs,)
189188
self.assertEqual(expected, pipeline.get_initial_steps())
190189
expected = (CommonStepsMixin.download_missing_inputs, DownloadInput.step1)
191190
self.assertEqual(expected, pipeline.get_steps())
@@ -287,57 +286,6 @@ def mock_make_to_path(**kwargs):
287286
self.assertTrue(input_source.exists())
288287

289288
@mock.patch("requests.get")
290-
def test_archive_downloads(self, mock_get):
291-
project1 = make_project()
292-
run = project1.add_pipeline("scan_codebase")
293-
pipeline = run.make_pipeline_instance()
294-
test_filename = "sample.tar.gz"
295-
test_url = "https://files.pythonhosted.org/packages/sample.tar.gz"
296-
test_data_path = (
297-
Path(__file__).parent / "data" / "test-downloads" / test_filename
298-
)
299-
with open(test_data_path, "rb") as f:
300-
test_content = f.read()
301-
302-
input_source = InputSource.objects.create(
303-
InputSource.objects.create(
304-
project1=project1,
305-
filename=test_filename,
306-
download_url=test_url,
307-
is_uploaded=False,
308-
)
309-
)
310-
mock_get.return_value.content = test_content
311-
mock_get.return_value.status_code = 200
312-
313-
pipeline.download_missing_inputs()
314-
input_source.refresh_from_db()
315-
self.assertTrue(
316-
input_source.file_path.startswith(settings.CENTRAL_ARCHIVE_PATH)
317-
)
318-
self.assertTrue(Path(input_source.file_path).exists())
319-
320-
pipeline.archive_downloads()
321-
input_source = InputSource.refresh_from_db()
322-
self.assertTrue(input_source.sha256)
323-
self.assertTrue(input_source.download_date)
324-
self.assertEqual(input_source.download_url, test_url)
325-
self.assertEqual(input_source.filename, test_filename)
326-
327-
project2 = make_project(name="project2")
328-
input_source2 = InputSource.objects.create(
329-
project=project2,
330-
filename=test_filename,
331-
download_url=test_url,
332-
is_uploaded=False,
333-
)
334-
run2 = project2.add_pipeline("scan_codebase")
335-
pipeline2 = run2.make_pipeline_instance()
336-
pipeline2.download_missing_inputs()
337-
input_source2.refresh_from_db()
338-
self.assertEqual(input_source.file_path, input_source2.file_path)
339-
self.assertTrue(Path(input_source2.file_path).exists())
340-
341289
def test_scanpipe_pipeline_class_save_errors_context_manager(self):
342290
project1 = make_project()
343291
run = project1.add_pipeline("do_nothing")

0 commit comments

Comments
 (0)