[Kimchi-devel] [PATCH] Gtihub #660 - Fixing .repo file with no repos handling
Ramon Medeiros
ramonn at linux.vnet.ibm.com
Tue Jun 16 13:09:29 UTC 2015
Reviewed-By: Ramon Medeiros <ramonn at br.ibm.com>
Tested-By: Ramon Medeiros <ramonn at br.ibm.com>
On 06/12/2015 09:06 AM, Daniel Henrique Barboza wrote:
> yumparser module will not add a {None: None} dict to the
> repositories listing when reading a .repo file which has
> no repositories declarations.
>
> Signed-off-by: Daniel Henrique Barboza <dhbarboza82 at gmail.com>
> ---
> src/kimchi/yumparser.py | 5 +++--
> tests/test_yumparser.py | 24 ++++++++++++++++++++++++
> 2 files changed, 27 insertions(+), 2 deletions(-)
>
> diff --git a/src/kimchi/yumparser.py b/src/kimchi/yumparser.py
> index ce6ba9d..ac4ee02 100644
> --- a/src/kimchi/yumparser.py
> +++ b/src/kimchi/yumparser.py
> @@ -109,8 +109,9 @@ def _get_repos_from_file(repo_file):
> value = value.strip()
> current_repo.set_attribute(key, value)
>
> - # add the last repo from file
> - repos_from_file[current_repo_id] = current_repo
> + # add the last repo from file.
> + if current_repo is not None:
> + repos_from_file[current_repo_id] = current_repo
>
> return repos_from_file
>
> diff --git a/tests/test_yumparser.py b/tests/test_yumparser.py
> index 8645a65..d17e647 100644
> --- a/tests/test_yumparser.py
> +++ b/tests/test_yumparser.py
> @@ -22,6 +22,7 @@ import tempfile
> import unittest
>
> from kimchi.model import model
> +from kimchi.rollbackcontext import RollbackContext
> from kimchi.yumparser import delete_repo_from_file, get_repo_files
> from kimchi.yumparser import get_yum_repositories, write_repo_to_file
> from kimchi.yumparser import YumRepoObject
> @@ -45,6 +46,21 @@ def _create_fake_repos(repo_file_name):
> return repos
>
>
> +def _create_empty_repo_file():
> + data = """
> +#
> +# This is a repository file with no repositories at all
> +# No repositories must be added after reading this file.
> +#
> + """
> + _, tmp_file_name = tempfile.mkstemp(suffix='.repo',
> + dir='/etc/yum.repos.d')
> + with open(tmp_file_name, 'w') as f:
> + f.writelines(data)
> +
> + return tmp_file_name
> +
> +
> def _create_fake_repos_file():
> _, tmp_file_name = tempfile.mkstemp(suffix='.repo',
> dir='/etc/yum.repos.d')
> @@ -79,6 +95,14 @@ class YumParserTests(unittest.TestCase):
> repo_objects = get_yum_repositories()
> self.assertGreaterEqual(len(repo_objects), len(repo_files))
>
> + def test_empty_repo_file(self):
> + with RollbackContext() as rollback:
> + repos = get_yum_repositories()
> + tmp_file_name = _create_empty_repo_file()
> + rollback.prependDefer(os.remove, tmp_file_name)
> + repos_after = get_yum_repositories()
> + self.assertEqual(len(repos_after), len(repos))
> +
> def test_update_repo_attributes(self):
> repos = get_yum_repositories()
> fake_repo_2 = repos['fake-repo-2']
--
Ramon Nunes Medeiros
Kimchi Developer
Linux Technology Center Brazil
IBM Systems & Technology Group
Phone : +55 19 2132 7878
ramonn at br.ibm.com
More information about the Kimchi-devel
mailing list