def test_argvlist_positional_substitution(self, tmpdir, newconfig): config = newconfig(""" [section] key2= cmd1 [] cmd2 {posargs:{item2} \ other} """) reader = IniReader(config._cfg) posargs = ['hello', 'world'] reader.addsubstitions(posargs, item2="value2") #py.test.raises(tox.exception.ConfigError, # "reader.getargvlist('section', 'key1')") assert reader.getargvlist('section', 'key1') == [] argvlist = reader.getargvlist("section", "key2") assert argvlist[0] == ["cmd1"] + posargs assert argvlist[1] == ["cmd2"] + posargs reader = IniReader(config._cfg) reader.addsubstitions([], item2="value2") #py.test.raises(tox.exception.ConfigError, # "reader.getargvlist('section', 'key1')") assert reader.getargvlist('section', 'key1') == [] argvlist = reader.getargvlist("section", "key2") assert argvlist[0] == ["cmd1"] assert argvlist[1] == ["cmd2", "value2", "other"]
def test_getpath(self, tmpdir, newconfig): config = newconfig(""" [section] path1={HELLO} """) reader = IniReader(config._cfg) reader.addsubstitions(toxinidir=tmpdir, HELLO="mypath") x = reader.getpath("section", "path1", tmpdir) assert x == tmpdir.join("mypath")
def test_argvlist_quoting_in_command(self, tmpdir, newconfig): config = newconfig(""" [section] key1= cmd1 'with space' \ # a comment 'after the comment' """) reader = IniReader(config._cfg) x = reader.getargvlist("section", "key1") assert x == [["cmd1", "with space", "after the comment"]]
def test_getlist(self, tmpdir, newconfig): config = newconfig(""" [section] key2= item1 {item2} """) reader = IniReader(config._cfg) reader.addsubstitions(item1="not", item2="grr") x = reader.getlist("section", "key2") assert x == ['item1', 'grr']
def test_getdefault_single(self, tmpdir, newconfig): config = newconfig(""" [section] key=value """) reader = IniReader(config._cfg) x = reader.getdefault("section", "key") assert x == "value" assert not reader.getdefault("section", "hello") x = reader.getdefault("section", "hello", "world") assert x == "world"
def test_substition_with_multiple_words(self, newconfig): inisource = """ [section] key = py.test -n5 --junitxml={envlogdir}/junit-{envname}.xml [] """ config = newconfig(inisource) reader = IniReader(config._cfg) posargs = ['hello', 'world'] reader.addsubstitions(posargs, envlogdir='ENV_LOG_DIR', envname='ENV_NAME') expected = ['py.test', '-n5', '--junitxml=ENV_LOG_DIR/junit-ENV_NAME.xml', 'hello', 'world'] assert reader.getargvlist('section', 'key')[0] == expected
def test_getdefault_environment_substitution(self, monkeypatch, newconfig): monkeypatch.setenv("KEY1", "hello") config = newconfig(""" [section] key1={env:KEY1} key2={env:KEY2} """) reader = IniReader(config._cfg) x = reader.getdefault("section", "key1") assert x == "hello" py.test.raises(tox.exception.ConfigError, 'reader.getdefault("section", "key2")')
def test_getdefault_fallback_sections(self, tmpdir, newconfig): config = newconfig(""" [mydefault] key2=value2 [section] key=value """) reader = IniReader(config._cfg, fallbacksections=['mydefault']) x = reader.getdefault("section", "key2") assert x == "value2" x = reader.getdefault("section", "key3") assert not x x = reader.getdefault("section", "key3", "world") assert x == "world"
def test_getdict(self, tmpdir, newconfig): config = newconfig(""" [section] key2= key1=item1 key2={item2} """) reader = IniReader(config._cfg) reader.addsubstitions(item1="not", item2="grr") x = reader.getdict("section", "key2") assert 'key1' in x assert 'key2' in x assert x['key1'] == 'item1' assert x['key2'] == 'grr'
def test_argvlist_multiline(self, tmpdir, newconfig): config = newconfig(""" [section] key2= cmd1 {item1} \ # a comment {item2} """) reader = IniReader(config._cfg) reader.addsubstitions(item1="with space", item2="grr") #py.test.raises(tox.exception.ConfigError, # "reader.getargvlist('section', 'key1')") assert reader.getargvlist('section', 'key1') == [] x = reader.getargvlist("section", "key2") assert x == [["cmd1", "with space", "grr"]]
def test_getbool(self, tmpdir, newconfig): config = newconfig(""" [section] key1=True key2=False key1a=true key2a=falsE key5=yes """) reader = IniReader(config._cfg) assert reader.getbool("section", "key1") == True assert reader.getbool("section", "key1a") == True assert reader.getbool("section", "key2") == False assert reader.getbool("section", "key2a") == False py.test.raises(KeyError, 'reader.getbool("section", "key3")') py.test.raises(tox.exception.ConfigError, 'reader.getbool("section", "key5")')
def test_missing_substitution(self, tmpdir, newconfig): config = newconfig(""" [mydefault] key2={xyz} """) reader = IniReader(config._cfg, fallbacksections=['mydefault']) py.test.raises(tox.exception.ConfigError, 'reader.getdefault("mydefault", "key2")')
def test_substition_with_multiple_words(self, newconfig): inisource = """ [section] key = py.test -n5 --junitxml={envlogdir}/junit-{envname}.xml [] """ config = newconfig(inisource) reader = IniReader(config._cfg) posargs = ['hello', 'world'] reader.addsubstitions(posargs, envlogdir='ENV_LOG_DIR', envname='ENV_NAME') expected = [ 'py.test', '-n5', '--junitxml=ENV_LOG_DIR/junit-ENV_NAME.xml', 'hello', 'world' ] assert reader.getargvlist('section', 'key')[0] == expected
def test_positional_arguments_are_only_replaced_when_standing_alone(self, tmpdir, newconfig): config = newconfig(""" [section] key= cmd0 [] cmd1 -m '[abc]' cmd2 -m '\'something\'' [] cmd3 something[]else """) reader = IniReader(config._cfg) posargs = ['hello', 'world'] reader.addsubstitions(posargs) argvlist = reader.getargvlist('section', 'key') assert argvlist[0] == ['cmd0'] + posargs assert argvlist[1] == ['cmd1', '-m', '[abc]'] assert argvlist[2] == ['cmd2', '-m', "something"] + posargs assert argvlist[3] == ['cmd3', 'something[]else']
def test_positional_arguments_are_only_replaced_when_standing_alone( self, tmpdir, newconfig): config = newconfig(""" [section] key= cmd0 [] cmd1 -m '[abc]' cmd2 -m '\'something\'' [] cmd3 something[]else """) reader = IniReader(config._cfg) posargs = ['hello', 'world'] reader.addsubstitions(posargs) argvlist = reader.getargvlist('section', 'key') assert argvlist[0] == ['cmd0'] + posargs assert argvlist[1] == ['cmd1', '-m', '[abc]'] assert argvlist[2] == ['cmd2', '-m', "something"] + posargs assert argvlist[3] == ['cmd3', 'something[]else']
def test_getdefault_substitution(self, tmpdir, newconfig): config = newconfig(""" [mydefault] key2={value2} [section] key={value} """) reader = IniReader(config._cfg, fallbacksections=['mydefault']) reader.addsubstitions(value="newvalue", value2="newvalue2") x = reader.getdefault("section", "key2") assert x == "newvalue2" x = reader.getdefault("section", "key3") assert not x x = reader.getdefault("section", "key3", "{value2}") assert x == "newvalue2"