# Copyright 2014 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # =*= License: GPL-3+ =*= import contextlib import errno import StringIO import unittest import distixlib class MetadataLoaderTests(unittest.TestCase): def test_raises_specific_error_when_open_fails(self): def raise_ioerror(*args): raise IOError((errno.ENOENT, 'no existy', 'foobar')) loader = distixlib.MetadataLoader() loader._open_file = raise_ioerror self.assertRaises( distixlib.CannotLoadMetadataError, loader.load_from_file, 'this does not need to exist') def test_loads_from_file(self): def return_text(*args): return contextlib.closing(StringIO.StringIO('key:\n- value\n')) loader = distixlib.MetadataLoader() loader._open_file = return_text metadata = loader.load_from_file('foo') self.assertListEqual(metadata.keys(), ['key']) self.assertListEqual(metadata.get_all_values('key'), ['value'])