Remove the Vagrant-based tests
This commit is contained in:
parent
d055802a66
commit
7a586aa4c5
62 changed files with 0 additions and 2057 deletions
|
@ -1,5 +0,0 @@
|
||||||
[Vagrantfile]
|
|
||||||
indent_size = 2
|
|
||||||
|
|
||||||
[{test,test_travis}]
|
|
||||||
indent_size = 4
|
|
2
test/.gitignore
vendored
2
test/.gitignore
vendored
|
@ -1,2 +0,0 @@
|
||||||
.vagrant/
|
|
||||||
*.log
|
|
|
@ -1,86 +0,0 @@
|
||||||
Testing
|
|
||||||
=======
|
|
||||||
|
|
||||||
Dotbot testing code uses [Vagrant] to run all tests inside a virtual machine to
|
|
||||||
have tests be completely isolated from the host machine. Specifically, you
|
|
||||||
will need both:
|
|
||||||
|
|
||||||
- [VirtualBox]
|
|
||||||
- [Vagrant]
|
|
||||||
|
|
||||||
Install Dotbot dependencies
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
Ensure you have updated the `dotbot` submodule dependencies, on the host machine:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git submodule sync --quiet --recursive
|
|
||||||
git submodule update --init --recursive
|
|
||||||
```
|
|
||||||
Install Vagrant
|
|
||||||
---------------
|
|
||||||
|
|
||||||
### Debian-based distributions
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo apt install vagrant virtualbox
|
|
||||||
```
|
|
||||||
|
|
||||||
### macOS
|
|
||||||
|
|
||||||
You can download those directly from the above URLs, or via some MacOS package managers.
|
|
||||||
e.g. using [HomeBrew](https://brew.sh/):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
brew cask install virtualbox
|
|
||||||
brew cask install vagrant
|
|
||||||
# optional, adding menu-bar support:
|
|
||||||
brew cask install vagrant-manager
|
|
||||||
```
|
|
||||||
|
|
||||||
Running the Tests
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
Before running the tests, you must start and `ssh` into the VM:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
vagrant up
|
|
||||||
vagrant ssh
|
|
||||||
```
|
|
||||||
|
|
||||||
All remaining commands are run inside the VM.
|
|
||||||
|
|
||||||
First, you must install a version of Python to test against, using:
|
|
||||||
|
|
||||||
pyenv install -s {version}
|
|
||||||
|
|
||||||
You can choose any version you like, e.g. `3.8.1`. It isn't particularly
|
|
||||||
important to test against all supported versions of Python in the VM, because
|
|
||||||
they will be tested by CI. Once you've installed a specific version of Python,
|
|
||||||
activate it with:
|
|
||||||
|
|
||||||
pyenv global {version}
|
|
||||||
|
|
||||||
The VM mounts your host's Dotbot directory in `/dotbot` as read-only, allowing
|
|
||||||
you to make edits on your host machine. Run the entire test suite by:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd /dotbot/test
|
|
||||||
./test
|
|
||||||
```
|
|
||||||
|
|
||||||
Selected tests can be run by passing paths to the tests as arguments, e.g.:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./test tests/create.bash tests/defaults.bash
|
|
||||||
```
|
|
||||||
|
|
||||||
To debug tests, you can run the test driver with the `--debug` (or `-d` short
|
|
||||||
form) flag, e.g. `./test --debug tests/link-if.bash`. This will enable printing
|
|
||||||
stdout/stderr.
|
|
||||||
|
|
||||||
When finished with testing, it is good to shut down the virtual machine by
|
|
||||||
running `vagrant halt`.
|
|
||||||
|
|
||||||
[VirtualBox]: https://www.virtualbox.org/
|
|
||||||
[Vagrant]: https://www.vagrantup.com/
|
|
28
test/Vagrantfile
vendored
28
test/Vagrantfile
vendored
|
@ -1,28 +0,0 @@
|
||||||
Vagrant.configure(2) do |config|
|
|
||||||
config.vm.box = 'ubuntu/jammy64'
|
|
||||||
|
|
||||||
config.vm.synced_folder "..", "/dotbot", mount_options: ["ro"]
|
|
||||||
|
|
||||||
# disable default synced folder
|
|
||||||
config.vm.synced_folder ".", "/vagrant", disabled: true
|
|
||||||
|
|
||||||
# install packages
|
|
||||||
config.vm.provision "shell", inline: <<-EOS
|
|
||||||
apt-get -y update
|
|
||||||
apt-get install -y git make build-essential libssl-dev zlib1g-dev \
|
|
||||||
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
|
|
||||||
libncurses5-dev
|
|
||||||
EOS
|
|
||||||
|
|
||||||
# install pyenv
|
|
||||||
config.vm.provision "shell", privileged: false, inline: <<-EOS
|
|
||||||
rm -rf ~/.pyenv
|
|
||||||
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
|
|
||||||
cat <<-'PYENV' > ~/.bashrc
|
|
||||||
export PYENV_ROOT="$HOME/.pyenv"
|
|
||||||
export PATH="$PYENV_ROOT/bin:$PATH"
|
|
||||||
eval "$(pyenv init --path)"
|
|
||||||
eval "$(pyenv init -)"
|
|
||||||
PYENV
|
|
||||||
EOS
|
|
||||||
end
|
|
|
@ -1,99 +0,0 @@
|
||||||
red() {
|
|
||||||
if [ -t 1 ]; then
|
|
||||||
printf "\033[31m%s\033[0m\n" "$*"
|
|
||||||
else
|
|
||||||
printf "%s\n" "$*"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
green() {
|
|
||||||
if [ -t 1 ]; then
|
|
||||||
printf "\033[32m%s\033[0m\n" "$*"
|
|
||||||
else
|
|
||||||
printf "%s\n" "$*"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
yellow() {
|
|
||||||
if [ -t 1 ]; then
|
|
||||||
printf "\033[33m%s\033[0m\n" "$*"
|
|
||||||
else
|
|
||||||
printf "%s\n" "$*"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
check_env() {
|
|
||||||
if [[ "$(whoami)" != "vagrant" && "${CI}" != true ]]; then
|
|
||||||
die "tests must be run inside Vagrant or CI"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanup() {
|
|
||||||
rm -rf ~/fakehome
|
|
||||||
mkdir -p ~/fakehome
|
|
||||||
}
|
|
||||||
|
|
||||||
initialize() {
|
|
||||||
echo "initializing."
|
|
||||||
tests_run=0
|
|
||||||
tests_passed=0
|
|
||||||
tests_failed=0
|
|
||||||
tests_skipped=0
|
|
||||||
tests_total="${1}"
|
|
||||||
local plural="" && [ "${tests_total}" -gt 1 ] && plural="s"
|
|
||||||
printf -- "running %d test%s...\n\n" "${tests_total}" "${plural}"
|
|
||||||
}
|
|
||||||
|
|
||||||
pass() {
|
|
||||||
tests_passed=$((tests_passed + 1))
|
|
||||||
green "-> ok."
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
fail() {
|
|
||||||
tests_failed=$((tests_failed + 1))
|
|
||||||
red "-> fail!"
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
skip() {
|
|
||||||
tests_skipped=$((tests_skipped + 1))
|
|
||||||
yellow "-> skipped."
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
run_test() {
|
|
||||||
tests_run=$((tests_run + 1))
|
|
||||||
printf '[%d/%d] (%s)\n' "${tests_run}" "${tests_total}" "${1}"
|
|
||||||
cleanup
|
|
||||||
if (cd "${BASEDIR}/test/tests" && HOME=~/fakehome DEBUG=${2} DOTBOT_TEST=true bash "${1}"); then
|
|
||||||
pass
|
|
||||||
elif [ $? -eq 42 ]; then
|
|
||||||
skip
|
|
||||||
else
|
|
||||||
fail
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
report() {
|
|
||||||
printf -- "test report\n"
|
|
||||||
printf -- "-----------\n"
|
|
||||||
printf -- "- %3d run\n" ${tests_run}
|
|
||||||
printf -- "- %3d passed\n" ${tests_passed}
|
|
||||||
printf -- "- %3d skipped\n" ${tests_skipped}
|
|
||||||
printf -- "- %3d failed\n" ${tests_failed}
|
|
||||||
if [ ${tests_failed} -gt 0 ]; then
|
|
||||||
red "==> FAIL! "
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
green "==> PASS. "
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
die() {
|
|
||||||
>&2 echo $@
|
|
||||||
>&2 echo "terminating..."
|
|
||||||
exit 1
|
|
||||||
}
|
|
53
test/test
53
test/test
|
@ -1,53 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
export BASEDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
||||||
cd "${BASEDIR}/test"
|
|
||||||
. "./driver-lib.bash"
|
|
||||||
|
|
||||||
date_stamp="$(date --rfc-3339=ns)"
|
|
||||||
start="$(date +%s)"
|
|
||||||
|
|
||||||
check_env
|
|
||||||
|
|
||||||
# parse flags; must come before positional arguments
|
|
||||||
POSITIONAL=()
|
|
||||||
DEBUG=false
|
|
||||||
while [[ $# -gt 0 ]]; do
|
|
||||||
case $1 in
|
|
||||||
-d|--debug)
|
|
||||||
DEBUG=true
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
POSITIONAL+=("$1")
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
set -- "${POSITIONAL[@]}" # restore positional arguments
|
|
||||||
|
|
||||||
declare -a tests=()
|
|
||||||
|
|
||||||
if [ $# -eq 0 ]; then
|
|
||||||
while read file; do
|
|
||||||
tests+=("${file}")
|
|
||||||
done < <(find tests -type f -name '*.bash' | sort)
|
|
||||||
else
|
|
||||||
tests=("$@")
|
|
||||||
fi
|
|
||||||
|
|
||||||
initialize "${#tests[@]}"
|
|
||||||
|
|
||||||
for file in "${tests[@]}"; do
|
|
||||||
run_test "$(basename "${file}")" "${DEBUG}"
|
|
||||||
done
|
|
||||||
|
|
||||||
if report; then
|
|
||||||
ret=0
|
|
||||||
else
|
|
||||||
ret=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "(tests run in $(($(date +%s) - start)) seconds)"
|
|
||||||
exit ${ret}
|
|
|
@ -1,76 +0,0 @@
|
||||||
DOTBOT_EXEC="${BASEDIR}/bin/dotbot"
|
|
||||||
DOTFILES="${HOME}/dotfiles"
|
|
||||||
INSTALL_CONF='install.conf.yaml'
|
|
||||||
INSTALL_CONF_JSON='install.conf.json'
|
|
||||||
|
|
||||||
test_run_() {
|
|
||||||
if ! ${DEBUG}; then
|
|
||||||
(eval "$*") >/dev/null 2>&1
|
|
||||||
else
|
|
||||||
(eval "$*")
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
test_expect_success() {
|
|
||||||
local tag=${1} && shift
|
|
||||||
if ! test_run_ "$@"; then
|
|
||||||
>&2 echo "- ${tag} failed."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
test_expect_failure() {
|
|
||||||
local tag=${1} && shift
|
|
||||||
if test_run_ "$@"; then
|
|
||||||
>&2 echo "- ${tag} failed."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
skip_tests() {
|
|
||||||
# exit with special exit code picked up by driver-lib.bash
|
|
||||||
exit 42
|
|
||||||
}
|
|
||||||
|
|
||||||
check_env() {
|
|
||||||
if [ "${DOTBOT_TEST}" != "true" ]; then
|
|
||||||
>&2 echo "test must be run by test driver"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# run comparison check on python version; args:
|
|
||||||
# $1 - comparison operator (e.g. '>=')
|
|
||||||
# $2 - version number, to be passed to python (e.g. '3', '3.5', '3.6.4')
|
|
||||||
# status code will reflect if comparison is true/false
|
|
||||||
# e.g. `check_python_version '>=' 3.5`
|
|
||||||
check_python_version() {
|
|
||||||
check="$1"
|
|
||||||
version="$(echo "$2" | tr . , )"
|
|
||||||
# this call to just `python` will work in the Vagrant-based testing VM
|
|
||||||
# because `pyenv` will always create a link to the "right" version.
|
|
||||||
python -c "import sys; exit( not (sys.version_info ${check} (${version})) )"
|
|
||||||
}
|
|
||||||
|
|
||||||
initialize() {
|
|
||||||
check_env
|
|
||||||
echo "${test_description}"
|
|
||||||
mkdir -p "${DOTFILES}"
|
|
||||||
cd
|
|
||||||
}
|
|
||||||
|
|
||||||
run_dotbot() {
|
|
||||||
(
|
|
||||||
cat > "${DOTFILES}/${INSTALL_CONF}"
|
|
||||||
${DOTBOT_EXEC} -c "${DOTFILES}/${INSTALL_CONF}" "${@}"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
run_dotbot_json() {
|
|
||||||
(
|
|
||||||
cat > "${DOTFILES}/${INSTALL_CONF_JSON}"
|
|
||||||
${DOTBOT_EXEC} -c "${DOTFILES}/${INSTALL_CONF_JSON}" "${@}"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
initialize
|
|
|
@ -1,19 +0,0 @@
|
||||||
test_description='clean uses default unless overridden'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
ln -s /nowhere ~/.g
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- clean:
|
|
||||||
~/nonexistent:
|
|
||||||
force: true
|
|
||||||
~/:
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
test -h ~/.g
|
|
||||||
'
|
|
|
@ -1,16 +0,0 @@
|
||||||
test_description='clean expands environment variables'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
ln -s ${DOTFILES}/f ~/.f
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- clean: ["\$HOME"]
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
! test -h ~/.f
|
|
||||||
'
|
|
|
@ -1,19 +0,0 @@
|
||||||
test_description='clean deletes links to missing files'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
touch ${DOTFILES}/f &&
|
|
||||||
ln -s ${DOTFILES}/f ~/.f &&
|
|
||||||
ln -s ${DOTFILES}/g ~/.g
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- clean: ["~"]
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
test -f ~/.f &&
|
|
||||||
! test -h ~/.g
|
|
||||||
'
|
|
|
@ -1,8 +0,0 @@
|
||||||
test_description='clean ignores nonexistent directories'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- clean: ["~", "~/fake"]
|
|
||||||
EOF
|
|
||||||
'
|
|
|
@ -1,18 +0,0 @@
|
||||||
test_description='clean forced to remove files linking outside dotfiles directory'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
ln -s /nowhere ~/.g
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- clean:
|
|
||||||
~/:
|
|
||||||
force: true
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
! test -h ~/.g
|
|
||||||
'
|
|
|
@ -1,18 +0,0 @@
|
||||||
test_description='clean ignores files linking outside dotfiles directory'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
ln -s ${DOTFILES}/f ~/.f &&
|
|
||||||
ln -s ~/g ~/.g
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- clean: ["~"]
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
! test -h ~/.f &&
|
|
||||||
test -h ~/.g
|
|
||||||
'
|
|
|
@ -1,34 +0,0 @@
|
||||||
test_description='clean removes recursively'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
mkdir -p ~/a/b
|
|
||||||
ln -s /nowhere ~/c
|
|
||||||
ln -s /nowhere ~/a/d
|
|
||||||
ln -s /nowhere ~/a/b/e
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- clean:
|
|
||||||
~/:
|
|
||||||
force: true
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
! test -h ~/c && test -h ~/a/d && test -h ~/a/b/e
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 2' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- clean:
|
|
||||||
~/:
|
|
||||||
force: true
|
|
||||||
recursive: true
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test 2' '
|
|
||||||
! test -h ~/a/d && ! test -h ~/a/b/e
|
|
||||||
'
|
|
|
@ -1,8 +0,0 @@
|
||||||
test_description='blank config allowed'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
[]
|
|
||||||
EOF
|
|
||||||
'
|
|
|
@ -1,7 +0,0 @@
|
||||||
test_description='empty config allowed'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
EOF
|
|
||||||
'
|
|
|
@ -1,20 +0,0 @@
|
||||||
test_description='json config with tabs allowed'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "grape" > ${DOTFILES}/h
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot_json <<EOF
|
|
||||||
[{
|
|
||||||
"link": {
|
|
||||||
"~/.i": "h"
|
|
||||||
}
|
|
||||||
}]
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "grape" ~/.i
|
|
||||||
'
|
|
|
@ -1,20 +0,0 @@
|
||||||
test_description='json config allowed'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "grape" > ${DOTFILES}/h
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot_json <<EOF
|
|
||||||
[{
|
|
||||||
"link": {
|
|
||||||
"~/.i": "h"
|
|
||||||
}
|
|
||||||
}]
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "grape" ~/.i
|
|
||||||
'
|
|
|
@ -1,26 +0,0 @@
|
||||||
test_description='create mode'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- defaults:
|
|
||||||
create:
|
|
||||||
mode: 0755
|
|
||||||
- create:
|
|
||||||
- ~/downloads
|
|
||||||
- ~/.vim/undo-history
|
|
||||||
- create:
|
|
||||||
~/.ssh:
|
|
||||||
mode: 0700
|
|
||||||
~/projects:
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
[ -d ~/downloads ] &&
|
|
||||||
[ -d ~/.vim/undo-history ] &&
|
|
||||||
[ -d ~/.ssh ] &&
|
|
||||||
[ -d ~/projects ] &&
|
|
||||||
[ "$(stat -c %a ~/.ssh)" = "700" ] &&
|
|
||||||
[ "$(stat -c %a ~/downloads)" = "755" ]
|
|
||||||
'
|
|
|
@ -1,23 +0,0 @@
|
||||||
test_description='create folders'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- create:
|
|
||||||
- ~/somedir
|
|
||||||
- ~/nested/somedir
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
[ -d ~/somedir ] &&
|
|
||||||
[ -d ~/nested/somedir ]
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 2' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- create:
|
|
||||||
- ~/somedir
|
|
||||||
- ~/nested/somedir
|
|
||||||
EOF
|
|
||||||
'
|
|
|
@ -1,59 +0,0 @@
|
||||||
test_description='defaults setting works'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "apple" > ${DOTFILES}/f &&
|
|
||||||
echo "grape" > ~/f &&
|
|
||||||
ln -s ~/f ~/.f &&
|
|
||||||
ln -s /nowhere ~/.g
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_failure 'run-fail' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/.f: f
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_failure 'test-fail' '
|
|
||||||
grep "apple" ~/.f
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
relink: true
|
|
||||||
|
|
||||||
- link:
|
|
||||||
~/.f: f
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "apple" ~/.f
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run-fail 2' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- clean: ["~"]
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_failure 'test-fail 2' '
|
|
||||||
! test -h ~/.g
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 2' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- defaults:
|
|
||||||
clean:
|
|
||||||
force: true
|
|
||||||
|
|
||||||
- clean: ["~"]
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test 2' '
|
|
||||||
! test -h ~/.g
|
|
||||||
'
|
|
|
@ -1,21 +0,0 @@
|
||||||
test_description='--except with multiple arguments'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
ln -s ${DOTFILES}/nonexistent ~/bad && touch ${DOTFILES}/y
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot --except clean shell <<EOF
|
|
||||||
- clean: ["~"]
|
|
||||||
- shell:
|
|
||||||
- echo "x" > ~/x
|
|
||||||
- link:
|
|
||||||
~/y: y
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
[ "$(readlink ~/bad | cut -d/ -f5-)" = "dotfiles/nonexistent" ] &&
|
|
||||||
! test -f ~/x && test -f ~/y
|
|
||||||
'
|
|
|
@ -1,32 +0,0 @@
|
||||||
test_description='--except'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "apple" > ${DOTFILES}/x
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot --except link <<EOF
|
|
||||||
- shell:
|
|
||||||
- echo "pear" > ~/y
|
|
||||||
- link:
|
|
||||||
~/x: x
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "pear" ~/y && ! test -f ~/x
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 2' '
|
|
||||||
run_dotbot --except shell <<EOF
|
|
||||||
- shell:
|
|
||||||
- echo "pear" > ~/z
|
|
||||||
- link:
|
|
||||||
~/x: x
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "apple" ~/x && ! test -f ~/z
|
|
||||||
'
|
|
|
@ -1,32 +0,0 @@
|
||||||
test_description='test exit on failure'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "apple" > ${DOTFILES}/f1 &&
|
|
||||||
echo "orange" > ${DOTFILES}/f2 &&
|
|
||||||
echo "pineapple" > ${DOTFILES}/f3
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_failure 'run_case1' '
|
|
||||||
run_dotbot -x <<EOF
|
|
||||||
- shell:
|
|
||||||
- "this_is_not_a_command"
|
|
||||||
- link:
|
|
||||||
~/f1:
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_failure 'run_case2' '
|
|
||||||
run_dotbot -x <<EOF
|
|
||||||
- link:
|
|
||||||
~/f2:
|
|
||||||
- shell:
|
|
||||||
- "this_is_not_a_command"
|
|
||||||
- link:
|
|
||||||
~/f3:
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
[[ ! -f ~/f1 ]] && [[ -f ~/f2 ]] && [[ ! -f ~/f3 ]]
|
|
||||||
'
|
|
|
@ -1,60 +0,0 @@
|
||||||
test_description='can find python executable with different names'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
# the test machine needs to have a binary named `python`
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
mkdir ~/tmp_bin &&
|
|
||||||
(
|
|
||||||
IFS=:
|
|
||||||
for p in $PATH; do
|
|
||||||
if [ -d $p ]; then
|
|
||||||
find $p -maxdepth 1 -mindepth 1 -exec sh -c \
|
|
||||||
'"'"'ln -sf {} $HOME/tmp_bin/$(basename {})'"'"' \;
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
) &&
|
|
||||||
rm -f ~/tmp_bin/python &&
|
|
||||||
rm -f ~/tmp_bin/python2 &&
|
|
||||||
rm -f ~/tmp_bin/python3
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_failure 'run' '
|
|
||||||
PATH="$HOME/tmp_bin" run_dotbot <<EOF
|
|
||||||
[]
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'setup 2' '
|
|
||||||
touch ~/tmp_bin/python &&
|
|
||||||
chmod +x ~/tmp_bin/python &&
|
|
||||||
cat >> ~/tmp_bin/python <<EOF
|
|
||||||
#!$HOME/tmp_bin/bash
|
|
||||||
exec $(command -v python)
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 2' '
|
|
||||||
PATH="$HOME/tmp_bin" run_dotbot <<EOF
|
|
||||||
[]
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'setup 3' '
|
|
||||||
mv ~/tmp_bin/python ~/tmp_bin/python2
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 3' '
|
|
||||||
PATH="$HOME/tmp_bin" run_dotbot <<EOF
|
|
||||||
[]
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'setup 4' '
|
|
||||||
mv ~/tmp_bin/python2 ~/tmp_bin/python3
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 4' '
|
|
||||||
PATH="$HOME/tmp_bin" run_dotbot <<EOF
|
|
||||||
[]
|
|
||||||
EOF
|
|
||||||
'
|
|
|
@ -1,20 +0,0 @@
|
||||||
test_description='linking canonicalizes path by default'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "apple" > ${DOTFILES}/f &&
|
|
||||||
ln -s dotfiles dotfiles-symlink
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
cat > "${DOTFILES}/${INSTALL_CONF}" <<EOF
|
|
||||||
- link:
|
|
||||||
~/.f:
|
|
||||||
path: f
|
|
||||||
EOF
|
|
||||||
${DOTBOT_EXEC} -c dotfiles-symlink/${INSTALL_CONF}
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
[ "$(readlink ~/.f | cut -d/ -f5-)" = "dotfiles/f" ]
|
|
||||||
'
|
|
|
@ -1,26 +0,0 @@
|
||||||
test_description='link uses destination if source is null'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "apple" > ${DOTFILES}/f &&
|
|
||||||
echo "grape" > ${DOTFILES}/fd
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/f:
|
|
||||||
~/.f:
|
|
||||||
~/fd:
|
|
||||||
force: false
|
|
||||||
~/.fd:
|
|
||||||
force: false
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "apple" ~/f &&
|
|
||||||
grep "apple" ~/.f &&
|
|
||||||
grep "grape" ~/fd &&
|
|
||||||
grep "grape" ~/.fd
|
|
||||||
'
|
|
|
@ -1,17 +0,0 @@
|
||||||
test_description='link expands user in target'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "apple" > ~/f
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/g: ~/f
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "apple" ~/g
|
|
||||||
'
|
|
|
@ -1,20 +0,0 @@
|
||||||
test_description='link expands environment variables in extended config syntax'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "grape" > ${DOTFILES}/h
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
export APPLE="h" &&
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/.i:
|
|
||||||
path: \$APPLE
|
|
||||||
relink: true
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "grape" ~/.i
|
|
||||||
'
|
|
|
@ -1,18 +0,0 @@
|
||||||
test_description='link expands environment variables in source'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "grape" > ${DOTFILES}/h
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
export APPLE="h" &&
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/.i: \$APPLE
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "grape" ~/.i
|
|
||||||
'
|
|
|
@ -1,25 +0,0 @@
|
||||||
test_description='link expands environment variables in target'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "apple" > ${DOTFILES}/f &&
|
|
||||||
echo "grape" > ${DOTFILES}/h
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
export ORANGE=".config" &&
|
|
||||||
export BANANA="g" &&
|
|
||||||
unset PEAR &&
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/\${ORANGE}/\$BANANA:
|
|
||||||
path: f
|
|
||||||
create: true
|
|
||||||
~/\$PEAR: h
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "apple" ~/.config/g &&
|
|
||||||
grep "grape" ~/\$PEAR
|
|
||||||
'
|
|
|
@ -1,18 +0,0 @@
|
||||||
test_description='link leaves unset environment variables'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "apple" > ${DOTFILES}/\$ORANGE
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
unset ORANGE &&
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/.f: \$ORANGE
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "apple" ~/.f
|
|
||||||
'
|
|
|
@ -1,24 +0,0 @@
|
||||||
test_description='force leaves file when target nonexistent'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
mkdir ~/dir &&
|
|
||||||
touch ~/file
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_failure 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/dir:
|
|
||||||
path: dir
|
|
||||||
force: true
|
|
||||||
~/file:
|
|
||||||
path: file
|
|
||||||
force: true
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
test -d ~/dir &&
|
|
||||||
test -f ~/file
|
|
||||||
'
|
|
|
@ -1,21 +0,0 @@
|
||||||
test_description='force overwrites symlinked directory'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
mkdir ${DOTFILES}/dir ~/dir &&
|
|
||||||
touch ${DOTFILES}/dir/f &&
|
|
||||||
ln -s ~/ ~/.dir
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/.dir:
|
|
||||||
path: dir
|
|
||||||
force: true
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
test -f ~/.dir/f
|
|
||||||
'
|
|
|
@ -1,45 +0,0 @@
|
||||||
test_description='link glob ambiguous'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
mkdir ${DOTFILES}/foo
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_failure 'run 1' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/foo/:
|
|
||||||
path: foo
|
|
||||||
glob: true
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_failure 'test 1' '
|
|
||||||
test -d ~/foo
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_failure 'run 2' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/foo/:
|
|
||||||
path: foo/
|
|
||||||
glob: true
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_failure 'test 2' '
|
|
||||||
test -d ~/foo
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 3' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/foo:
|
|
||||||
path: foo
|
|
||||||
glob: true
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test 3' '
|
|
||||||
test -d ~/foo
|
|
||||||
'
|
|
|
@ -1,123 +0,0 @@
|
||||||
test_description='link glob exclude'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup 1' '
|
|
||||||
mkdir -p ${DOTFILES}/config/{foo,bar,baz} &&
|
|
||||||
echo "apple" > ${DOTFILES}/config/foo/a &&
|
|
||||||
echo "banana" > ${DOTFILES}/config/bar/b &&
|
|
||||||
echo "cherry" > ${DOTFILES}/config/bar/c &&
|
|
||||||
echo "donut" > ${DOTFILES}/config/baz/d
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 1' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
glob: true
|
|
||||||
create: true
|
|
||||||
- link:
|
|
||||||
~/.config/:
|
|
||||||
path: config/*
|
|
||||||
exclude: [config/baz]
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test 1' '
|
|
||||||
! readlink ~/.config/ &&
|
|
||||||
readlink ~/.config/foo &&
|
|
||||||
! readlink ~/.config/baz &&
|
|
||||||
grep "apple" ~/.config/foo/a &&
|
|
||||||
grep "banana" ~/.config/bar/b &&
|
|
||||||
grep "cherry" ~/.config/bar/c
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'setup 2' '
|
|
||||||
rm -rf ~/.config &&
|
|
||||||
mkdir ${DOTFILES}/config/baz/buzz &&
|
|
||||||
echo "egg" > ${DOTFILES}/config/baz/buzz/e
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 2' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
glob: true
|
|
||||||
create: true
|
|
||||||
- link:
|
|
||||||
~/.config/:
|
|
||||||
path: config/*/*
|
|
||||||
exclude: [config/baz/*]
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test 2' '
|
|
||||||
! readlink ~/.config/ &&
|
|
||||||
! readlink ~/.config/foo &&
|
|
||||||
[ ! -d ~/.config/baz ] &&
|
|
||||||
readlink ~/.config/foo/a &&
|
|
||||||
grep "apple" ~/.config/foo/a &&
|
|
||||||
grep "banana" ~/.config/bar/b &&
|
|
||||||
grep "cherry" ~/.config/bar/c
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'setup 3' '
|
|
||||||
rm -rf ~/.config &&
|
|
||||||
mkdir ${DOTFILES}/config/baz/bizz &&
|
|
||||||
echo "grape" > ${DOTFILES}/config/baz/bizz/g
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 3' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
glob: true
|
|
||||||
create: true
|
|
||||||
- link:
|
|
||||||
~/.config/:
|
|
||||||
path: config/*/*
|
|
||||||
exclude: [config/baz/buzz]
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test 3' '
|
|
||||||
! readlink ~/.config/ &&
|
|
||||||
! readlink ~/.config/foo &&
|
|
||||||
readlink ~/.config/foo/a &&
|
|
||||||
! readlink ~/.config/baz/buzz &&
|
|
||||||
readlink ~/.config/baz/bizz &&
|
|
||||||
grep "apple" ~/.config/foo/a &&
|
|
||||||
grep "banana" ~/.config/bar/b &&
|
|
||||||
grep "cherry" ~/.config/bar/c &&
|
|
||||||
grep "donut" ~/.config/baz/d &&
|
|
||||||
grep "grape" ~/.config/baz/bizz/g
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'setup 4' '
|
|
||||||
rm -rf ~/.config &&
|
|
||||||
mkdir ${DOTFILES}/config/fiz &&
|
|
||||||
echo "fig" > ${DOTFILES}/config/fiz/f
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 4' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
glob: true
|
|
||||||
create: true
|
|
||||||
- link:
|
|
||||||
~/.config/:
|
|
||||||
path: config/*/*
|
|
||||||
exclude: [config/baz/*, config/fiz/*]
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test 4' '
|
|
||||||
! readlink ~/.config/ &&
|
|
||||||
! readlink ~/.config/foo &&
|
|
||||||
[ ! -d ~/.config/baz ] &&
|
|
||||||
[ ! -d ~/.config/fiz ] &&
|
|
||||||
readlink ~/.config/foo/a &&
|
|
||||||
grep "apple" ~/.config/foo/a &&
|
|
||||||
grep "banana" ~/.config/bar/b &&
|
|
||||||
grep "cherry" ~/.config/bar/c
|
|
||||||
'
|
|
|
@ -1,31 +0,0 @@
|
||||||
test_description='link glob multi star'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
mkdir ${DOTFILES}/config &&
|
|
||||||
mkdir ${DOTFILES}/config/foo &&
|
|
||||||
mkdir ${DOTFILES}/config/bar &&
|
|
||||||
echo "apple" > ${DOTFILES}/config/foo/a &&
|
|
||||||
echo "banana" > ${DOTFILES}/config/bar/b &&
|
|
||||||
echo "cherry" > ${DOTFILES}/config/bar/c
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
glob: true
|
|
||||||
create: true
|
|
||||||
- link:
|
|
||||||
~/.config/: config/*/*
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
! readlink ~/.config/ &&
|
|
||||||
! readlink ~/.config/foo &&
|
|
||||||
readlink ~/.config/foo/a &&
|
|
||||||
grep "apple" ~/.config/foo/a &&
|
|
||||||
grep "banana" ~/.config/bar/b &&
|
|
||||||
grep "cherry" ~/.config/bar/c
|
|
||||||
'
|
|
|
@ -1,106 +0,0 @@
|
||||||
test_description='link glob, all patterns'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
allfruit=(apple apricot banana cherry currant cantalope)
|
|
||||||
|
|
||||||
test_expect_success 'glob patterns setup' '
|
|
||||||
mkdir ${DOTFILES}/conf &&
|
|
||||||
for fruit in "${allfruit[@]}"; do
|
|
||||||
echo "${fruit}" > ${DOTFILES}/conf/${fruit}
|
|
||||||
echo "dot-${fruit}" > ${DOTFILES}/conf/.${fruit}
|
|
||||||
done
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'glob patterns: "conf/*"' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
glob: true
|
|
||||||
create: true
|
|
||||||
- link:
|
|
||||||
~/globtest: conf/*
|
|
||||||
EOF
|
|
||||||
|
|
||||||
for fruit in "${allfruit[@]}"; do
|
|
||||||
grep "${fruit}" ~/globtest/${fruit} &&
|
|
||||||
test \! -e ~/globtest/.${fruit}
|
|
||||||
done
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'reset' 'rm -rf ~/globtest'
|
|
||||||
|
|
||||||
test_expect_success 'glob pattern: "conf/.*"' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
glob: true
|
|
||||||
create: true
|
|
||||||
- link:
|
|
||||||
~/globtest: conf/.*
|
|
||||||
EOF
|
|
||||||
|
|
||||||
for fruit in "${allfruit[@]}"; do
|
|
||||||
test \! -e ~/globtest/${fruit} &&
|
|
||||||
grep "dot-${fruit}" ~/globtest/.${fruit}
|
|
||||||
done
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'reset 2' 'rm -rf ~/globtest'
|
|
||||||
|
|
||||||
test_expect_success 'glob pattern: "conf/[bc]*"' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
glob: true
|
|
||||||
create: true
|
|
||||||
- link:
|
|
||||||
~/globtest: conf/[bc]*
|
|
||||||
EOF
|
|
||||||
|
|
||||||
for fruit in "${allfruit[@]}"; do
|
|
||||||
[[ $fruit = [bc]* ]] &&
|
|
||||||
grep "${fruit}" ~/globtest/${fruit} ||
|
|
||||||
test \! -e ~/globtest/${fruit} &&
|
|
||||||
test \! -e ~/globtest/.${fruit}
|
|
||||||
done
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'reset 3' 'rm -rf ~/globtest'
|
|
||||||
|
|
||||||
test_expect_success 'glob pattern: "conf/*e"' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
glob: true
|
|
||||||
create: true
|
|
||||||
- link:
|
|
||||||
~/globtest: conf/*e
|
|
||||||
EOF
|
|
||||||
|
|
||||||
for fruit in "${allfruit[@]}"; do
|
|
||||||
[[ $fruit = *e ]] &&
|
|
||||||
grep "${fruit}" ~/globtest/${fruit} ||
|
|
||||||
test \! -e ~/globtest/${fruit} &&
|
|
||||||
test \! -e ~/globtest/.${fruit}
|
|
||||||
done
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'reset 4' 'rm -rf ~/globtest'
|
|
||||||
|
|
||||||
test_expect_success 'glob pattern: "conf/??r*"' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
glob: true
|
|
||||||
create: true
|
|
||||||
- link:
|
|
||||||
~/globtest: conf/??r*
|
|
||||||
EOF
|
|
||||||
|
|
||||||
for fruit in "${allfruit[@]}"; do
|
|
||||||
[[ $fruit = ??r* ]] &&
|
|
||||||
grep "${fruit}" ~/globtest/${fruit} ||
|
|
||||||
test \! -e ~/globtest/${fruit} &&
|
|
||||||
test \! -e ~/globtest/.${fruit}
|
|
||||||
done
|
|
||||||
'
|
|
|
@ -1,46 +0,0 @@
|
||||||
test_description='link glob recursive'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
check_python_version ">=" 3.5 \
|
|
||||||
|| test_expect_failure 'expect-fail' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- link:
|
|
||||||
~/.config/:
|
|
||||||
glob: true
|
|
||||||
path: bogus/**
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
# Skip remaining tests if not supported
|
|
||||||
check_python_version ">=" 3.5 \
|
|
||||||
|| skip_tests
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
mkdir -p ${DOTFILES}/config/foo/bar &&
|
|
||||||
echo "apple" > ${DOTFILES}/config/foo/bar/a &&
|
|
||||||
echo "banana" > ${DOTFILES}/config/foo/bar/b &&
|
|
||||||
echo "cherry" > ${DOTFILES}/config/foo/bar/c
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
glob: true
|
|
||||||
create: true
|
|
||||||
- link:
|
|
||||||
~/.config/:
|
|
||||||
path: config/**
|
|
||||||
exclude: [config/**/b]
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
! readlink ~/.config/ &&
|
|
||||||
! readlink ~/.config/foo &&
|
|
||||||
! readlink ~/.config/foo/bar &&
|
|
||||||
readlink ~/.config/foo/bar/a &&
|
|
||||||
grep "apple" ~/.config/foo/bar/a &&
|
|
||||||
test \! -e ~/.config/foo/bar/b &&
|
|
||||||
grep "cherry" ~/.config/foo/bar/c
|
|
||||||
'
|
|
|
@ -1,93 +0,0 @@
|
||||||
test_description='link glob'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup 1' '
|
|
||||||
mkdir ${DOTFILES}/bin &&
|
|
||||||
echo "apple" > ${DOTFILES}/bin/a &&
|
|
||||||
echo "banana" > ${DOTFILES}/bin/b &&
|
|
||||||
echo "cherry" > ${DOTFILES}/bin/c
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 1' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
glob: true
|
|
||||||
create: true
|
|
||||||
- link:
|
|
||||||
~/bin: bin/*
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test 1' '
|
|
||||||
grep "apple" ~/bin/a &&
|
|
||||||
grep "banana" ~/bin/b &&
|
|
||||||
grep "cherry" ~/bin/c
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'setup 2' '
|
|
||||||
rm -rf ~/bin
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 2' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
glob: true
|
|
||||||
create: true
|
|
||||||
- link:
|
|
||||||
~/bin/: bin/*
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test 2' '
|
|
||||||
grep "apple" ~/bin/a &&
|
|
||||||
grep "banana" ~/bin/b &&
|
|
||||||
grep "cherry" ~/bin/c
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'setup 3' '
|
|
||||||
rm -rf ~/bin &&
|
|
||||||
echo "dot_apple" > ${DOTFILES}/bin/.a &&
|
|
||||||
echo "dot_banana" > ${DOTFILES}/bin/.b &&
|
|
||||||
echo "dot_cherry" > ${DOTFILES}/bin/.c
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 3' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
glob: true
|
|
||||||
create: true
|
|
||||||
- link:
|
|
||||||
~/bin/: bin/.*
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test 3' '
|
|
||||||
grep "dot_apple" ~/bin/.a &&
|
|
||||||
grep "dot_banana" ~/bin/.b &&
|
|
||||||
grep "dot_cherry" ~/bin/.c
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'setup 4' '
|
|
||||||
rm -rf ~/bin &&
|
|
||||||
echo "dot_apple" > ${DOTFILES}/.a &&
|
|
||||||
echo "dot_banana" > ${DOTFILES}/.b &&
|
|
||||||
echo "dot_cherry" > ${DOTFILES}/.c
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 4' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- link:
|
|
||||||
"~":
|
|
||||||
path: .*
|
|
||||||
glob: true
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test 4' '
|
|
||||||
grep "dot_apple" ~/.a &&
|
|
||||||
grep "dot_banana" ~/.b &&
|
|
||||||
grep "dot_cherry" ~/.c
|
|
||||||
'
|
|
|
@ -1,51 +0,0 @@
|
||||||
test_description='link if'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
mkdir ~/d
|
|
||||||
echo "apple" > ${DOTFILES}/f
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/.f:
|
|
||||||
path: f
|
|
||||||
if: "true"
|
|
||||||
~/.g:
|
|
||||||
path: f
|
|
||||||
if: "false"
|
|
||||||
~/.h:
|
|
||||||
path: f
|
|
||||||
if: "[ -d ~/d ]"
|
|
||||||
~/.i:
|
|
||||||
path: f
|
|
||||||
if: "badcommand"
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "apple" ~/.f &&
|
|
||||||
! test -f ~/.g &&
|
|
||||||
grep "apple" ~/.h &&
|
|
||||||
! test -f ~/.i
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 2' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
if: "false"
|
|
||||||
- link:
|
|
||||||
~/.j:
|
|
||||||
path: f
|
|
||||||
if: "true"
|
|
||||||
~/.k:
|
|
||||||
path: f
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test 2' '
|
|
||||||
grep "apple" ~/.j &&
|
|
||||||
! test -f ~/.k
|
|
||||||
'
|
|
|
@ -1,23 +0,0 @@
|
||||||
test_description='link is created even if source is missing'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_failure 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/missing_link:
|
|
||||||
path: missing
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 2' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/missing_link:
|
|
||||||
path: missing
|
|
||||||
ignore-missing: true
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
test -L ~/missing_link
|
|
||||||
'
|
|
|
@ -1,18 +0,0 @@
|
||||||
test_description='relink does not overwrite file'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "apple" > ${DOTFILES}/f &&
|
|
||||||
echo "grape" > ~/.f
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_failure 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/.f: f
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "grape" ~/.f
|
|
||||||
'
|
|
|
@ -1,40 +0,0 @@
|
||||||
test_description='linking path canonicalization can be disabled'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "apple" > ${DOTFILES}/f &&
|
|
||||||
echo "grape" > ${DOTFILES}/g &&
|
|
||||||
ln -s dotfiles dotfiles-symlink
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
cat > "${DOTFILES}/${INSTALL_CONF}" <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
canonicalize-path: false
|
|
||||||
- link:
|
|
||||||
~/.f:
|
|
||||||
path: f
|
|
||||||
EOF
|
|
||||||
${DOTBOT_EXEC} -c ./dotfiles-symlink/${INSTALL_CONF}
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
[ "$(readlink ~/.f | cut -d/ -f5-)" = "dotfiles-symlink/f" ]
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 2' '
|
|
||||||
cat > "${DOTFILES}/${INSTALL_CONF}" <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
canonicalize: false
|
|
||||||
- link:
|
|
||||||
~/.g:
|
|
||||||
path: g
|
|
||||||
EOF
|
|
||||||
${DOTBOT_EXEC} -c ./dotfiles-symlink/${INSTALL_CONF}
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
[ "$(readlink ~/.g | cut -d/ -f5-)" = "dotfiles-symlink/g" ]
|
|
||||||
'
|
|
|
@ -1,23 +0,0 @@
|
||||||
test_description='link prefix'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
mkdir ${DOTFILES}/conf &&
|
|
||||||
echo "apple" > ${DOTFILES}/conf/a &&
|
|
||||||
echo "banana" > ${DOTFILES}/conf/b &&
|
|
||||||
echo "cherry" > ${DOTFILES}/conf/c
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test glob w/ prefix' '
|
|
||||||
run_dotbot -v <<EOF
|
|
||||||
- link:
|
|
||||||
~/:
|
|
||||||
glob: true
|
|
||||||
path: conf/*
|
|
||||||
prefix: '.'
|
|
||||||
EOF
|
|
||||||
|
|
||||||
grep "apple" ~/.a &&
|
|
||||||
grep "banana" ~/.b &&
|
|
||||||
grep "cherry" ~/.c
|
|
||||||
'
|
|
|
@ -1,36 +0,0 @@
|
||||||
test_description='relative linking works'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "apple" > ${DOTFILES}/f &&
|
|
||||||
mkdir ${DOTFILES}/d &&
|
|
||||||
echo "grape" > ${DOTFILES}/d/e
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/.f:
|
|
||||||
path: f
|
|
||||||
~/.frel:
|
|
||||||
path: f
|
|
||||||
relative: true
|
|
||||||
~/nested/.frel:
|
|
||||||
path: f
|
|
||||||
create: true
|
|
||||||
relative: true
|
|
||||||
~/.d:
|
|
||||||
path: d
|
|
||||||
relative: true
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "apple" ~/.f &&
|
|
||||||
grep "apple" ~/.frel &&
|
|
||||||
[[ "$(readlink ~/.f)" == "$(readlink -f dotfiles/f)" ]] &&
|
|
||||||
[[ "$(readlink ~/.frel)" == "dotfiles/f" ]] &&
|
|
||||||
[[ "$(readlink ~/nested/.frel)" == "../dotfiles/f" ]] &&
|
|
||||||
grep "grape" ~/.d/e &&
|
|
||||||
[[ "$(readlink ~/.d)" == "dotfiles/d" ]]
|
|
||||||
'
|
|
|
@ -1,20 +0,0 @@
|
||||||
test_description='relink does not overwrite file'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "apple" > ${DOTFILES}/f &&
|
|
||||||
echo "grape" > ~/.f
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_failure 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/.f:
|
|
||||||
path: f
|
|
||||||
relink: true
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "grape" ~/.f
|
|
||||||
'
|
|
|
@ -1,21 +0,0 @@
|
||||||
test_description='relink overwrites symlink'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "apple" > ${DOTFILES}/f &&
|
|
||||||
echo "grape" > ~/f &&
|
|
||||||
ln -s ~/f ~/.f
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/.f:
|
|
||||||
path: f
|
|
||||||
relink: true
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "apple" ~/.f
|
|
||||||
'
|
|
|
@ -1,32 +0,0 @@
|
||||||
test_description='relink relative does not incorrectly relink file'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "apple" > ${DOTFILES}/f &&
|
|
||||||
echo "grape" > ~/.f
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/.folder/f:
|
|
||||||
path: f
|
|
||||||
create: true
|
|
||||||
relative: true
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
# these are done in a single block because they run in a subshell, and it
|
|
||||||
# wouldn't be possible to access `$mtime` outside of the subshell
|
|
||||||
test_expect_success 'test' '
|
|
||||||
mtime=$(stat ~/.folder/f | grep Modify)
|
|
||||||
run_dotbot <<EOF
|
|
||||||
- link:
|
|
||||||
~/.folder/f:
|
|
||||||
path: f
|
|
||||||
create: true
|
|
||||||
relative: true
|
|
||||||
relink: true
|
|
||||||
EOF
|
|
||||||
[[ "$mtime" == "$(stat ~/.folder/f | grep Modify)" ]]
|
|
||||||
'
|
|
|
@ -1,22 +0,0 @@
|
||||||
test_description='--only does not skip defaults'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "apple" > ${DOTFILES}/x
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot --only link <<EOF
|
|
||||||
- defaults:
|
|
||||||
link:
|
|
||||||
create: true
|
|
||||||
- shell:
|
|
||||||
- echo "pear" > ~/z
|
|
||||||
- link:
|
|
||||||
~/d/x: x
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "apple" ~/d/x && ! test -f ~/z
|
|
||||||
'
|
|
|
@ -1,20 +0,0 @@
|
||||||
test_description='--only with multiple arguments'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
ln -s ${DOTFILES}/nonexistent ~/bad && touch ${DOTFILES}/y
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot --only clean shell <<EOF
|
|
||||||
- clean: ["~"]
|
|
||||||
- shell:
|
|
||||||
- echo "x" > ~/x
|
|
||||||
- link:
|
|
||||||
~/y: y
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
! test -f ~/bad && grep "x" ~/x && ! test -f ~/y
|
|
||||||
'
|
|
|
@ -1,32 +0,0 @@
|
||||||
test_description='--only'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "apple" > ${DOTFILES}/x
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot --only shell <<EOF
|
|
||||||
- shell:
|
|
||||||
- echo "pear" > ~/y
|
|
||||||
- link:
|
|
||||||
~/x: x
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "pear" ~/y && ! test -f ~/x
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 2' '
|
|
||||||
run_dotbot --only link <<EOF
|
|
||||||
- shell:
|
|
||||||
- echo "pear" > ~/z
|
|
||||||
- link:
|
|
||||||
~/x: x
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "apple" ~/x && ! test -f ~/z
|
|
||||||
'
|
|
|
@ -1,29 +0,0 @@
|
||||||
test_description='directory-based plugin loading works'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
mkdir ${DOTFILES}/plugins
|
|
||||||
cat > ${DOTFILES}/plugins/test.py <<EOF
|
|
||||||
import dotbot
|
|
||||||
import os.path
|
|
||||||
|
|
||||||
class Test(dotbot.Plugin):
|
|
||||||
def can_handle(self, directive):
|
|
||||||
return directive == "test"
|
|
||||||
|
|
||||||
def handle(self, directive, data):
|
|
||||||
with open(os.path.expanduser("~/flag"), "w") as f:
|
|
||||||
f.write("it works")
|
|
||||||
return True
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
run_dotbot --plugin-dir ${DOTFILES}/plugins <<EOF
|
|
||||||
- test: ~
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "it works" ~/flag
|
|
||||||
'
|
|
|
@ -1,17 +0,0 @@
|
||||||
test_description='can disable built-in plugins'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
echo "apple" > ${DOTFILES}/f
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_failure 'run' '
|
|
||||||
run_dotbot --disable-built-in-plugins <<EOF
|
|
||||||
- link:
|
|
||||||
~/.f: f
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_failure 'test' '
|
|
||||||
test -f ~/.f
|
|
||||||
'
|
|
|
@ -1,64 +0,0 @@
|
||||||
test_description='plugin loading works'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup 1' '
|
|
||||||
cat > ${DOTFILES}/test.py <<EOF
|
|
||||||
import dotbot
|
|
||||||
import os.path
|
|
||||||
|
|
||||||
class Test(dotbot.Plugin):
|
|
||||||
def can_handle(self, directive):
|
|
||||||
return directive == "test"
|
|
||||||
|
|
||||||
def handle(self, directive, data):
|
|
||||||
with open(os.path.expanduser("~/flag"), "w") as f:
|
|
||||||
f.write("it works")
|
|
||||||
return True
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 1' '
|
|
||||||
run_dotbot --plugin ${DOTFILES}/test.py <<EOF
|
|
||||||
- test: ~
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test 1' '
|
|
||||||
grep "it works" ~/flag
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'setup 2' '
|
|
||||||
rm ${DOTFILES}/test.py;
|
|
||||||
cat > ${DOTFILES}/test.py <<EOF
|
|
||||||
import dotbot
|
|
||||||
import os.path
|
|
||||||
|
|
||||||
class Test(dotbot.Plugin):
|
|
||||||
def can_handle(self, directive):
|
|
||||||
return directive == "test"
|
|
||||||
|
|
||||||
def handle(self, directive, data):
|
|
||||||
self._log.debug("Attempting to get options from Context")
|
|
||||||
options = self._context.options()
|
|
||||||
if len(options.plugins) != 1:
|
|
||||||
self._log.debug("Context.options.plugins length is %i, expected 1" % len(options.plugins))
|
|
||||||
return False
|
|
||||||
if not options.plugins[0].endswith("test.py"):
|
|
||||||
self._log.debug("Context.options.plugins[0] is %s, expected end with test.py" % options.plugins[0])
|
|
||||||
return False
|
|
||||||
|
|
||||||
with open(os.path.expanduser("~/flag"), "w") as f:
|
|
||||||
f.write("it works")
|
|
||||||
return True
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 2' '
|
|
||||||
run_dotbot --plugin ${DOTFILES}/test.py <<EOF
|
|
||||||
- test: ~
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test 2' '
|
|
||||||
grep "it works" ~/flag
|
|
||||||
'
|
|
|
@ -1,11 +0,0 @@
|
||||||
test_description='shell command stdout works'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
(run_dotbot | grep "^apple") <<EOF
|
|
||||||
- shell:
|
|
||||||
-
|
|
||||||
command: echo apple
|
|
||||||
stdout: true
|
|
||||||
EOF
|
|
||||||
'
|
|
|
@ -1,79 +0,0 @@
|
||||||
test_description='cli options can override config file'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'run 1' '
|
|
||||||
(run_dotbot -vv | (grep "^apple")) <<EOF
|
|
||||||
- shell:
|
|
||||||
-
|
|
||||||
command: echo apple
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 2' '
|
|
||||||
(run_dotbot -vv | (grep "^apple")) <<EOF
|
|
||||||
- shell:
|
|
||||||
-
|
|
||||||
command: echo apple
|
|
||||||
stdout: false
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 3' '
|
|
||||||
(run_dotbot -vv | (grep "^apple")) <<EOF
|
|
||||||
- defaults:
|
|
||||||
shell:
|
|
||||||
stdout: false
|
|
||||||
- shell:
|
|
||||||
- command: echo apple
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
# Control to make sure stderr redirection is working as expected
|
|
||||||
test_expect_failure 'run 4' '
|
|
||||||
(run_dotbot -vv | (grep "^apple")) <<EOF
|
|
||||||
- shell:
|
|
||||||
- command: echo apple >&2
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 5' '
|
|
||||||
(run_dotbot -vv 2>&1 | (grep "^apple")) <<EOF
|
|
||||||
- shell:
|
|
||||||
- command: echo apple >&2
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 6' '
|
|
||||||
(run_dotbot -vv 2>&1 | (grep "^apple")) <<EOF
|
|
||||||
- shell:
|
|
||||||
-
|
|
||||||
command: echo apple >&2
|
|
||||||
stdout: false
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 7' '
|
|
||||||
(run_dotbot -vv 2>&1 | (grep "^apple")) <<EOF
|
|
||||||
- defaults:
|
|
||||||
shell:
|
|
||||||
stdout: false
|
|
||||||
- shell:
|
|
||||||
- command: echo apple >&2
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
# Make sure that we must use verbose level 2
|
|
||||||
# This preserves backwards compatability
|
|
||||||
test_expect_failure 'run 8' '
|
|
||||||
(run_dotbot -v | (grep "^apple")) <<EOF
|
|
||||||
- shell:
|
|
||||||
- command: echo apple
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_failure 'run 9' '
|
|
||||||
(run_dotbot -v | (grep "^apple")) <<EOF
|
|
||||||
- shell:
|
|
||||||
- command: echo apple >&2
|
|
||||||
EOF
|
|
||||||
'
|
|
|
@ -1,22 +0,0 @@
|
||||||
test_description='shell command stdout works in compact form'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
(run_dotbot | grep "^apple") <<EOF
|
|
||||||
- defaults:
|
|
||||||
shell:
|
|
||||||
stdout: true
|
|
||||||
- shell:
|
|
||||||
- echo apple
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run 2' '
|
|
||||||
(run_dotbot | grep "^apple") <<EOF
|
|
||||||
- defaults:
|
|
||||||
shell:
|
|
||||||
stdout: true
|
|
||||||
- shell:
|
|
||||||
- [echo apple, "echoing message"]
|
|
||||||
EOF
|
|
||||||
'
|
|
|
@ -1,9 +0,0 @@
|
||||||
test_description='shell command stdout disabled by default'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
(run_dotbot | (! grep "^banana")) <<EOF
|
|
||||||
- shell:
|
|
||||||
- echo banana
|
|
||||||
EOF
|
|
||||||
'
|
|
|
@ -1,14 +0,0 @@
|
||||||
test_description='shell command can override default'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
(run_dotbot | (! grep "^apple")) <<EOF
|
|
||||||
- defaults:
|
|
||||||
shell:
|
|
||||||
stdout: true
|
|
||||||
- shell:
|
|
||||||
-
|
|
||||||
command: echo apple
|
|
||||||
stdout: false
|
|
||||||
EOF
|
|
||||||
'
|
|
|
@ -1,30 +0,0 @@
|
||||||
test_description='shell command can be suppressed in output'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
# when not quiet, expect to see command that was run
|
|
||||||
test_expect_success 'run' '
|
|
||||||
(run_dotbot | grep "echo banana") <<EOF
|
|
||||||
- shell:
|
|
||||||
- command: echo banana
|
|
||||||
description: echoing a thing...
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
# when quiet, expect command to be suppressed
|
|
||||||
test_expect_success 'run 2' '
|
|
||||||
(run_dotbot | (! grep "echo banana")) <<EOF
|
|
||||||
- shell:
|
|
||||||
- command: echo banana
|
|
||||||
description: echoing a thing...
|
|
||||||
quiet: true
|
|
||||||
EOF
|
|
||||||
'
|
|
||||||
|
|
||||||
# when no description, expect to see command
|
|
||||||
test_expect_success 'run 3' '
|
|
||||||
(run_dotbot | grep "echo banana") <<EOF
|
|
||||||
- shell:
|
|
||||||
- command: echo banana
|
|
||||||
quiet: true
|
|
||||||
EOF
|
|
||||||
'
|
|
|
@ -1,22 +0,0 @@
|
||||||
test_description='install shim works'
|
|
||||||
. '../test-lib.bash'
|
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
|
||||||
cd ${DOTFILES}
|
|
||||||
git init
|
|
||||||
git submodule add ${BASEDIR} dotbot
|
|
||||||
cp ./dotbot/tools/git-submodule/install .
|
|
||||||
echo "pear" > ${DOTFILES}/foo
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'run' '
|
|
||||||
cat > ${DOTFILES}/install.conf.yaml <<EOF
|
|
||||||
- link:
|
|
||||||
~/.foo: foo
|
|
||||||
EOF
|
|
||||||
${DOTFILES}/install
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test' '
|
|
||||||
grep "pear" ~/.foo
|
|
||||||
'
|
|
Loading…
Reference in a new issue