-
Notifications
You must be signed in to change notification settings - Fork 95
/
config_tests.py
81 lines (67 loc) · 2.96 KB
/
config_tests.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import unittest
from osc import conf
from osclib.conf import DEFAULT
from osclib.conf import Config
from osclib.core import attribute_value_save
from osclib.memoize import memoize_session_reset
from . import OBSLocal
class TestConfig(unittest.TestCase):
def setup_vcr(self):
return OBSLocal.FactoryWorkflow()
def test_basic(self):
wf = self.setup_vcr()
self.assertEqual('openSUSE', conf.config[wf.project]['lock-ns'])
def test_remote(self):
wf = self.setup_vcr()
# Initial config present in fixtures/oscrc and obs.py attribute default.
# Local config fixture contains overridden-by-local and should win over
# the remote config value.
self.assertEqual('local', conf.config[wf.project]['overridden-by-local'])
self.assertEqual('remote-indeed', conf.config[wf.project]['remote-only'])
# Change remote value.
attribute_value_save(wf.apiurl, wf.project, 'Config', 'remote-only = new value\n')
wf.load_config()
self.assertEqual('local', conf.config[wf.project]['overridden-by-local'])
self.assertEqual('new value', conf.config[wf.project]['remote-only'])
def test_remote_none(self):
wf = self.setup_vcr()
wf.load_config('not_real_project')
self.assertTrue(True) # Did not crash!
def test_pattern_order(self):
wf = self.setup_vcr()
# Add pattern to defaults in order to identify which was matched.
for pattern in DEFAULT:
DEFAULT[pattern]['pattern'] = pattern
# A list of projects that should match each of the DEFAULT patterns.
projects = (
'openSUSE:Factory',
'openSUSE:Factory:ARM',
'openSUSE:Jump:15.2',
'openSUSE:Leap:15.2',
'openSUSE:Leap:15.2:ARM',
'openSUSE:Leap:15.2:NonFree',
'openSUSE:Leap:15.2:Update',
'openSUSE:Leap:15.3',
'openSUSE:Leap:15.3:ARM',
'openSUSE:Leap:15.3:ARM:Images',
'openSUSE:Leap:15.3:NonFree',
'openSUSE:Leap:15.3:Update',
'openSUSE:Backports:SLE-15',
'openSUSE:Backports:SLE-15:Update',
'SUSE:SLE-15:GA',
'SUSE:SLE-12:GA',
'GNOME:Factory',
)
# Ensure each pattern is match instead of catch-all pattern.
patterns = set()
for project in projects:
Config(wf.apiurl, project)
patterns.add(conf.config[project]['pattern'])
self.assertEqual(len(patterns), len(DEFAULT))
def test_get_memoize_reset(self):
"""Ensure memoize_session_reset() properly forces re-fetch of config."""
wf = self.setup_vcr()
self.assertEqual('remote-indeed', Config.get(wf.apiurl, wf.project)['remote-only'])
attribute_value_save(wf.apiurl, wf.project, 'Config', 'remote-only = new value\n')
memoize_session_reset()
self.assertEqual('new value', Config.get(wf.apiurl, wf.project)['remote-only'])