88 lines
3.5 KiB
Bash
Executable File
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"
|
|
|