You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
202 lines
3.9 KiB
202 lines
3.9 KiB
#!/bin/bash
|
|
|
|
source tests-common.sh
|
|
|
|
inherit git-r3
|
|
|
|
testdir=${pkg_root}/git
|
|
mkdir "${testdir}" || die "unable to mkdir testdir"
|
|
cd "${testdir}" || die "unable to cd to testdir"
|
|
|
|
EGIT3_STORE_DIR=store
|
|
mkdir "${EGIT3_STORE_DIR}" || die "unable to mkdir store"
|
|
|
|
test_file() {
|
|
local fn=${1}
|
|
local expect=${2}
|
|
|
|
if [[ ! -f ${fn} ]]; then
|
|
eerror "${fn} does not exist (not checked out?)"
|
|
else
|
|
local got=$(<"${fn}")
|
|
|
|
if [[ ${got} != ${expect} ]]; then
|
|
eerror "${fn}, expected: ${expect}, got: ${got}"
|
|
else
|
|
return 0
|
|
fi
|
|
fi
|
|
return 1
|
|
}
|
|
|
|
test_no_file() {
|
|
local fn=${1}
|
|
|
|
if [[ -f ${fn} ]]; then
|
|
eerror "${fn} exists (wtf?!)"
|
|
else
|
|
return 0
|
|
fi
|
|
return 1
|
|
}
|
|
|
|
test_repo_clean() {
|
|
local P=${P}_${FUNCNAME#test_}
|
|
|
|
(
|
|
mkdir repo
|
|
cd repo
|
|
git init -q
|
|
echo test > file
|
|
git add file
|
|
git commit -m 1 -q
|
|
echo other-text > file2
|
|
git add file2
|
|
git commit -m 2 -q
|
|
) || die "unable to prepare repo"
|
|
|
|
# we need to use an array to preserve whitespace
|
|
local EGIT_REPO_URI=(
|
|
"ext::git daemon --export-all --base-path=. --inetd %G/repo"
|
|
)
|
|
|
|
tbegin "fetching from a simple repo"
|
|
(
|
|
git-r3_src_unpack
|
|
test_file "${WORKDIR}/${P}/file" test && \
|
|
test_file "${WORKDIR}/${P}/file2" other-text
|
|
) &>fetch.log
|
|
|
|
eend ${?} || cat fetch.log
|
|
}
|
|
|
|
test_repo_revert() {
|
|
local P=${P}_${FUNCNAME#test_}
|
|
|
|
(
|
|
cd repo
|
|
git revert -n HEAD^
|
|
git commit -m r1 -q
|
|
) || die "unable to prepare repo"
|
|
|
|
# we need to use an array to preserve whitespace
|
|
local EGIT_REPO_URI=(
|
|
"ext::git daemon --export-all --base-path=. --inetd %G/repo"
|
|
)
|
|
|
|
tbegin "fetching revert"
|
|
(
|
|
git-r3_src_unpack
|
|
test_no_file "${WORKDIR}/${P}/file" && \
|
|
test_file "${WORKDIR}/${P}/file2" other-text
|
|
) &>fetch.log
|
|
|
|
eend ${?} || cat fetch.log
|
|
}
|
|
|
|
test_repo_branch() {
|
|
local P=${P}_${FUNCNAME#test_}
|
|
|
|
(
|
|
cd repo
|
|
git branch -q other-branch HEAD^
|
|
git checkout -q other-branch
|
|
echo one-more > file3
|
|
git add file3
|
|
git commit -m 3 -q
|
|
git checkout -q master
|
|
) || die "unable to prepare repo"
|
|
|
|
# we need to use an array to preserve whitespace
|
|
local EGIT_REPO_URI=(
|
|
"ext::git daemon --export-all --base-path=. --inetd %G/repo"
|
|
)
|
|
local EGIT_BRANCH=other-branch
|
|
|
|
tbegin "switching branches"
|
|
(
|
|
git-r3_src_unpack
|
|
test_file "${WORKDIR}/${P}/file" test && \
|
|
test_file "${WORKDIR}/${P}/file2" other-text && \
|
|
test_file "${WORKDIR}/${P}/file3" one-more
|
|
) &>fetch.log
|
|
|
|
eend ${?} || cat fetch.log
|
|
}
|
|
|
|
test_repo_merge() {
|
|
local P=${P}_${FUNCNAME#test_}
|
|
|
|
(
|
|
cd repo
|
|
git branch -q one-more-branch HEAD^
|
|
git checkout -q one-more-branch
|
|
echo foobarbaz > file3
|
|
git add file3
|
|
git commit -m 3b -q
|
|
git checkout -q master
|
|
git merge -m 4 -q one-more-branch
|
|
) || die "unable to prepare repo"
|
|
|
|
# we need to use an array to preserve whitespace
|
|
local EGIT_REPO_URI=(
|
|
"ext::git daemon --export-all --base-path=. --inetd %G/repo"
|
|
)
|
|
|
|
tbegin "fetching a merge commit"
|
|
(
|
|
git-r3_src_unpack
|
|
test_no_file "${WORKDIR}/${P}/file" && \
|
|
test_file "${WORKDIR}/${P}/file2" other-text && \
|
|
test_file "${WORKDIR}/${P}/file3" foobarbaz
|
|
) &>fetch.log
|
|
|
|
eend ${?} || cat fetch.log
|
|
}
|
|
|
|
test_repo_revert_merge() {
|
|
local P=${P}_${FUNCNAME#test_}
|
|
|
|
(
|
|
cd repo
|
|
git branch -q to-be-reverted
|
|
git checkout -q to-be-reverted
|
|
echo trrm > file3
|
|
git add file3
|
|
git commit -m 5b -q
|
|
git checkout -q master
|
|
echo trrm > file2
|
|
git add file2
|
|
git commit -m 5 -q
|
|
git merge -m 6 -q to-be-reverted
|
|
echo trrm > file
|
|
git add file
|
|
git commit -m 7 -q
|
|
git revert -m 1 -n HEAD^
|
|
git commit -m 7r -q
|
|
) || die "unable to prepare repo"
|
|
|
|
# we need to use an array to preserve whitespace
|
|
local EGIT_REPO_URI=(
|
|
"ext::git daemon --export-all --base-path=. --inetd %G/repo"
|
|
)
|
|
|
|
tbegin "fetching a revert of a merge commit"
|
|
(
|
|
git-r3_src_unpack
|
|
test_file "${WORKDIR}/${P}/file" trrm && \
|
|
test_file "${WORKDIR}/${P}/file2" trrm && \
|
|
test_file "${WORKDIR}/${P}/file3" foobarbaz
|
|
) &>fetch.log
|
|
|
|
eend ${?} || cat fetch.log
|
|
}
|
|
|
|
test_repo_clean
|
|
test_repo_revert
|
|
test_repo_branch
|
|
test_repo_merge
|
|
test_repo_revert_merge
|
|
|
|
texit
|