Files
scm_breeze/test/lib/design_test.sh

88 lines
3.5 KiB
Bash
Executable File

#!/bin/bash
# ------------------------------------------------------------------------------
# SCM Breeze - Streamline your SCM workflow.
# Copyright 2011 Nathan Broadbent (http://madebynathan.com). All Rights Reserved.
# Released under the LGPL (GNU Lesser General Public License)
# ------------------------------------------------------------------------------
#
# Unit tests for git shell scripts
export scmbDir="$( cd -P "$( dirname "$0" )" && pwd )/../.."
# Zsh compatibility
if [ -n "${ZSH_VERSION:-}" ]; then shell="zsh"; SHUNIT_PARENT=$0; setopt shwordsplit; fi
# Load test helpers
source "$scmbDir/test/support/test_helper"
# Load functions to test
source "$scmbDir/lib/scm_breeze.sh"
source "$scmbDir/lib/design.sh"
# Setup and tear down
#-----------------------------------------------------------------------------
oneTimeSetUp() {
root_design_dir=$(mktemp -d -t tmp.XXXXXXXXXX)
project_design_dir="design"
design_base_dirs="a b c d e"
design_av_dirs="aa bb cc dd ee"
design_ext_dirs="x y z"
project_dir=$(mktemp -d -t tmp.XXXXXXXXXX)
project_name=$(basename $project_dir)
}
oneTimeTearDown() {
rm -rf $project_dir $root_design_dir
}
#-----------------------------------------------------------------------------
# Unit tests
#-----------------------------------------------------------------------------
test_design() {
cd $project_dir
git init > /dev/null
# Test creation of base and extra design directories
design init > /dev/null
for dir in $design_ext_dirs; do
assertTrue "Root design dir not created! ($dir)" "[ -d $root_design_dir/$dir ]" || return
done
for dir in $design_base_dirs; do
assertTrue "Design dir not created! ($dir)" "[ -d $root_design_dir/projects/$project_name/$dir ]" || return
assertTrue "Project design dir not symlinked! ($dir)" "[ -d $project_dir/design/$dir ]" || return
done
# Test creation of 'av' design directories
design init --av > /dev/null
for dir in $design_base_dirs $design_av_dirs; do
assertTrue "Design dir not created! ($dir)" "[ -d $root_design_dir/projects/$project_name/$dir ]" || return
assertTrue "Project design dir not symlinked! ($dir)" "[ -d $project_dir/design/$dir ]" || return
done
# Test that 'design trim' removes empty directories, but doesn't touch non-empty directories
touch design/a/testfile design/c/testfile
design trim > /dev/null
assertTrue "[ -d $project_dir/design/a ] && [ -d $root_design_dir/projects/$project_name/a ]"
assertFalse "[ -d $project_dir/design/b ] || [ -d $root_design_dir/projects/$project_name/b ]"
assertTrue "[ -d $project_dir/design/c ] && [ -d $root_design_dir/projects/$project_name/c ]"
assertFalse "[ -d $project_dir/design/d ] || [ -d $root_design_dir/projects/$project_name/d ]"
assertFalse "[ -d $project_dir/design/e ] || [ -d $root_design_dir/projects/$project_name/e ]"
# Test that 'design rm' removes all directories
touch design/a/testfile design/c/testfile
design rm > /dev/null
assertFalse "[ -d $project_dir/design/a ] || [ -d $root_design_dir/projects/$project_name/a ]"
assertFalse "[ -d $project_dir/design/b ] || [ -d $root_design_dir/projects/$project_name/b ]"
assertFalse "[ -d $project_dir/design/c ] || [ -d $root_design_dir/projects/$project_name/c ]"
assertFalse "[ -d $project_dir/design/d ] || [ -d $root_design_dir/projects/$project_name/d ]"
assertFalse "[ -d $project_dir/design/e ] || [ -d $root_design_dir/projects/$project_name/e ]"
}
# load and run shUnit2
# Call this function to run tests
source "$scmbDir/test/support/shunit2"