return v
+def _get_fetch_resume_size(settings, default='350K'):
+ key = 'PORTAGE_FETCH_RESUME_MIN_SIZE'
+ v = settings.get(key)
+ if v is not None:
+ v = "".join(v.split())
+ if not v:
+ # If it's empty, silently use the default.
+ v = default
+ match = _fetch_resume_size_re.match(v)
+ if (match is None or
+ match.group(2).upper() not in _size_suffix_map):
+ writemsg(_("!!! Variable %s contains an "
+ "unrecognized format: '%s'\n")
+ % (key, settings[key]),
+ noiselevel=-1)
+ writemsg(_("!!! Using %s default value: %s\n")
+ % (key, default),
+ noiselevel=-1)
+ v = None
+ if v is None:
+ v = default
+ match = _fetch_resume_size_re.match(v)
+ v = int(match.group(1)) * \
+ 2 ** _size_suffix_map[match.group(2).upper()]
+ return v
+
+
def fetch(myuris, mysettings, listonly=0, fetchonly=0,
locks_in_subdir=".locks", use_locks=1, try_mirrors=1, digests=None,
allow_missing_digests=True):
checksum_failure_max_tries = _get_checksum_failure_max_tries(
settings=mysettings)
-
- fetch_resume_size_default = "350K"
- fetch_resume_size = mysettings.get("PORTAGE_FETCH_RESUME_MIN_SIZE")
- if fetch_resume_size is not None:
- fetch_resume_size = "".join(fetch_resume_size.split())
- if not fetch_resume_size:
- # If it's undefined or empty, silently use the default.
- fetch_resume_size = fetch_resume_size_default
- match = _fetch_resume_size_re.match(fetch_resume_size)
- if match is None or \
- (match.group(2).upper() not in _size_suffix_map):
- writemsg(_("!!! Variable PORTAGE_FETCH_RESUME_MIN_SIZE"
- " contains an unrecognized format: '%s'\n") % \
- mysettings["PORTAGE_FETCH_RESUME_MIN_SIZE"], noiselevel=-1)
- writemsg(_("!!! Using PORTAGE_FETCH_RESUME_MIN_SIZE "
- "default value: %s\n") % fetch_resume_size_default,
- noiselevel=-1)
- fetch_resume_size = None
- if fetch_resume_size is None:
- fetch_resume_size = fetch_resume_size_default
- match = _fetch_resume_size_re.match(fetch_resume_size)
- fetch_resume_size = int(match.group(1)) * \
- 2 ** _size_suffix_map[match.group(2).upper()]
+ fetch_resume_size = _get_fetch_resume_size(settings=mysettings)
# Behave like the package has RESTRICT="primaryuri" after a
# couple of checksum failures, to increase the probablility
from portage.package.ebuild.fetch import (
_get_checksum_failure_max_tries,
+ _get_fetch_resume_size,
)
from portage.tests import TestCase
_get_checksum_failure_max_tries(
settings={}, default=3),
3)
+
+ def test_get_fetch_resume_size(self):
+ self.assertEqual(
+ _get_fetch_resume_size(settings={}),
+ 358400)
+ self.assertEqual(
+ _get_fetch_resume_size(settings={
+ 'PORTAGE_FETCH_RESUME_MIN_SIZE': ''}),
+ 358400)
+ self.assertEqual(
+ _get_fetch_resume_size(settings={
+ 'PORTAGE_FETCH_RESUME_MIN_SIZE': '3'}),
+ 3)
+ self.assertEqual(
+ _get_fetch_resume_size(settings={
+ 'PORTAGE_FETCH_RESUME_MIN_SIZE': '3K'}),
+ 3072)
+ self.assertEqual(
+ _get_fetch_resume_size(settings={
+ 'PORTAGE_FETCH_RESUME_MIN_SIZE': '3 K'}),
+ 3072)
+ self.assertEqual(
+ _get_fetch_resume_size(settings={
+ 'PORTAGE_FETCH_RESUME_MIN_SIZE': '3M'}),
+ 3145728)
+ self.assertEqual(
+ _get_fetch_resume_size(settings={
+ 'PORTAGE_FETCH_RESUME_MIN_SIZE': '3G'}),
+ 3221225472)
+ self.assertEqual(
+ _get_fetch_resume_size(settings={
+ 'PORTAGE_FETCH_RESUME_MIN_SIZE': 'oops'}),
+ 358400)
+ self.assertEqual(
+ _get_fetch_resume_size(settings={}, default='3K'),
+ 3072)