On Mon, Apr 17, 2017 at 05:10:02PM +0700, Nguyễn Thái Ngọc Duy wrote: > diff --git a/t/helper/test-config.c b/t/helper/test-config.c > index 8e3ed6a76c..696d0a52fd 100644 > --- a/t/helper/test-config.c > +++ b/t/helper/test-config.c > @@ -84,6 +84,10 @@ int cmd_main(int argc, const char **argv) > struct config_set cs; > > if (argc == 3 && !strcmp(argv[1], "read_early_config")) { > + const char *cmdline_config = getenv("CMDL_CFG"); > + > + if (cmdline_config) > + git_config_push_parameter(cmdline_config); I think you can do without this hunk by just setting: GIT_CONFIG_PARAMETERS="'foo.bar=from-cmdline'" (note the single-quotes which must be there). See how t1308 does it. > +test_expect_success 'read config file in right order' ' > + echo "[test]source = home" >>.gitconfig && > + git init foo && > + ( > + cd foo && > + echo "[test]source = repo" >>.git/config && > + CMDL_CFG=test.source=cmdline test-config \ > + read_early_config test.source >actual && > + cat >expected <<-\EOF && > + home > + repo > + cmdline > + EOF > + test_cmp expected actual > + ) > +' This looks good (modulo the CMDL_CFG above). If we wanted to trigger it in a real-world test, we'd have to use pager config (since it's the only thing that uses early-config; alias lookup probably should do, but that's for another time). But I think this synthetic test is fine; it makes the output easy to verify. -Peff