Branch Coverage

deps/libgit2/src/worktree.c
Criterion Covered Total %
branch 123 236 52.1


line true false branch
21 0 12 if (git_buf_sets(&buf, dir) < 0)
25 10 0 && git_path_contains_file(&buf, "gitdir")
26 10 2 && git_path_contains_file(&buf, "HEAD");
10 0 && git_path_contains_file(&buf, "HEAD");
40 20 0 assert(wts && repo);
0 20 assert(wts && repo);
45 0 20 if ((error = git_buf_printf(&path, "%s/worktrees/", repo->commondir)) < 0)
47 2 18 if (!git_path_exists(path.ptr) || git_path_is_empty_dir(path.ptr))
2 0 if (!git_path_exists(path.ptr) || git_path_is_empty_dir(path.ptr))
49 0 2 if ((error = git_path_dirload(&worktrees, path.ptr, path.size, 0x0)) < 0)
54 4 2 git_vector_foreach(&worktrees, i, worktree) {
58 0 4 if (!is_worktree_dir(path.ptr)) {
76 71 0 assert(base && file);
0 71 assert(base && file);
78 0 71 if (git_buf_joinpath(&path, base, file) < 0)
80 58 13 if (git_futils_readbuffer(&buf, path.ptr) < 0)
86 13 0 if (!git_path_is_relative(buf.ptr))
89 0 0 if (git_buf_sets(&path, base) < 0)
91 0 0 if (git_path_apply_relative(&path, buf.ptr) < 0)
109 6 0 assert(base && file && buf);
6 0 assert(base && file && buf);
0 6 assert(base && file && buf);
111 0 6 if ((err = git_buf_joinpath(&path, base, file)) < 0)
114 0 6 if ((err = git_futils_writebuffer(buf, path.ptr, O_CREAT|O_EXCL|O_WRONLY, 0644)) < 0)
129 1 4 if (!is_worktree_dir(dir)) {
134 0 4 if ((wt = git__calloc(1, sizeof(*wt))) == NULL) {
140 4 0 (wt->commondir_path = git_worktree__read_link(dir, "commondir")) == NULL ||
141 4 0 (wt->gitlink_path = git_worktree__read_link(dir, "gitdir")) == NULL ||
148 0 4 if ((error = git_path_prettify_dir(&gitdir, dir, NULL)) < 0)
152 0 4 if ((error = git_worktree_is_locked(NULL, wt)) < 0)
160 1 4 if (error)
173 5 0 assert(repo && name);
0 5 assert(repo && name);
177 0 5 if ((error = git_buf_printf(&path, "%s/worktrees/%s", repo->commondir, name)) < 0)
180 1 4 if ((error = (open_worktree_dir(out, git_repository_workdir(repo), path.ptr, name))) < 0)
186 1 4 if (error)
199 0 0 if (!git_repository_is_worktree(repo)) {
208 0 0 if ((error = git_path_prettify_dir(&parent, "..", commondir)) < 0)
214 0 0 if ((error = open_worktree_dir(out, parent.ptr, gitdir, name)) < 0)
226 20 4 if (!wt)
240 0 3 assert(wt);
242 1 2 if (!is_worktree_dir(wt->gitdir_path)) {
249 2 0 if (wt->parent_path && !git_path_exists(wt->parent_path)) {
0 2 if (wt->parent_path && !git_path_exists(wt->parent_path)) {
256 0 2 if (!git_path_exists(wt->commondir_path)) {
269 0 0 GIT_INIT_STRUCTURE_FROM_TEMPLATE(opts, version,
294 0 2 GIT_ERROR_CHECK_VERSION(
297 0 2 if (opts)
300 2 0 assert(out && repo && name && worktree);
2 0 assert(out && repo && name && worktree);
2 0 assert(out && repo && name && worktree);
0 2 assert(out && repo && name && worktree);
304 0 2 if (wtopts.ref) {
305 0 0 if (!git_reference_is_branch(wtopts.ref)) {
311 0 0 if (git_branch_is_checked_out(wtopts.ref)) {
319 0 2 if ((err = git_buf_joinpath(&gitdir, repo->commondir, "worktrees")) < 0)
321 1 1 if (!git_path_exists(gitdir.ptr))
322 0 1 if ((err = git_futils_mkdir(gitdir.ptr, 0755, GIT_MKDIR_EXCL)) < 0)
324 0 2 if ((err = git_buf_joinpath(&gitdir, gitdir.ptr, name)) < 0)
326 0 2 if ((err = git_futils_mkdir(gitdir.ptr, 0755, GIT_MKDIR_EXCL)) < 0)
328 0 2 if ((err = git_path_prettify_dir(&gitdir, gitdir.ptr, NULL)) < 0)
332 0 2 if ((err = git_futils_mkdir(worktree, 0755, GIT_MKDIR_EXCL)) < 0)
334 0 2 if ((err = git_path_prettify_dir(&wddir, worktree, NULL)) < 0)
337 0 2 if (wtopts.lock) {
340 0 0 if ((err = git_buf_joinpath(&buf, gitdir.ptr, "locked")) < 0)
343 0 0 if ((fd = p_creat(buf.ptr, 0644)) < 0) {
353 0 2 if ((err = git_buf_printf(&buf, "gitdir: %s\n", gitdir.ptr)) < 0)
355 0 2 if ((err = write_wtfile(wddir.ptr, ".git", &buf)) < 0)
359 2 0 if ((err = git_path_prettify_dir(&buf, repo->commondir, NULL) < 0)
360 2 0 || (err = git_buf_putc(&buf, '\n')) < 0
361 2 0 || (err = write_wtfile(gitdir.ptr, "commondir", &buf)) < 0)
363 2 0 if ((err = git_buf_joinpath(&buf, wddir.ptr, ".git")) < 0
364 2 0 || (err = git_buf_putc(&buf, '\n')) < 0
365 2 0 || (err = write_wtfile(gitdir.ptr, "gitdir", &buf)) < 0)
369 0 2 if (wtopts.ref) {
370 0 0 if ((err = git_reference_dup(&ref, wtopts.ref)) < 0)
373 0 2 if ((err = git_repository_head(&head, repo)) < 0)
375 0 2 if ((err = git_commit_lookup(&commit, repo, &head->target.oid)) < 0)
377 0 2 if ((err = git_branch_create(&ref, repo, name, commit, false)) < 0)
382 0 2 if ((err = git_repository_create_head(gitdir.ptr, git_reference_name(ref))) < 0)
384 0 2 if ((err = git_repository_open(&wt, wddir.ptr)) < 0)
389 0 2 if ((err = git_checkout_head(wt, &coopts)) < 0)
393 0 2 if ((err = git_worktree_lookup(out, repo, name)) < 0)
413 0 3 assert(wt);
415 0 3 if ((error = git_worktree_is_locked(NULL, wt)) < 0)
417 1 2 if (error) {
422 0 2 if ((error = git_buf_joinpath(&path, wt->gitdir_path, "locked")) < 0)
425 2 0 if (reason)
428 0 2 if ((error = git_futils_writebuffer(&buf, path.ptr, O_CREAT|O_EXCL|O_WRONLY, 0644)) < 0)
444 0 1 assert(wt);
446 0 1 if ((error = git_worktree_is_locked(NULL, wt)) < 0)
448 0 1 if (!error)
451 0 1 if (git_buf_joinpath(&path, wt->gitdir_path, "locked") < 0)
454 0 1 if (p_unlink(path.ptr) != 0) {
471 0 14 assert(wt);
473 6 8 if (reason)
476 0 14 if ((error = git_buf_joinpath(&path, wt->gitdir_path, "locked")) < 0)
479 4 10 if (locked && reason &&
2 2 if (locked && reason &&
0 2 if (locked && reason &&
492 0 2 assert(wt);
498 0 2 assert(wt);
506 0 0 GIT_INIT_STRUCTURE_FROM_TEMPLATE(opts, version,
524 0 6 GIT_ERROR_CHECK_VERSION(
528 6 0 if (opts)
531 3 3 if ((popts.flags & GIT_WORKTREE_PRUNE_LOCKED) == 0) {
535 0 3 if ((error = git_worktree_is_locked(&reason, wt)) < 0)
538 1 2 if (error) {
539 0 1 if (!reason.size)
564 0 2 GIT_ERROR_CHECK_VERSION(
568 2 0 if (opts)
571 0 2 if (!git_worktree_is_prunable(wt, &popts)) {
577 0 2 if ((err = git_buf_printf(&path, "%s/worktrees/%s", wt->commondir_path, wt->name)) < 0)
579 0 2 if (!git_path_exists(path.ptr))
585 0 2 if ((err = git_futils_rmdir_r(path.ptr, NULL, GIT_RMDIR_REMOVE_FILES)) < 0)
596 0 2 if ((wtpath = git_path_dirname(wt->gitlink_path)) == NULL)
599 0 2 if (!git_path_exists(path.ptr))
605 0 2 if ((err = git_futils_rmdir_r(path.ptr, NULL, GIT_RMDIR_REMOVE_FILES)) < 0)