From 6d3b8cc190e7ac2434911697aae8d4590913bbb2 Mon Sep 17 00:00:00 2001 From: Guillaume Dequenne Date: Wed, 26 Mar 2025 17:10:00 +0100 Subject: [PATCH] SCANPY-151 Fix cache location for the Python scanner --- src/pysonar_scanner/__main__.py | 3 +-- src/pysonar_scanner/cache.py | 9 +++++++-- tests/unit/sq_api_utils.py | 1 + tests/unit/test_cache.py | 6 +++++- tests/unit/test_jre.py | 2 +- tests/unit/test_scannerengine.py | 5 +---- 6 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/pysonar_scanner/__main__.py b/src/pysonar_scanner/__main__.py index 1d0d8107..d7e1aafa 100644 --- a/src/pysonar_scanner/__main__.py +++ b/src/pysonar_scanner/__main__.py @@ -42,12 +42,11 @@ def scan(): config = ConfigurationLoader.load() set_logging_options(config) - cache_manager = cache.get_default() - api = build_api(config) check_version(api) update_config_with_api_urls(config, api.base_urls) + cache_manager = cache.get_cache(config) scanner = create_scanner_engine(api, cache_manager, config) return scanner.run(config) diff --git a/src/pysonar_scanner/cache.py b/src/pysonar_scanner/cache.py index 88620755..0431386d 100644 --- a/src/pysonar_scanner/cache.py +++ b/src/pysonar_scanner/cache.py @@ -23,6 +23,7 @@ from dataclasses import dataclass from pysonar_scanner import utils +from pysonar_scanner.configuration.properties import SONAR_USER_HOME OpenBinaryMode = typing.Literal["wb", "xb"] @@ -68,5 +69,9 @@ def create_cache(cache_folder: pathlib.Path): return Cache(cache_folder) -def get_default() -> Cache: - return Cache.create_cache(pathlib.Path.home() / ".sonar-scanner/cache") +def get_cache(config) -> Cache: + if SONAR_USER_HOME in config: + cache_folder = pathlib.Path(config[SONAR_USER_HOME]) / "cache" + else: + cache_folder = pathlib.Path.home() / ".sonar/cache" + return Cache.create_cache(cache_folder) diff --git a/tests/unit/sq_api_utils.py b/tests/unit/sq_api_utils.py index 41b8c1b4..7b37787e 100644 --- a/tests/unit/sq_api_utils.py +++ b/tests/unit/sq_api_utils.py @@ -19,6 +19,7 @@ # import contextlib from typing import Optional + from pysonar_scanner import utils from pysonar_scanner.api import JRE, BaseUrls, SonarQubeApi import responses diff --git a/tests/unit/test_cache.py b/tests/unit/test_cache.py index d147ccf8..56db023c 100644 --- a/tests/unit/test_cache.py +++ b/tests/unit/test_cache.py @@ -23,6 +23,7 @@ from pysonar_scanner.cache import Cache, CacheFile import pysonar_scanner.cache as cache +from pysonar_scanner.configuration.properties import SONAR_USER_HOME class TestCacheFile(unittest.TestCase): @@ -52,7 +53,10 @@ def test_get_file(self): self.assertEqual(cache_file.checksum, "123") def test_get_default(self): - self.assertEqual(cache.get_default().cache_folder, pathlib.Path.home() / ".sonar-scanner/cache") + self.assertEqual(cache.get_cache({}).cache_folder, pathlib.Path.home() / ".sonar/cache") + + def test_uses_user_home(self): + self.assertEqual(cache.get_cache({SONAR_USER_HOME: "my/home"}).cache_folder, pathlib.Path("my/home") / "cache") def test_exists(self): cache = Cache.create_cache(pathlib.Path("/folder1/folder2/")) diff --git a/tests/unit/test_jre.py b/tests/unit/test_jre.py index 4fef6de8..5c569ce8 100644 --- a/tests/unit/test_jre.py +++ b/tests/unit/test_jre.py @@ -45,7 +45,7 @@ class TestJREProvisioner(pyfakefs.TestCase): def setUp(self): self.setUpPyfakefs(allow_root_user=False) - self.cache = cache.get_default() + self.cache = cache.get_cache({}) self.api = sq_api_utils.get_sq_server() self.__setup_zip_file() diff --git a/tests/unit/test_scannerengine.py b/tests/unit/test_scannerengine.py index 8b62358a..75f8245c 100644 --- a/tests/unit/test_scannerengine.py +++ b/tests/unit/test_scannerengine.py @@ -29,12 +29,9 @@ from pysonar_scanner import cache from pysonar_scanner import scannerengine -from pysonar_scanner.api import SQVersion -from pysonar_scanner.exceptions import ChecksumException, SQTooOldException -from pysonar_scanner.jre import JREResolvedPath, JREResolver +from pysonar_scanner.exceptions import ChecksumException from pysonar_scanner.scannerengine import ( LogLine, - ScannerEngine, ScannerEngineProvisioner, default_log_line_listener, )