diff --git a/test/prefer-add-path-packages.sh b/test/prefer-add-path-packages.sh new file mode 100755 index 0000000..af8bc05 --- /dev/null +++ b/test/prefer-add-path-packages.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +. $(dirname ${BASH_SOURCE[0]})/common.sh + +TMPDIR=$CURR_DIR/tmp-add-path + +PACK_PATH="$CURR_DIR"/issue2262-exact-cached-version-match + +# make sure that there are no left-over selections files or temp directory +rm -f $PACK_PATH/dub.selections.json +rm -rf $TMPDIR + +# make sure that there are no cached versions of the dependency +$DUB remove gitcompatibledubpackage@* -n || true + +# build normally, should select 1.0.4 +if ! ${DUB} build --root $PACK_PATH | grep "gitcompatibledubpackage 1\.0\.4:"; then + die $LINENO 'The initial build failed.' +fi + +# clone gitcompatibledubpackage and check out 1.0.4+commit.2.ccb31bf +mkdir $TMPDIR +$DUB add-path $TMPDIR +cd $TMPDIR +git clone https://github.com/dlang-community/gitcompatibledubpackage.git +cd gitcompatibledubpackage +git checkout -q ccb31bf6a655437176ec02e04c2305a8c7c90d67 +cd ../.. + +if ! $DUB list | grep "gitcompatibledubpackage 1\.0\.4+commit.2.gccb31bf"; then + $DUB remove-path $TMPDIR + die $LINENO 'Cloned package was not found in search path' +fi + +# should pick up the cloned package instead of the cached one now +if ! ${DUB} build --root $PACK_PATH | grep "gitcompatibledubpackage 1\.0\.4+commit.2.gccb31bf:"; then + $DUB remove-path $TMPDIR + die $LINENO 'Did not pick up the add-path package.' +fi + +# clean up +$DUB remove-path $TMPDIR +rm -f $PACK_PATH/dub.selections.json +rm -rf $TMPDIR