Skip to content

Instantly share code, notes, and snippets.

@nojimage
Created October 4, 2016 04:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nojimage/6d468518516e7c5bd6ed5377058bde93 to your computer and use it in GitHub Desktop.
Save nojimage/6d468518516e7c5bd6ed5377058bde93 to your computer and use it in GitHub Desktop.
CakePHP 2.x Run UnitTest on Remote for NetBeans 8.2
#!/usr/bin/env bash
##
# Custom PHPUnit script for Remote test on NetBaeans 8.2
##
PROJECT_ROOT=$(cd "$(dirname "$(dirname "$0")")" && pwd)
#
# Change these settings to your env
#
REMOTE_PKEY="${PROJECT_ROOT}/../../.vagrant/machines/default/virtualbox/private_key"
REMOTE_SERVER=vagrant@192.168.33.11
REMOTE_ROOT="/{your_remote_cakeapp_dir}"
REMOTE_CAKETEST="${REMOTE_ROOT}/Console/cake test"
REMOTE_SUITE_PATH="${REMOTE_ROOT}"
REMOTE_TESTCASE_PATH="${REMOTE_ROOT}/Test/Case/"
XDEBUG_CONFIG="idekey=netbeans-xdebug"
###
LOCAL_ROOT=$(cd "$(dirname "$(dirname "$0")")" && pwd)
#echo $LOCAL_ROOT
## parse options
while [[ $# -gt 3 ]] ; do
#echo ">> ${1} ${2}"
case $1 in
'--colors' )
COLORS=1
;;
'--log-junit' )
JUNITLOG="$2"
shift
;;
'--log-json' )
JSONLOG="$2"
shift
;;
'--bootstrap' )
BOOTSTRAP="$2"
shift
;;
'--filter' )
FILTER="$2"
shift
;;
'--coverage-clover' )
COVERAGE="$2"
shift
;;
esac
shift
done
SUITE=$1
RUN=$3
RUN=${RUN/--run=/}
REMOTE_BOOTSTRAP=${REMOTE_ROOT}${BOOTSTRAP/$LOCAL_ROOT/}
REMOTE_JUNITLOG=${JUNITLOG/\/var\//\/tmp\/}
REMOTE_JSONLOG=${JSONLOG/\/var\//\/tmp\/}
REMOTE_CLOVERLOG=${CLOVERLOG/\/var\//\/tmp\/}
REMOTE_SUITE=${REMOTE_SUITE_PATH}/${SUITE##*/}
REMOTE_FILTER=${FILTER}
REMOTE_RUN=${RUN//$LOCAL_ROOT/$REMOTE_ROOT}
REMOTE_RUN=${REMOTE_RUN/$REMOTE_TESTCASE_PATH/}
# Debug output
#echo "COLORS:" $COLORS
#echo "REMOTE_BOOTSTRAP:" $REMOTE_BOOTSTRAP
#echo "REMOTE_JUNITLOG:" $REMOTE_JUNITLOG
#echo "REMOTE_FILTER:" $REMOTE_FILTER
#echo "REMOTE_CLOVERLOG:" $REMOTE_CLOVERLOG
#echo "REMOTE_SUITE:" $REMOTE_SUITE
#echo "REMOTE_RUN:" $REMOTE_RUN
# Remove logfile
if [[ -n "$JUNITLOG" ]] ; then
ssh -q -i "$REMOTE_PKEY" $REMOTE_SERVER "if [ -f $REMOTE_JUNITLOG ] ; then rm $REMOTE_JUNITLOG; fi"
fi
if [[ -n "$JSONLOG" ]] ; then
ssh -q -i "$REMOTE_PKEY" $REMOTE_SERVER "if [ -f $REMOTE_JSONLOG ] ; then rm $REMOTE_JSONLOG; fi"
fi
if [[ -n "$COVERAGE" ]] ; then
ssh -q -i "$REMOTE_PKEY" $REMOTE_SERVER "if [ -f $REMOTE_CLOVERLOG ] ; then rm $REMOTE_CLOVERLOG; fi"
fi
# Copy suite file
scp -q -i "$REMOTE_PKEY" "$SUITE" $REMOTE_SERVER:$REMOTE_SUITE
# rsync
#vagrant rsync
## Build test command
COMMAND="cd $REMOTE_ROOT; XDEBUG_CONFIG=${XDEBUG_CONFIG} ${REMOTE_CAKETEST} --stderr "
if [[ ! -n "$COLORS" ]] ; then
COMMAND="${COMMAND} --no-colors"
fi
if [[ -n "$JUNITLOG" ]] ; then
COMMAND="${COMMAND} --log-junit ${REMOTE_JUNITLOG}"
fi
if [[ -n "$JSONLOG" ]] ; then
COMMAND="${COMMAND} --log-json ${REMOTE_JSONLOG}"
fi
if [[ -n "$BOOTSTRAP" ]] ; then
COMMAND="${COMMAND} --bootstrap ${REMOTE_BOOTSTRAP}"
fi
if [[ -n "$FILTER" ]] ; then
COMMAND="${COMMAND} --filter '${REMOTE_FILTER}'"
fi
if [[ -n "$COVERAGE" ]] ; then
COMMAND="${COMMAND} --coverage-clover ${REMOTE_COVERAGE}"
fi
if [[ "${REMOTE_RUN}" =~ ^/ ]]; then
COMMAND="${COMMAND} \"${REMOTE_RUN}\""
else
COMMAND="${COMMAND} app \"${REMOTE_RUN}\""
fi
## Execute
#echo $COMMAND
ssh -q -i "$REMOTE_PKEY" $REMOTE_SERVER "$COMMAND --debug"
# Copy the test output back to your local machine, where NetBeans expects to find it
# might not work on mac. definitely won't work on win!
if [[ -n "$JUNITLOG" ]] ; then
scp -q -i "$REMOTE_PKEY" $REMOTE_SERVER:$REMOTE_JUNITLOG "$JUNITLOG.tmp"
sed -e "s~$REMOTE_ROOT~$LOCAL_ROOT~g" "$JUNITLOG.tmp" > $JUNITLOG
fi
if [[ -n "$JSONLOG" ]] ; then
REMOTE_ROOT_SLASHED=`echo $REMOTE_ROOT | sed "s~/~\\\\\\\\\\\\\\\/~g"`
LOCAL_ROOT_SLASHED=`echo $LOCAL_ROOT | sed "s~/~\\\\\/~g"`
#echo $REMOTE_ROOT_SLASHED
#echo $LOCAL_ROOT_SLASHED
scp -q -i "$REMOTE_PKEY" $REMOTE_SERVER:$REMOTE_JSONLOG "$JSONLOG.tmp"
sed -e "s~$REMOTE_ROOT_SLASHED~$LOCAL_ROOT_SLASHED~g" "$JSONLOG.tmp" > $JSONLOG
fi
if [[ -n "$COVERAGE" ]] ; then
scp -q -i "$REMOTE_PKEY" $REMOTE_SERVER:"$REMOTE_CLOVERLOG" "$COVERAGE.tmp"
sed -e "s~$REMOTE_ROOT~$LOCAL_ROOT~g" "$COVERAGE.tmp" > $COVERAGE
fi
@nojimage
Copy link
Author

nojimage commented Oct 4, 2016

8.1でも動くはず。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment