diff options
author | Guido Günther <agx@sigxcpu.org> | 2014-04-01 10:03:35 +0200 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2014-04-01 11:33:06 +0200 |
commit | 14f6ded0143a3e82d04cad2614d705ca3a5b5c7e (patch) | |
tree | b5c6c56d5495e75acd48cb6aa00f6d98d5a64125 /tests | |
parent | 8f7a64eb08bdf1a8e04db8cf07cf74e88b90e9e4 (diff) | |
download | git-buildpackage-14f6ded0143a3e82d04cad2614d705ca3a5b5c7e.tar.gz git-buildpackage-14f6ded0143a3e82d04cad2614d705ca3a5b5c7e.tar.bz2 git-buildpackage-14f6ded0143a3e82d04cad2614d705ca3a5b5c7e.zip |
Test option parser fallbacks more thoroughly
revealing another bug where we overwrote parsed values with defaults
Closes: #733759
Diffstat (limited to 'tests')
-rw-r--r-- | tests/18_test_Config.py | 64 | ||||
-rw-r--r-- | tests/data/test1.conf | 35 |
2 files changed, 99 insertions, 0 deletions
diff --git a/tests/18_test_Config.py b/tests/18_test_Config.py new file mode 100644 index 00000000..701288b4 --- /dev/null +++ b/tests/18_test_Config.py @@ -0,0 +1,64 @@ +# vim: set fileencoding=utf-8 : + +import os +import unittest +from gbp.config import GbpOptionParser +from . import context + +class TestConfigParser(unittest.TestCase): + def setUp(self): + self.conffiles_save = os.environ.get('GBP_CONF_FILES') + self.confname = 'tests/data/test1.conf' + self.assertTrue(os.stat(self.confname)) + os.environ['GBP_CONF_FILES'] = self.confname + + def tearDown(self): + if self.conffiles_save: + os.environ['GBP_CONF_FILES'] = self.conffiles_save + + def test_default(self): + """ + A value only in the default section should be available in all commands + """ + for n in range(1,5): + for prefix in [ '', 'git-', 'gbp-' ]: + parser = GbpOptionParser('cmd%d' % n) + self.assertEqual(parser.config['default_option'], 'default_default1') + + def test_single_override(self): + """ + A value in any command section should override the default + """ + for prefix in [ '', 'git-', 'gbp-' ]: + parser = GbpOptionParser('%scmd1' % prefix) + self.assertEqual(parser.config['single_override_option1'], 'single_override_value1') + + def test_single_git_override(self): + """ + A value in any git-command section should override the default + """ + for prefix in [ '', 'git-' ]: + parser = GbpOptionParser('%scmd2' % prefix) + self.assertEqual(parser.config['single_git_override_option1'], 'single_git_override_value1') + + def test_single_gbp_override(self): + """ + A value in any gbp-command section should override the default + """ + for prefix in [ '', 'gbp-' ]: + parser = GbpOptionParser('%scmd3' % prefix) + self.assertEqual(parser.config['single_gbp_override_option1'], 'single_gbp_override_value1') + # FIXME: for all prefixes + + def test_new_overrides_git(self): + """ + A value in the cmd section should override the old git-cmd section independent from + how we're invoked + """ + for n in range(4, 6): + for prefix in [ '', 'git-']: + cmd = '%scmd%d' % (prefix, n) + parser = GbpOptionParser(cmd) + actual = parser.config['new_overrides_git_option1'] + expected = 'new_overrides_git_value1' + self.assertEqual(actual, expected, "%s != %s for %s" % (actual, expected, cmd)) diff --git a/tests/data/test1.conf b/tests/data/test1.conf new file mode 100644 index 00000000..e7ffeb4f --- /dev/null +++ b/tests/data/test1.conf @@ -0,0 +1,35 @@ +# Data for TestConfigParser + +[DEFAULT] +default_option = default_default1 +single_override_option1 = single_override_default1 +single_git_override_option1 = single_git_override_default1 +single_gbp_override_option1 = single_gbp_override_default1 +new_overrides_git_option1 = new_overrides_git_default1 + +# These commands only have a single section overriding defaults. +# There are no alterntive old or new names +[cmd1] +single_override_option1 = single_override_value1 + +[git-cmd2] +single_git_override_option1 = single_git_override_value1 + +[gbp-cmd3] +single_gbp_override_option1 = single_gbp_override_value1 + +# This commands have a new name overriding the old git- section +# The order of the sections differs though +[git-cmd4] +new_overrides_git_option1 = new_overrides_git_overridden1 + +[cmd4] +new_overrides_git_option1 = new_overrides_git_value1 + +[cmd5] +new_overrides_git_option1 = new_overrides_git_value1 + +[git-cmd5] +new_overrides_git_option1 = new_overrides_git_overridden1 + + |