mirror of
https://git.proxmox.com/git/libgit2
synced 2025-07-09 17:49:27 +00:00
core::link test: clean up junction point name
This commit is contained in:
parent
80b01c8f26
commit
6b11eb51ee
@ -23,7 +23,7 @@ void test_core_link__cleanup(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef GIT_WIN32
|
#ifdef GIT_WIN32
|
||||||
static bool is_administrator(void)
|
static bool should_run(void)
|
||||||
{
|
{
|
||||||
static SID_IDENTIFIER_AUTHORITY authority = { SECURITY_NT_AUTHORITY };
|
static SID_IDENTIFIER_AUTHORITY authority = { SECURITY_NT_AUTHORITY };
|
||||||
PSID admin_sid;
|
PSID admin_sid;
|
||||||
@ -35,6 +35,11 @@ static bool is_administrator(void)
|
|||||||
|
|
||||||
return is_admin ? true : false;
|
return is_admin ? true : false;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
static bool should_run(void)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void do_symlink(const char *old, const char *new, int is_dir)
|
static void do_symlink(const char *old, const char *new, int is_dir)
|
||||||
@ -48,9 +53,6 @@ static void do_symlink(const char *old, const char *new, int is_dir)
|
|||||||
HMODULE module;
|
HMODULE module;
|
||||||
create_symlink_func pCreateSymbolicLink;
|
create_symlink_func pCreateSymbolicLink;
|
||||||
|
|
||||||
if (!is_administrator())
|
|
||||||
clar__skip();
|
|
||||||
|
|
||||||
cl_assert(module = GetModuleHandle("kernel32"));
|
cl_assert(module = GetModuleHandle("kernel32"));
|
||||||
cl_assert(pCreateSymbolicLink = (create_symlink_func)GetProcAddress(module, "CreateSymbolicLinkA"));
|
cl_assert(pCreateSymbolicLink = (create_symlink_func)GetProcAddress(module, "CreateSymbolicLinkA"));
|
||||||
|
|
||||||
@ -67,9 +69,6 @@ static void do_hardlink(const char *old, const char *new)
|
|||||||
HMODULE module;
|
HMODULE module;
|
||||||
create_hardlink_func pCreateHardLink;
|
create_hardlink_func pCreateHardLink;
|
||||||
|
|
||||||
if (!is_administrator())
|
|
||||||
clar__skip();
|
|
||||||
|
|
||||||
cl_assert(module = GetModuleHandle("kernel32"));
|
cl_assert(module = GetModuleHandle("kernel32"));
|
||||||
cl_assert(pCreateHardLink = (create_hardlink_func)GetProcAddress(module, "CreateHardLinkA"));
|
cl_assert(pCreateHardLink = (create_hardlink_func)GetProcAddress(module, "CreateHardLinkA"));
|
||||||
|
|
||||||
@ -147,6 +146,8 @@ static void do_junction(const char *old, const char *new)
|
|||||||
|
|
||||||
CloseHandle(handle);
|
CloseHandle(handle);
|
||||||
LocalFree(reparse_buf);
|
LocalFree(reparse_buf);
|
||||||
|
|
||||||
|
git_buf_free(&unparsed_buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void do_custom_reparse(const char *path)
|
static void do_custom_reparse(const char *path)
|
||||||
@ -235,6 +236,9 @@ void test_core_link__stat_symlink(void)
|
|||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
|
if (!should_run())
|
||||||
|
clar__skip();
|
||||||
|
|
||||||
cl_git_rewritefile("stat_target", "This is the target of a symbolic link.\n");
|
cl_git_rewritefile("stat_target", "This is the target of a symbolic link.\n");
|
||||||
do_symlink("stat_target", "stat_symlink", 0);
|
do_symlink("stat_target", "stat_symlink", 0);
|
||||||
|
|
||||||
@ -251,6 +255,9 @@ void test_core_link__stat_symlink_directory(void)
|
|||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
|
if (!should_run())
|
||||||
|
clar__skip();
|
||||||
|
|
||||||
p_mkdir("stat_dirtarget", 0777);
|
p_mkdir("stat_dirtarget", 0777);
|
||||||
do_symlink("stat_dirtarget", "stat_dirlink", 1);
|
do_symlink("stat_dirtarget", "stat_dirlink", 1);
|
||||||
|
|
||||||
@ -265,6 +272,9 @@ void test_core_link__stat_symlink_chain(void)
|
|||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
|
if (!should_run())
|
||||||
|
clar__skip();
|
||||||
|
|
||||||
cl_git_rewritefile("stat_final_target", "Final target of some symbolic links...\n");
|
cl_git_rewritefile("stat_final_target", "Final target of some symbolic links...\n");
|
||||||
do_symlink("stat_final_target", "stat_chain_3", 0);
|
do_symlink("stat_final_target", "stat_chain_3", 0);
|
||||||
do_symlink("stat_chain_3", "stat_chain_2", 0);
|
do_symlink("stat_chain_3", "stat_chain_2", 0);
|
||||||
@ -279,6 +289,9 @@ void test_core_link__stat_dangling_symlink(void)
|
|||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
|
if (!should_run())
|
||||||
|
clar__skip();
|
||||||
|
|
||||||
do_symlink("stat_nonexistent", "stat_dangling", 0);
|
do_symlink("stat_nonexistent", "stat_dangling", 0);
|
||||||
|
|
||||||
cl_must_fail(p_stat("stat_nonexistent", &st));
|
cl_must_fail(p_stat("stat_nonexistent", &st));
|
||||||
@ -289,6 +302,9 @@ void test_core_link__stat_dangling_symlink_directory(void)
|
|||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
|
if (!should_run())
|
||||||
|
clar__skip();
|
||||||
|
|
||||||
do_symlink("stat_nonexistent", "stat_dangling_dir", 1);
|
do_symlink("stat_nonexistent", "stat_dangling_dir", 1);
|
||||||
|
|
||||||
cl_must_fail(p_stat("stat_nonexistent_dir", &st));
|
cl_must_fail(p_stat("stat_nonexistent_dir", &st));
|
||||||
@ -300,6 +316,9 @@ void test_core_link__lstat_symlink(void)
|
|||||||
git_buf target_path = GIT_BUF_INIT;
|
git_buf target_path = GIT_BUF_INIT;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
|
if (!should_run())
|
||||||
|
clar__skip();
|
||||||
|
|
||||||
/* Windows always writes the canonical path as the link target, so
|
/* Windows always writes the canonical path as the link target, so
|
||||||
* write the full path on all platforms.
|
* write the full path on all platforms.
|
||||||
*/
|
*/
|
||||||
@ -324,6 +343,9 @@ void test_core_link__lstat_symlink_directory(void)
|
|||||||
git_buf target_path = GIT_BUF_INIT;
|
git_buf target_path = GIT_BUF_INIT;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
|
if (!should_run())
|
||||||
|
clar__skip();
|
||||||
|
|
||||||
git_buf_join(&target_path, '/', clar_sandbox_path(), "lstat_dirtarget");
|
git_buf_join(&target_path, '/', clar_sandbox_path(), "lstat_dirtarget");
|
||||||
|
|
||||||
p_mkdir("lstat_dirtarget", 0777);
|
p_mkdir("lstat_dirtarget", 0777);
|
||||||
@ -343,6 +365,9 @@ void test_core_link__lstat_dangling_symlink(void)
|
|||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
|
if (!should_run())
|
||||||
|
clar__skip();
|
||||||
|
|
||||||
do_symlink("lstat_nonexistent", "lstat_dangling", 0);
|
do_symlink("lstat_nonexistent", "lstat_dangling", 0);
|
||||||
|
|
||||||
cl_must_fail(p_lstat("lstat_nonexistent", &st));
|
cl_must_fail(p_lstat("lstat_nonexistent", &st));
|
||||||
@ -356,6 +381,9 @@ void test_core_link__lstat_dangling_symlink_directory(void)
|
|||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
|
if (!should_run())
|
||||||
|
clar__skip();
|
||||||
|
|
||||||
do_symlink("lstat_nonexistent", "lstat_dangling_dir", 1);
|
do_symlink("lstat_nonexistent", "lstat_dangling_dir", 1);
|
||||||
|
|
||||||
cl_must_fail(p_lstat("lstat_nonexistent", &st));
|
cl_must_fail(p_lstat("lstat_nonexistent", &st));
|
||||||
@ -454,6 +482,9 @@ void test_core_link__stat_hardlink(void)
|
|||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
|
if (!should_run())
|
||||||
|
clar__skip();
|
||||||
|
|
||||||
cl_git_rewritefile("stat_hardlink1", "This file has many names!\n");
|
cl_git_rewritefile("stat_hardlink1", "This file has many names!\n");
|
||||||
do_hardlink("stat_hardlink1", "stat_hardlink2");
|
do_hardlink("stat_hardlink1", "stat_hardlink2");
|
||||||
|
|
||||||
@ -470,6 +501,9 @@ void test_core_link__lstat_hardlink(void)
|
|||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
|
if (!should_run())
|
||||||
|
clar__skip();
|
||||||
|
|
||||||
cl_git_rewritefile("lstat_hardlink1", "This file has many names!\n");
|
cl_git_rewritefile("lstat_hardlink1", "This file has many names!\n");
|
||||||
do_hardlink("lstat_hardlink1", "lstat_hardlink2");
|
do_hardlink("lstat_hardlink1", "lstat_hardlink2");
|
||||||
|
|
||||||
@ -537,6 +571,9 @@ void test_core_link__readlink_symlink(void)
|
|||||||
int len;
|
int len;
|
||||||
char buf[2048];
|
char buf[2048];
|
||||||
|
|
||||||
|
if (!should_run())
|
||||||
|
clar__skip();
|
||||||
|
|
||||||
git_buf_join(&target_path, '/', clar_sandbox_path(), "readlink_target");
|
git_buf_join(&target_path, '/', clar_sandbox_path(), "readlink_target");
|
||||||
|
|
||||||
cl_git_rewritefile("readlink_target", "This is the target of a symlink\n");
|
cl_git_rewritefile("readlink_target", "This is the target of a symlink\n");
|
||||||
@ -558,6 +595,9 @@ void test_core_link__readlink_dangling(void)
|
|||||||
int len;
|
int len;
|
||||||
char buf[2048];
|
char buf[2048];
|
||||||
|
|
||||||
|
if (!should_run())
|
||||||
|
clar__skip();
|
||||||
|
|
||||||
git_buf_join(&target_path, '/', clar_sandbox_path(), "readlink_nonexistent");
|
git_buf_join(&target_path, '/', clar_sandbox_path(), "readlink_nonexistent");
|
||||||
|
|
||||||
do_symlink(git_buf_cstr(&target_path), "readlink_dangling", 0);
|
do_symlink(git_buf_cstr(&target_path), "readlink_dangling", 0);
|
||||||
@ -579,6 +619,9 @@ void test_core_link__readlink_multiple(void)
|
|||||||
int len;
|
int len;
|
||||||
char buf[2048];
|
char buf[2048];
|
||||||
|
|
||||||
|
if (!should_run())
|
||||||
|
clar__skip();
|
||||||
|
|
||||||
git_buf_join(&target_path, '/', clar_sandbox_path(), "readlink_final");
|
git_buf_join(&target_path, '/', clar_sandbox_path(), "readlink_final");
|
||||||
git_buf_join(&path3, '/', clar_sandbox_path(), "readlink_3");
|
git_buf_join(&path3, '/', clar_sandbox_path(), "readlink_3");
|
||||||
git_buf_join(&path2, '/', clar_sandbox_path(), "readlink_2");
|
git_buf_join(&path2, '/', clar_sandbox_path(), "readlink_2");
|
||||||
|
Loading…
Reference in New Issue
Block a user