From 275645bab7fad98f7606c36cb5cd066f961d3845 Mon Sep 17 00:00:00 2001 From: deadc0de6 Date: Thu, 15 Jul 2021 08:50:40 +0200 Subject: [PATCH] fix instignore when installing link_children --- dotdrop/installer.py | 8 +-- tests-ng/install-link-children.sh | 112 ++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+), 4 deletions(-) create mode 100755 tests-ng/install-link-children.sh diff --git a/dotdrop/installer.py b/dotdrop/installer.py index 613955c..fd2a69b 100644 --- a/dotdrop/installer.py +++ b/dotdrop/installer.py @@ -259,7 +259,8 @@ class Installer: ret, err = self.install(templater, src, tmp, LinkTypes.NOLINK, actionexec=actionexec, - is_template=is_template) + is_template=is_template, + ignore=ignore) if not ret and not os.path.exists(tmp): return ret, err src = tmp @@ -324,7 +325,8 @@ class Installer: ret2, err2 = self.install(templater, subsrc, tmp, LinkTypes.NOLINK, actionexec=actionexec, - is_template=is_template) + is_template=is_template, + ignore=ignore) if not ret2 and err2 and not os.path.exists(tmp): continue subsrc = tmp @@ -680,8 +682,6 @@ class Installer: self.log.dry('would mkdir -p {}'.format(directory)) return True self.log.dbg('mkdir -p {}'.format(directory)) - if not self.comparing: - self.log.sub('create directory {}'.format(directory)) os.makedirs(directory, exist_ok=True) return os.path.exists(directory) diff --git a/tests-ng/install-link-children.sh b/tests-ng/install-link-children.sh new file mode 100755 index 0000000..bfb6dea --- /dev/null +++ b/tests-ng/install-link-children.sh @@ -0,0 +1,112 @@ +#!/usr/bin/env bash +# author: deadc0de6 (https://github.com/deadc0de6) +# Copyright (c) 2017, deadc0de6 +# +# test link_dotfile_default +# returns 1 in case of error +# + +# exit on first error +set -e + +# all this crap to get current path +rl="readlink -f" +if ! ${rl} "${0}" >/dev/null 2>&1; then + rl="realpath" + + if ! hash ${rl}; then + echo "\"${rl}\" not found !" && exit 1 + fi +fi +cur=$(dirname "$(${rl} "${0}")") + +#hash dotdrop >/dev/null 2>&1 +#[ "$?" != "0" ] && echo "install dotdrop to run tests" && exit 1 + +#echo "called with ${1}" + +# dotdrop path can be pass as argument +ddpath="${cur}/../" +[ "${1}" != "" ] && ddpath="${1}" +[ ! -d ${ddpath} ] && echo "ddpath \"${ddpath}\" is not a directory" && exit 1 + +export PYTHONPATH="${ddpath}:${PYTHONPATH}" +bin="python3 -m dotdrop.dotdrop" +hash coverage 2>/dev/null && bin="coverage run -a --source=dotdrop -m dotdrop.dotdrop" || true + +echo "dotdrop path: ${ddpath}" +echo "pythonpath: ${PYTHONPATH}" + +# get the helpers +source ${cur}/helpers + +echo -e "$(tput setaf 6)==> RUNNING $(basename $BASH_SOURCE) <==$(tput sgr0)" + +################################################################ +# this is the test +################################################################ + +# the dotfile source +tmps=`mktemp -d --suffix='-dotdrop-tests' || mktemp -d` +mkdir -p ${tmps}/dotfiles +# the dotfile destination +tmpd=`mktemp -d --suffix='-dotdrop-tests' || mktemp -d` +#echo "dotfile destination: ${tmpd}" + +# create the config file +cfg="${tmps}/config.yaml" + +cat > ${cfg} << _EOF +config: + backup: true + create: true + dotpath: dotfiles + link_dotfile_default: nolink +dotfiles: + d_dir1: + dst: ${tmpd}/dir1 + src: dir1 + link: link_children + instignore: + - '*ignore' +profiles: + p1: + dotfiles: + - d_dir1 +_EOF +#cat ${cfg} + +# create the dotfile +mkdir ${tmps}/dotfiles/dir1 +mkdir ${tmps}/dotfiles/dir1/empty +echo "{{@@ profile @@}}" > ${tmps}/dotfiles/dir1/empty/this.ignore +mkdir ${tmps}/dotfiles/dir1/not-empty +echo "{{@@ profile @@}}" > ${tmps}/dotfiles/dir1/not-empty/file +mkdir ${tmps}/dotfiles/dir1/sub +mkdir ${tmps}/dotfiles/dir1/sub/empty +echo "{{@@ profile @@}}" > ${tmps}/dotfiles/dir1/sub/empty/that.ignore + +# install +cd ${ddpath} | ${bin} install -f -c ${cfg} -p p1 -V +#cat ${cfg} + +# checks normal +[ ! -d ${tmpd}/dir1 ] && exit 1 +[ ! -d ${tmpd}/dir1/empty ] && exit 1 +[ ! -d ${tmpd}/dir1/sub ] && exit 1 +[ ! -d ${tmpd}/dir1/sub/empty ] && exit 1 +[ ! -d ${tmpd}/dir1/not-empty ] && exit 1 + +[ ! -e ${tmpd}/dir1/not-empty/file ] && exit 1 + +# ignored files +[ -e ${tmpd}/dir1/empty/this.ignore ] && exit 1 +[ -e ${tmpd}/dir1/sub/empty/that.ignore ] && exit 1 + +grep "p1" ${tmpd}/dir1/not-empty/file + +## CLEANING +rm -rf ${tmps} ${tmpd} + +echo "OK" +exit 0