🎨 Refactor core.sh code

This commit is contained in:
fsquillace 2016-05-27 21:43:20 +01:00
parent 19f4848a9d
commit 3102ff1d8a
2 changed files with 242 additions and 256 deletions

View file

@ -13,12 +13,19 @@ NAME='JuNest'
CMD='junest'
DESCRIPTION='The Arch Linux based distro that runs upon any Linux distros without root access'
NOT_AVAILABLE_ARCH=102
NOT_EXISTING_FILE=103
ARCHITECTURE_MISMATCH=104
ROOT_ACCESS_ERROR=105
NESTED_ENVIRONMENT=106
VARIABLE_NOT_SET=107
if [ "$JUNEST_ENV" == "1" ]
then
die "Error: Nested ${NAME} environments are not allowed"
die_on_status $NESTED_ENVIRONMENT "Error: Nested ${NAME} environments are not allowed"
elif [ ! -z $JUNEST_ENV ] && [ "$JUNEST_ENV" != "0" ]
then
die "The variable JUNEST_ENV is not properly set"
die_on_status $VARIABLE_NOT_SET "The variable JUNEST_ENV is not properly set"
fi
[ -z ${JUNEST_HOME} ] && JUNEST_HOME=~/.${CMD}
@ -78,6 +85,8 @@ CURL="curl -L -J -O -k"
TAR=tar
CHOWN="chown"
LN=ln
RM=rm
MKDIR=mkdir
LD_EXEC="$LD_LIB --library-path ${JUNEST_HOME}/usr/lib:${JUNEST_HOME}/lib"
@ -90,15 +99,15 @@ function ln_cmd(){
}
function rm_cmd(){
rm $@ || $LD_EXEC ${JUNEST_HOME}/usr/bin/rm $@
$RM $@ || $LD_EXEC ${JUNEST_HOME}/usr/bin/$RM $@
}
function chown_cmd(){
$CHOWN $@ || $LD_EXEC ${JUNEST_HOME}/usr/bin/chown $@
$CHOWN $@ || $LD_EXEC ${JUNEST_HOME}/usr/bin/$CHOWN $@
}
function mkdir_cmd(){
mkdir $@ || $LD_EXEC ${JUNEST_HOME}/usr/bin/mkdir $@
$MKDIR $@ || $LD_EXEC ${JUNEST_HOME}/usr/bin/$MKDIR $@
}
function proot_cmd(){
@ -125,11 +134,6 @@ function chroot_cmd(){
################################# MAIN FUNCTIONS ##############################
NOT_AVAILABLE_ARCH=102
NOT_EXISTING_FILE=103
ARCHITECTURE_MISMATCH=104
ROOT_ACCESS_ERROR=105
#######################################
# Check if the JuNest system is installed in JUNEST_HOME.
#
@ -276,7 +280,7 @@ function run_env_as_root(){
# With chown the ownership of the files is assigned to the real user
trap - QUIT EXIT ABRT KILL TERM INT
trap "[ -z $uid ] || chown_cmd -R ${uid} ${JUNEST_HOME}; rm_cmd -f ${JUNEST_HOME}/etc/mtab" EXIT QUIT ABRT KILL TERM INT
trap "[ -z $uid ] || chown_cmd -R ${uid} ${JUNEST_HOME};" EXIT QUIT ABRT KILL TERM INT
# The mtab file should already be available in the image.
# This following instruction will be deleted
@ -362,19 +366,35 @@ function run_env_as_user(){
# The mtab file should already be available in the image.
# This following instruction will be deleted
[ ! -e ${JUNEST_HOME}/etc/mtab ] && ln_cmd -s /proc/self/mounts ${JUNEST_HOME}/etc/mtab
_run_env_with_qemu "$(_provide_bindings_as_user) -r ${JUNEST_HOME} $1" "${@:2}"
_provide_bindings_as_user
local bindings="$RESULT"
unset RESULT
_run_env_with_qemu "$bindings -r ${JUNEST_HOME} $1" "${@:2}"
}
#######################################
# Provide the proot binding options for the normal user.
#
# Globals:
# HOME (RO) : The home directory.
# RESULT (WO) : Contains the binding options.
# Arguments:
# None
# Returns:
# None
# Output:
# None
#######################################
function _provide_bindings_as_user(){
# The list of bindings can be found in `proot --help`. This function excludes
# /etc/mtab file so that it will not give conflicts with the related
# symlink in the image.
local existing_bindings=""
RESULT=""
for bind in "/etc/host.conf" "/etc/hosts" "/etc/hosts.equiv" "/etc/netgroup" "/etc/networks" "/etc/passwd" "/etc/group" "/etc/nsswitch.conf" "/etc/resolv.conf" "/etc/localtime" "/dev" "/sys" "/proc" "/tmp" "$HOME"
do
[ -e "$bind" ] && existing_bindings="-b $bind $existing_bindings"
[ -e "$bind" ] && RESULT="-b $bind $RESULT"
done
echo $existing_bindings
}
#######################################

View file

@ -6,32 +6,27 @@ set +e
function oneTimeSetUp(){
[ -z "$SKIP_ROOT_TESTS" ] && SKIP_ROOT_TESTS=0
CURRPWD=$PWD
ENV_MAIN_HOME=/tmp/junest-test-home
[ -e $ENV_MAIN_HOME ] || JUNEST_HOME=$ENV_MAIN_HOME bash -ic "source $CURRPWD/$(dirname $0)/../lib/utils.sh; source $CURRPWD/$(dirname $0)/../lib/core.sh; setup_env"
JUNEST_HOME=""
setUpUnitTests
}
function install_mini_env(){
cp -rfa $ENV_MAIN_HOME/* $JUNEST_HOME
}
function setUp(){
cd $CURRPWD
JUNEST_HOME=$(TMPDIR=/tmp mktemp -d -t envhome.XXXXXXXXXX)
JUNEST_BASE="$CURRPWD/$(dirname $0)/.."
source "${JUNEST_BASE}/lib/utils.sh"
source "${JUNEST_BASE}/lib/core.sh"
ORIGIN_WD=$(TMPDIR=/tmp mktemp -d -t envowd.XXXXXXXXXX)
cd $ORIGIN_WD
JUNEST_TEMPDIR=$(TMPDIR=/tmp mktemp -d -t envtemp.XXXXXXXXXX)
JUNEST_HOME=$(TMPDIR=/tmp mktemp -d -t junest-home.XXXXXXXXXX)
mkdir -p ${JUNEST_HOME}/etc/junest
echo "JUNEST_ARCH=x86_64" > ${JUNEST_HOME}/etc/junest/info
mkdir -p ${JUNEST_HOME}/etc/ca-certificates
JUNEST_TEMPDIR=$(TMPDIR=/tmp mktemp -d -t junest-temp.XXXXXXXXXX)
source "$(dirname $0)/../lib/utils.sh"
source "$(dirname $0)/../lib/core.sh"
set +e
trap - QUIT EXIT ABRT KILL TERM INT
trap "rm -rf ${JUNEST_HOME}; rm -rf ${ORIGIN_WD}; rm -rf ${JUNEST_TEMPDIR}" EXIT QUIT ABRT KILL TERM INT
trap "rm -rf ${JUNEST_HOME}; rm -rf ${JUNEST_TEMPDIR}" EXIT QUIT ABRT KILL TERM INT
ld_exec() {
echo "ld_exec $@"
}
LD_EXEC=ld_exec
}
@ -39,18 +34,20 @@ function tearDown(){
# the CA directories are read only and can be deleted only by changing the mod
[ -d ${JUNEST_HOME}/etc/ca-certificates ] && chmod -R +w ${JUNEST_HOME}/etc/ca-certificates
rm -rf $JUNEST_HOME
rm -rf $ORIGIN_WD
rm -rf $JUNEST_TEMPDIR
trap - QUIT EXIT ABRT KILL TERM INT
}
function test_is_env_installed(){
assertCommandFail is_env_installed
touch $JUNEST_HOME/just_file
assertCommandSuccess is_env_installed
}
function test_ln(){
LN=echo assertCommandSuccess ln_cmd -s ln_file new_file
assertEquals "-s ln_file new_file" "$(cat $STDOUTF)"
LN=false assertCommandSuccess ln_cmd -s ln_file new_file
assertEquals "ld_exec ${JUNEST_HOME}/usr/bin/false -s ln_file new_file" "$(cat $STDOUTF)"
LN=false LD_EXEC=false assertCommandFail ln_cmd
}
function test_download(){
WGET=/bin/true
@ -64,236 +61,55 @@ function test_download(){
WGET=/bin/false CURL=/bin/false assertCommandFail download_cmd
}
function test_ln(){
install_mini_env
touch ln_file
assertCommandSuccess ln_cmd -s ln_file new_file
assertTrue "[ -e new_file ]"
rm new_file
touch ln_file
OLDPATH="$PATH"
PATH=""
$(ln_cmd -s ln_file new_file 2> /dev/null)
local ret=$?
PATH="$OLDPATH"
assertEquals $ret 0
assertTrue "[ -e new_file ]"
}
function test_rm(){
install_mini_env
RM=echo assertCommandSuccess rm_cmd rm_file
assertEquals "rm_file" "$(cat $STDOUTF)"
touch rm_file
assertCommandSuccess rm_cmd rm_file
assertTrue "[ ! -e rm_file ]"
RM=false assertCommandSuccess rm_cmd rm_file
assertEquals "ld_exec ${JUNEST_HOME}/usr/bin/false rm_file" "$(cat $STDOUTF)"
touch rm_file
OLDPATH="$PATH"
PATH=""
rm_cmd rm_file 2> /dev/null
local ret=$?
PATH="$OLDPATH"
assertEquals $ret 0
assertTrue "[ ! -e rm_file ]"
RM=false LD_EXEC=false assertCommandFail rm_cmd rm_file
}
function test_chown(){
install_mini_env
local id=$(id -u)
touch chown_file
assertCommandSuccess chown_cmd $id chown_file
CHOWN=echo assertCommandSuccess chown_cmd $id chown_file
assertEquals "$id chown_file" "$(cat $STDOUTF)"
touch chown_file
OLDPATH="$PATH"
PATH=""
chown_cmd $id chown_file 2> /dev/null
local ret=$?
PATH="$OLDPATH"
assertEquals $ret 0
CHOWN=false assertCommandSuccess chown_cmd $id chown_file
assertEquals "ld_exec ${JUNEST_HOME}/usr/bin/false $id chown_file" "$(cat $STDOUTF)"
CHOWN=false LD_EXEC=false assertCommandFail chown_cmd $id chown_file
}
function test_mkdir(){
install_mini_env
MKDIR=echo assertCommandSuccess mkdir_cmd -p new_dir/new_dir
assertEquals "-p new_dir/new_dir" "$(cat $STDOUTF)"
assertCommandSuccess mkdir_cmd -p new_dir/new_dir
assertTrue "[ -d new_dir/new_dir ]"
rm -rf new_dir
MKDIR=false assertCommandSuccess mkdir_cmd -p new_dir/new_dir
assertEquals "ld_exec ${JUNEST_HOME}/usr/bin/false -p new_dir/new_dir" "$(cat $STDOUTF)"
OLDPATH="$PATH"
PATH=""
mkdir_cmd -p new_dir/new_dir 2> /dev/null
local ret=$?
PATH="$OLDPATH"
assertEquals $ret 0
assertTrue "[ -d new_dir/new_dir ]"
MKDIR=false LD_EXEC=false assertCommandFail mkdir_cmd -p new_dir/new_dir
}
function test_setup_env(){
wget_mock(){
# Proof that the setup is happening
# inside $JUNEST_TEMPDIR
local cwd=${PWD#${JUNEST_TEMPDIR}}
local parent_dir=${PWD%${cwd}}
assertEquals "$JUNEST_TEMPDIR" "${parent_dir}"
touch file
tar -czvf ${CMD}-${ARCH}.tar.gz file
}
WGET=wget_mock
setup_env 1> /dev/null
assertTrue "[ -e $JUNEST_HOME/file ]"
assertTrue "[ -e $JUNEST_HOME/run/lock ]"
function test_chroot(){
CHROOT=echo assertCommandSuccess chroot_cmd root
assertEquals "root" "$(cat $STDOUTF)"
assertCommandFailOnStatus 102 setup_env "noarch"
CHROOT=false CLASSIC_CHROOT=echo assertCommandSuccess chroot_cmd root
assertEquals "root" "$(cat $STDOUTF)"
CHROOT=false CLASSIC_CHROOT=false assertCommandSuccess chroot_cmd root
assertEquals "ld_exec $JUNEST_HOME/usr/bin/chroot root" "$(cat $STDOUTF)"
CHROOT=false CLASSIC_CHROOT=false LD_EXEC=false assertCommandFail chroot_cmd root
}
function test_proot_cmd_compat(){
PROOT="/bin/true" assertCommandSuccess proot_cmd "" ""
function test_setup_env_from_file(){
touch file
tar -czvf ${CMD}-${ARCH}.tar.gz file 1> /dev/null
setup_env_from_file ${CMD}-${ARCH}.tar.gz &> /dev/null
assertTrue "[ -e $JUNEST_HOME/file ]"
assertTrue "[ -e $JUNEST_HOME/run/lock ]"
assertCommandFailOnStatus 103 setup_env_from_file noexist.tar.gz
}
function test_setup_env_from_file_with_absolute_path(){
touch file
tar -czvf ${CMD}-${ARCH}.tar.gz file 1> /dev/null
setup_env_from_file ${ORIGIN_WD}/${CMD}-${ARCH}.tar.gz &> /dev/null
assertTrue "[ -e $JUNEST_HOME/file ]"
assertTrue "[ -e $JUNEST_HOME/run/lock ]"
}
function test_run_env_as_root(){
[ $SKIP_ROOT_TESTS -eq 1 ] && return
install_mini_env
CHROOT="sudo $CHROOT"
CLASSIC_CHROOT="sudo $CLASSIC_CHROOT"
CHOWN="sudo $CHOWN"
assertCommandSuccess run_env_as_root pwd
assertEquals "/" "$(cat $STDOUTF)"
assertCommandSuccess run_env_as_root [ -e /run/lock ]
assertCommandSuccess run_env_as_root [ -e $HOME ]
# test that normal user has ownership of the files created by root
assertCommandSuccess run_env_as_root touch /a_root_file
assertCommandSuccess run_env_as_root stat -c '%u' /a_root_file
assertEquals "$UID" "$(cat $STDOUTF)"
SH=("sh" "--login" "-c" "type -t type")
assertCommandSuccess run_env_as_root
assertEquals "builtin" "$(cat $STDOUTF)"
SH=("sh" "--login" "-c" "[ -e /run/lock ]")
assertCommandSuccess run_env_as_root
SH=("sh" "--login" "-c" "[ -e $HOME ]")
assertCommandSuccess run_env_as_root
}
function test_run_env_as_root_different_arch(){
[ $SKIP_ROOT_TESTS -eq 1 ] && return
install_mini_env
echo "JUNEST_ARCH=XXX" > ${JUNEST_HOME}/etc/junest/info
assertCommandFailOnStatus 104 run_env_as_root pwd
}
function test_run_env_as_classic_root(){
[ $SKIP_ROOT_TESTS -eq 1 ] && return
install_mini_env
CHROOT="sudo unknowncommand"
CLASSIC_CHROOT="sudo $CLASSIC_CHROOT"
CHOWN="sudo $CHOWN"
assertCommandSuccess run_env_as_root pwd
assertEquals "/" "$(cat $STDOUTF)"
assertCommandSuccess run_env_as_root [ -e /run/lock ]
}
function test_run_env_as_junest_root(){
[ $SKIP_ROOT_TESTS -eq 1 ] && return
install_mini_env
CHROOT="sudo unknowncommand"
CLASSIC_CHROOT="sudo unknowncommand"
LD_EXEC="sudo $LD_EXEC"
CHOWN="sudo $CHOWN"
assertCommandSuccess run_env_as_root pwd
assertEquals "/" "$(cat $STDOUTF)"
assertCommandSuccess run_env_as_root [ -e /run/lock ]
assertCommandFail run_env_as_root [ -e $HOME ]
}
function test_run_env_as_user(){
install_mini_env
assertCommandSuccess run_env_as_user "-k 3.10" "/usr/bin/mkdir" "-v" "/newdir2"
assertEquals "/usr/bin/mkdir" "$(cat $STDOUTF| awk -F: '{print $1}')"
assertTrue "[ -e $JUNEST_HOME/newdir2 ]"
SH=("/usr/bin/echo")
assertCommandSuccess run_env_as_user "-k 3.10"
assertEquals "-c :" "$(cat $STDOUTF)"
}
function test_run_env_as_proot_mtab(){
install_mini_env
assertCommandSuccess run_env_as_fakeroot "-k 3.10" "echo"
assertTrue "[ -e $JUNEST_HOME/etc/mtab ]"
assertCommandSuccess run_env_as_user "-k 3.10" "echo"
assertTrue "[ -e $JUNEST_HOME/etc/mtab ]"
}
function test_run_env_as_root_mtab(){
[ $SKIP_ROOT_TESTS -eq 1 ] && return
install_mini_env
CHROOT="sudo $CHROOT"
CLASSIC_CHROOT="sudo $CLASSIC_CHROOT"
CHOWN="sudo $CHOWN"
assertCommandSuccess run_env_as_root "echo"
assertTrue "[ ! -e $JUNEST_HOME/etc/mtab ]"
}
function test_run_env_with_quotes(){
install_mini_env
assertCommandSuccess run_env_as_user "-k 3.10" "bash" "-c" "/usr/bin/mkdir -v /newdir2"
assertEquals "/usr/bin/mkdir" "$(cat $STDOUTF| awk -F: '{print $1}')"
assertTrue "[ -e $JUNEST_HOME/newdir2 ]"
}
function test_run_env_as_user_proot_args(){
install_mini_env
assertCommandSuccess run_env_as_user "--help" ""
mkdir $JUNEST_TEMPDIR/newdir
touch $JUNEST_TEMPDIR/newdir/newfile
assertCommandSuccess run_env_as_user "-b $JUNEST_TEMPDIR/newdir:/newdir -k 3.10" "ls" "-l" "/newdir/newfile"
assertCommandFail _run_env_with_proot --helps
}
function test_run_env_with_proot_compat(){
PROOT="/bin/true"
assertCommandSuccess _run_env_with_proot "" ""
PROOT="/bin/false" assertCommandFail _run_env_with_proot --helps
}
function test_run_env_with_proot_as_root(){
[ $SKIP_ROOT_TESTS -eq 1 ] && return
install_mini_env
assertCommandFail sudo run_env_as_user
assertCommandFail sudo run_env_as_fakeroot
PROOT="/bin/false" assertCommandFail proot_cmd --helps
}
function test_run_proot_seccomp(){
@ -316,14 +132,146 @@ function test_run_proot_seccomp(){
PROOT_NO_SECCOMP=1" "$(cat $STDOUTF | grep "^PROOT_NO_SECCOMP")"
}
function test_is_env_installed(){
rm -rf $JUNEST_HOME/*
assertCommandFail is_env_installed
touch $JUNEST_HOME/just_file
assertCommandSuccess is_env_installed
}
function test_setup_env(){
rm -rf $JUNEST_HOME/*
wget_mock(){
# Proof that the setup is happening
# inside $JUNEST_TEMPDIR
local cwd=${PWD#${JUNEST_TEMPDIR}}
local parent_dir=${PWD%${cwd}}
assertEquals "$JUNEST_TEMPDIR" "${parent_dir}"
touch file
tar -czvf ${CMD}-${ARCH}.tar.gz file
}
WGET=wget_mock
setup_env 1> /dev/null
assertTrue "[ -e $JUNEST_HOME/file ]"
assertTrue "[ -e $JUNEST_HOME/run/lock ]"
assertCommandFailOnStatus 102 setup_env "noarch"
}
function test_setup_env_from_file(){
rm -rf $JUNEST_HOME/*
touch file
tar -czvf ${CMD}-${ARCH}.tar.gz file 1> /dev/null
assertCommandSuccess setup_env_from_file ${CMD}-${ARCH}.tar.gz
assertTrue "[ -e $JUNEST_HOME/file ]"
}
function test_setup_env_from_file_not_existing_file(){
assertCommandFailOnStatus 103 setup_env_from_file noexist.tar.gz
}
function test_setup_env_from_file_with_absolute_path(){
rm -rf $JUNEST_HOME/*
touch file
tar -czvf ${CMD}-${ARCH}.tar.gz file 1> /dev/null
assertCommandSuccess setup_env_from_file ${ORIGIN_WD}/${CMD}-${ARCH}.tar.gz
assertTrue "[ -e $JUNEST_HOME/file ]"
}
function test_run_env_as_root_different_arch(){
echo "JUNEST_ARCH=XXX" > ${JUNEST_HOME}/etc/junest/info
assertCommandFailOnStatus 104 run_env_as_root pwd
}
function _test_run_env_as_root() {
chroot_cmd() {
[ "$JUNEST_ENV" != "1" ] && return 1
echo $@
}
assertCommandSuccess run_env_as_root $@
assertEquals "/proc/self/mounts" "$(readlink ${JUNEST_HOME}/etc/mtab)"
}
function test_run_env_as_root_cmd(){
_test_run_env_as_root pwd
assertEquals "$JUNEST_HOME /bin/sh --login -c pwd" "$(cat $STDOUTF)"
}
function test_run_env_as_classic_root_no_cmd(){
_test_run_env_as_root
assertEquals "$JUNEST_HOME /bin/sh --login -c /bin/sh --login" "$(cat $STDOUTF)"
}
#function test_run_env_with_proot_as_root(){
#[ $SKIP_ROOT_TESTS -eq 1 ] && return
#sudo run_env_as_user
#sudo run_env_as_fakeroot
#}
function test_run_env_as_user(){
_run_env_with_qemu() {
echo $@
}
assertCommandSuccess run_env_as_user "-k 3.10" "/usr/bin/mkdir" "-v" "/newdir2"
_provide_bindings_as_user
assertEquals "${RESULT}-r ${JUNEST_HOME} -k 3.10 /usr/bin/mkdir -v /newdir2" "$(cat $STDOUTF)"
SH=("/usr/bin/echo")
assertCommandSuccess run_env_as_user "-k 3.10"
_provide_bindings_as_user
assertEquals "${RESULT}-r ${JUNEST_HOME} -k 3.10" "$(cat $STDOUTF)"
}
function test_run_env_as_fakeroot(){
install_mini_env
assertCommandSuccess run_env_as_fakeroot "-k 3.10" "id"
assertEquals "uid=0(root)" "$(cat $STDOUTF | awk '{print $1}')"
_run_env_with_qemu() {
echo $@
}
assertCommandSuccess run_env_as_fakeroot "-k 3.10" "/usr/bin/mkdir" "-v" "/newdir2"
assertEquals "-S ${JUNEST_HOME} -k 3.10 /usr/bin/mkdir -v /newdir2" "$(cat $STDOUTF)"
SH=("/usr/bin/echo")
assertCommandSuccess run_env_as_fakeroot "-k 3.10"
assertEquals "-S ${JUNEST_HOME} -k 3.10" "$(cat $STDOUTF)"
}
function test_run_env_as_proot_mtab(){
_run_env_with_qemu() {
echo $@
}
assertCommandSuccess run_env_as_fakeroot "-k 3.10" "echo"
assertTrue "[ -e $JUNEST_HOME/etc/mtab ]"
assertCommandSuccess run_env_as_user "-k 3.10" "echo"
assertTrue "[ -e $JUNEST_HOME/etc/mtab ]"
}
function test_run_env_with_quotes(){
_run_env_with_qemu() {
echo $@
}
assertCommandSuccess run_env_as_user "-k 3.10" "bash" "-c" "/usr/bin/mkdir -v /newdir2"
_provide_bindings_as_user
assertEquals "${RESULT}-r ${JUNEST_HOME} -k 3.10 bash -c /usr/bin/mkdir -v /newdir2" "$(cat $STDOUTF)"
}
function test_run_env_with_proot_args(){
proot_cmd() {
[ "$JUNEST_ENV" != "1" ] && return 1
echo $@
}
assertCommandSuccess _run_env_with_proot --help
assertEquals "--help /bin/sh --login" "$(cat $STDOUTF)"
assertCommandSuccess _run_env_with_proot --help mycommand
assertEquals "--help /bin/sh --login -c mycommand" "$(cat $STDOUTF)"
assertCommandFail _run_env_with_proot
}
function test_delete_env(){
install_mini_env
echo "N" | delete_env 1> /dev/null
assertCommandSuccess is_env_installed
echo "Y" | delete_env 1> /dev/null
@ -331,9 +279,27 @@ function test_delete_env(){
}
function test_nested_env(){
install_mini_env
JUNEST_ENV=1 bash -ic "source $CURRPWD/$(dirname $0)/../lib/utils.sh; source $CURRPWD/$(dirname $0)/../lib/core.sh" &> /dev/null
assertEquals 1 $?
JUNEST_ENV=1 assertCommandFailOnStatus 106 bash -ic "source $PWD/$(dirname $0)/../lib/utils.sh; source $PWD/$(dirname $0)/../lib/core.sh"
}
function test_nested_env_not_set_variable(){
JUNEST_ENV=aaa assertCommandFailOnStatus 107 bash -ic "source $PWD/$(dirname $0)/../lib/utils.sh; source $PWD/$(dirname $0)/../lib/core.sh"
}
function test_qemu() {
echo "JUNEST_ARCH=arm" > ${JUNEST_HOME}/etc/junest/info
rm_cmd() {
echo $@
}
ln_cmd() {
echo $@
}
_run_env_with_proot() {
echo $@
}
RANDOM=100 ARCH=x86_64 assertCommandSuccess _run_env_with_qemu ""
assertEquals "$(echo -e "-s $JUNEST_HOME/opt/qemu/qemu-arm-static-x86_64 /tmp/qemu-arm-static-x86_64-100\n-q /tmp/qemu-arm-static-x86_64-100")" "$(cat $STDOUTF)"
}
source $(dirname $0)/shunit2