From 74065faa382ee5a5291d60de0cf4a349683a1c09 Mon Sep 17 00:00:00 2001 From: Yu Ming Zhu Date: Nov 15 2019 18:55:02 +0000 Subject: raise error when config search paths is empty also fix unittest: test_profiles notes: since the test won't read config files anymore, lift the loop number from 20 -> 256 to increase the probability of hitting the multithread issue fixes: #1786 --- diff --git a/koji/__init__.py b/koji/__init__.py index 8141d13..2ffc4de 100644 --- a/koji/__init__.py +++ b/koji/__init__.py @@ -1776,8 +1776,9 @@ def read_config(profile_name, user_config=None): result[name] = value # Check if the specified profile had a config specified - if config.sections() and not got_conf: - raise ConfigurationError("no configuration for profile name: %s" % profile_name) + if not got_conf: + raise ConfigurationError("no configuration for profile name: %s" + % profile_name) # special handling for cert defaults cert_defaults = { diff --git a/tests/test_lib/test_profiles.py b/tests/test_lib/test_profiles.py index 8d7479e..0082570 100644 --- a/tests/test_lib/test_profiles.py +++ b/tests/test_lib/test_profiles.py @@ -3,8 +3,8 @@ import koji import sys import threading import traceback +import mock from six.moves import range -import six try: import unittest2 as unittest @@ -17,7 +17,7 @@ class ProfilesTestCase(unittest.TestCase): """ Test that profiles thread safe""" # see: https://pagure.io/koji/issue/58 and https://pagure.io/pungi/issue/253 # loop a few times to increase chances of hitting race conditions - for i in range(20): + for i in range(256): errors = {} threads = [threading.Thread(target=stress, args=(errors, _)) for _ in range(100)] for t in threads: @@ -34,7 +34,8 @@ class ProfilesTestCase(unittest.TestCase): def stress(errors, n): errors[n] = "Failed to start" try: - koji.get_profile_module('koji') + config = mock.Mock(topdir='topdir') + koji.get_profile_module('koji', config=config) except Exception: # if we don't catch this, nose seems to ignore the test errors[n] = ''.join(traceback.format_exception(*sys.exc_info()))