mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-14 05:53:59 +00:00
Always env_set_pwd after chdir in the fish tests
This avoids confusion between getcwd() and $PWD
This commit is contained in:
parent
1907323afc
commit
4138073a2f
1 changed files with 22 additions and 21 deletions
|
@ -178,6 +178,17 @@ static wcstring comma_join(const wcstring_list_t &lst)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Helper to chdir and then update $PWD */
|
||||||
|
static int chdir_set_pwd(const char *path)
|
||||||
|
{
|
||||||
|
int ret = chdir(path);
|
||||||
|
if (ret == 0)
|
||||||
|
{
|
||||||
|
env_set_pwd();
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
#define do_test(e) do { if (! (e)) err(L"Test failed on line %lu: %s", __LINE__, #e); } while (0)
|
#define do_test(e) do { if (! (e)) err(L"Test failed on line %lu: %s", __LINE__, #e); } while (0)
|
||||||
|
|
||||||
#define do_test1(e, msg) do { if (! (e)) err(L"Test failed on line %lu: %ls", __LINE__, (msg)); } while (0)
|
#define do_test1(e, msg) do { if (! (e)) err(L"Test failed on line %lu: %ls", __LINE__, (msg)); } while (0)
|
||||||
|
@ -1574,18 +1585,17 @@ static void test_expand()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chdir("/tmp/fish_expand_test"))
|
if (chdir_set_pwd("/tmp/fish_expand_test"))
|
||||||
{
|
{
|
||||||
err(L"chdir failed");
|
err(L"chdir failed");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
env_set_pwd();
|
|
||||||
|
|
||||||
expand_test(L"b/xx", EXPAND_FOR_COMPLETIONS | EXPAND_FUZZY_MATCH,
|
expand_test(L"b/xx", EXPAND_FOR_COMPLETIONS | EXPAND_FUZZY_MATCH,
|
||||||
L"bax/xxx", L"baz/xxx", wnull,
|
L"bax/xxx", L"baz/xxx", wnull,
|
||||||
L"Wrong fuzzy matching 5");
|
L"Wrong fuzzy matching 5");
|
||||||
|
|
||||||
if (chdir(saved_wd))
|
if (chdir_set_pwd(saved_wd))
|
||||||
{
|
{
|
||||||
err(L"chdir failed");
|
err(L"chdir failed");
|
||||||
}
|
}
|
||||||
|
@ -2181,7 +2191,8 @@ static void test_complete(void)
|
||||||
perror("getcwd");
|
perror("getcwd");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
if (chdir("/tmp/complete_test/")) err(L"chdir failed");
|
if (chdir_set_pwd("/tmp/complete_test/")) err(L"chdir failed");
|
||||||
|
|
||||||
complete(L"cat te", &completions, COMPLETION_REQUEST_DEFAULT, vars);
|
complete(L"cat te", &completions, COMPLETION_REQUEST_DEFAULT, vars);
|
||||||
do_test(completions.size() == 1);
|
do_test(completions.size() == 1);
|
||||||
do_test(completions.at(0).completion == L"stfile");
|
do_test(completions.at(0).completion == L"stfile");
|
||||||
|
@ -2233,7 +2244,7 @@ static void test_complete(void)
|
||||||
do_test(completions.empty());
|
do_test(completions.empty());
|
||||||
completions.clear();
|
completions.clear();
|
||||||
|
|
||||||
if (chdir(saved_wd)) err(L"chdir failed");
|
if (chdir_set_pwd(saved_wd)) err(L"chdir failed");
|
||||||
if (system("rm -Rf '/tmp/complete_test/'")) err(L"rm failed");
|
if (system("rm -Rf '/tmp/complete_test/'")) err(L"rm failed");
|
||||||
|
|
||||||
complete_set_variable_names(NULL);
|
complete_set_variable_names(NULL);
|
||||||
|
@ -2363,8 +2374,7 @@ static void test_autosuggest_suggest_special()
|
||||||
if (NULL == getcwd(saved_wd, sizeof saved_wd)) err(L"getcwd failed");
|
if (NULL == getcwd(saved_wd, sizeof saved_wd)) err(L"getcwd failed");
|
||||||
|
|
||||||
const wcstring wd = L"/tmp/autosuggest_test/";
|
const wcstring wd = L"/tmp/autosuggest_test/";
|
||||||
if (wchdir(wd)) err(L"chdir failed");
|
if (chdir_set_pwd(wcs2string(wd).c_str())) err(L"chdir failed");
|
||||||
env_set_pwd();
|
|
||||||
|
|
||||||
env_set(L"AUTOSUGGEST_TEST_LOC", wd.c_str(), ENV_LOCAL);
|
env_set(L"AUTOSUGGEST_TEST_LOC", wd.c_str(), ENV_LOCAL);
|
||||||
|
|
||||||
|
@ -2424,15 +2434,11 @@ static void test_autosuggest_suggest_special()
|
||||||
|
|
||||||
// Don't crash on ~ (2696)
|
// Don't crash on ~ (2696)
|
||||||
// note this was wd dependent, hence why we set it
|
// note this was wd dependent, hence why we set it
|
||||||
if (chdir("/tmp/autosuggest_test/")) err(L"chdir failed");
|
if (chdir_set_pwd("/tmp/autosuggest_test/")) err(L"chdir failed");
|
||||||
|
|
||||||
env_set_pwd();
|
|
||||||
|
|
||||||
if (system("mkdir -p '/tmp/autosuggest_test/~hahaha/path1/path2/'")) err(L"mkdir failed");
|
if (system("mkdir -p '/tmp/autosuggest_test/~hahaha/path1/path2/'")) err(L"mkdir failed");
|
||||||
perform_one_autosuggestion_cd_test(L"cd ~haha", vars, L"cd ~hahaha/path1/path2/", __LINE__);
|
perform_one_autosuggestion_cd_test(L"cd ~haha", vars, L"cd ~hahaha/path1/path2/", __LINE__);
|
||||||
if (chdir(saved_wd)) err(L"chdir failed");
|
if (chdir_set_pwd(saved_wd)) err(L"chdir failed");
|
||||||
|
|
||||||
env_set_pwd();
|
|
||||||
|
|
||||||
if (system("rm -Rf '/tmp/autosuggest_test/'")) err(L"rm failed");
|
if (system("rm -Rf '/tmp/autosuggest_test/'")) err(L"rm failed");
|
||||||
if (system("rm -Rf ~/test_autosuggest_suggest_special/")) err(L"rm failed");
|
if (system("rm -Rf ~/test_autosuggest_suggest_special/")) err(L"rm failed");
|
||||||
|
@ -2455,8 +2461,7 @@ static void test_autosuggest_suggest_special2()
|
||||||
if (NULL == getcwd(saved_wd, sizeof saved_wd)) err(L"getcwd failed");
|
if (NULL == getcwd(saved_wd, sizeof saved_wd)) err(L"getcwd failed");
|
||||||
|
|
||||||
const wcstring wd = L"/tmp/autosuggest_test/";
|
const wcstring wd = L"/tmp/autosuggest_test/";
|
||||||
if (wchdir(wd)) err(L"chdir failed");
|
if (chdir_set_pwd(wcs2string(wd).c_str())) err(L"chdir failed");
|
||||||
env_set_pwd();
|
|
||||||
|
|
||||||
env_set(L"AUTOSUGGEST_TEST_LOC", wd.c_str(), ENV_LOCAL);
|
env_set(L"AUTOSUGGEST_TEST_LOC", wd.c_str(), ENV_LOCAL);
|
||||||
|
|
||||||
|
@ -2516,15 +2521,11 @@ static void test_autosuggest_suggest_special2()
|
||||||
|
|
||||||
// Don't crash on ~ (2696)
|
// Don't crash on ~ (2696)
|
||||||
// note this was wd dependent, hence why we set it
|
// note this was wd dependent, hence why we set it
|
||||||
if (chdir("/tmp/autosuggest_test/")) err(L"chdir failed");
|
if (chdir_set_pwd("/tmp/autosuggest_test/")) err(L"chdir failed");
|
||||||
|
|
||||||
env_set_pwd();
|
|
||||||
|
|
||||||
if (system("mkdir -p '/tmp/autosuggest_test/~hahaha/path1/path2/'")) err(L"mkdir failed");
|
if (system("mkdir -p '/tmp/autosuggest_test/~hahaha/path1/path2/'")) err(L"mkdir failed");
|
||||||
perform_one_autosuggestion_special_test(L"cd ~haha", vars, L"cd ~hahaha/path1/path2/", __LINE__);
|
perform_one_autosuggestion_special_test(L"cd ~haha", vars, L"cd ~hahaha/path1/path2/", __LINE__);
|
||||||
if (chdir(saved_wd)) err(L"chdir failed");
|
if (chdir_set_pwd(saved_wd)) err(L"chdir failed");
|
||||||
|
|
||||||
env_set_pwd();
|
|
||||||
|
|
||||||
if (system("rm -Rf '/tmp/autosuggest_test/'")) err(L"rm failed");
|
if (system("rm -Rf '/tmp/autosuggest_test/'")) err(L"rm failed");
|
||||||
if (system("rm -Rf ~/test_autosuggest_suggest_special/")) err(L"rm failed");
|
if (system("rm -Rf ~/test_autosuggest_suggest_special/")) err(L"rm failed");
|
||||||
|
|
Loading…
Reference in a new issue