mirror of
https://github.com/git/git.git
synced 2025-01-22 15:33:59 +08:00
129510a067
When 'checkout --to' functionality was moved to 'worktree add', tests were adapted
in f194b1ef6e
(tests: worktree: retrofit "checkout --to" tests for "worktree add",
2015-07-06).
The calls were changed to 'worktree add' in this test (then t7410), but the test
descriptions were not updated, keeping 'checkout' instead of using the new
terminology (linked worktrees).
Also, in the test each worktree is created in
$TRASH_DIRECTORY/<leading-directory>/main, where the name of <leading-directory>
carries some information about what behavior each test verifies. This directory
structure is not mandatory for the tests; the worktrees can live next to one
another in the trash directory.
Clarify the tests by using the right terminology, and remove the unnecessary
leading directories such that all superproject worktrees are directly next to one
another in the trash directory.
Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
58 lines
1.9 KiB
Bash
Executable File
58 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='Combination of submodules and multiple worktrees'
|
|
|
|
. ./test-lib.sh
|
|
|
|
base_path=$(pwd -P)
|
|
|
|
test_expect_success 'setup: create origin repos' '
|
|
git init origin/sub &&
|
|
test_commit -C origin/sub file1 &&
|
|
git init origin/main &&
|
|
git -C origin/main submodule add ../sub &&
|
|
git -C origin/main commit -m "add sub" &&
|
|
test_commit -C origin/sub "file1 updated" file1 file1updated file1updated &&
|
|
git -C origin/main/sub pull &&
|
|
git -C origin/main add sub &&
|
|
git -C origin/main commit -m "sub updated"
|
|
'
|
|
|
|
test_expect_success 'setup: clone superproject to create main worktree' '
|
|
git clone --recursive "$base_path/origin/main" main
|
|
'
|
|
|
|
rev1_hash_main=$(git --git-dir=origin/main/.git show --pretty=format:%h -q "HEAD~1")
|
|
rev1_hash_sub=$(git --git-dir=origin/sub/.git show --pretty=format:%h -q "HEAD~1")
|
|
|
|
test_expect_success 'add superproject worktree' '
|
|
git -C main worktree add "$base_path/worktree" "$rev1_hash_main"
|
|
'
|
|
|
|
test_expect_failure 'submodule is checked out just after worktree add' '
|
|
git -C worktree diff --submodule master"^!" >out &&
|
|
grep "file1 updated" out
|
|
'
|
|
|
|
test_expect_success 'add superproject worktree and initialize submodules' '
|
|
git -C main worktree add "$base_path/worktree-submodule-update" "$rev1_hash_main" &&
|
|
git -C worktree-submodule-update submodule update
|
|
'
|
|
|
|
test_expect_success 'submodule is checked out just after submodule update in linked worktree' '
|
|
git -C worktree-submodule-update diff --submodule master"^!" >out &&
|
|
grep "file1 updated" out
|
|
'
|
|
|
|
test_expect_success 'add superproject worktree and manually add submodule worktree' '
|
|
git -C main worktree add "$base_path/linked_submodule" "$rev1_hash_main" &&
|
|
git -C main/sub worktree add "$base_path/linked_submodule/sub" "$rev1_hash_sub"
|
|
'
|
|
|
|
test_expect_success 'submodule is checked out after manually adding submodule worktree' '
|
|
git -C linked_submodule diff --submodule master"^!" >out &&
|
|
grep "file1 updated" out
|
|
'
|
|
|
|
test_done
|