blob: 663303ed726029d8e3f819df13dcb26bb7f35db5 [file] [log] [blame]
#!/bin/sh
# ====================================================================
# Copyright (c) 2014 Obeo
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
# Obeo - initial API and implementation
# ====================================================================
LSTEST() {
echo "[TEST] $@"
}
LSFAILURE() {
echo "[FAILURE] $@"
}
LSPASS() {
echo "[PASS] $@"
}
assertIntEquals() {
local expected="${1}"
local actual="${2}"
local classname="${3}"
local name="${4}"
local file="${5}"
shift 5
if [ ${expected} -ne ${actual} ]; then
LSFAILURE "${classname} ${name}
$@
expected=${expected}
actual=${actual}"
echo "failure;${classname};${name};$@" >> "${file}"
else
LSPASS "${classname} ${name}"
echo "success;${classname};${name}" >> "${file}"
fi
}
assertStringEquals() {
local expected="${1}"
local actual="${2}"
local classname="${3}"
local name="${4}"
local file="${5}"
shift 5
if [ "${expected}" != "${actual}" ]; then
LSFAILURE "${classname} ${name}
$@
expected=${expected}
actual=${actual}"
echo "failure;${classname};${name};$@" >> "${file}"
else
LSPASS "${classname} ${name}"
echo "success;${classname};${name}" >> "${file}"
fi
}
testCompositeRepositoryContent() {
local url="${1}"
local classname="${2}"
local name="${3}"
local file="${4}"
shift 4
local expectedContents=("$@")
actualContents=( $(compositeRepository -location "${url}" -list) )
assertIntEquals ${#expectedContents[@]} ${#actualContents[@]} \
"${classname}" "${name} (size)" "${file}" "Contents size of composite repository '${url}' does not match"
for i in ${!actualContents[*]}; do
assertStringEquals "${expectedContents[$i]}" "${actualContents[$i]}" \
"${classname}" "${name} contents(${i})" "${file}" "Contents of composite repository '${url}' does not match"
done
}
assertFolderDoesNotExist() {
local folder="${1}"
local classname="${2}"
local name="${3}"
local file="${4}"
shift 4
if [ -d "${folder}" ]; then
LSFAILURE "${classname} ${name}
Folder '${folder}' should not exists"
echo "failure;${classname};${name};Folder '${folder}' should not exists" >> "${file}"
else
LSPASS "${classname} ${name}"
echo "success;${classname};${name}" >> "${file}"
fi
}
assertEmptyFolder() {
local folder="${1}"
local classname="${2}"
local name="${3}"
local file="${4}"
shift 4
local folderContents=( $(echo "${folder}/"*) )
if [ "${#folderContents[@]}" -ne "0" ]; then
LSFAILURE "${classname} ${name}
Folder '${folder}' should be empty"
echo "failure;${classname};${name};Folder '${folder}' should be empty" >> "${file}"
else
LSPASS "${classname} ${name}"
echo "success;${classname};${name}" >> "${file}"
fi
}
toJunitXML() {
local file="${1}"
local nbTests=$(cat "${file}" | grep -v '^[ \t]*#[ \t]*' | wc -l | sed 's/ //g')
echo "<testsuite tests=\"${nbTests}\">"
IFS=$'\r\n' GLOBIGNORE='*' :; local tests=($(cat ${file} | grep -v '^[ \t]*#[ \t]*'))
for test in ${tests[@]}; do
local result=($(echo $test | cut -f 1 -d ';'))
local classname=($(echo $test | cut -f 2 -d ';'))
local name=($(echo $test | cut -f 3 -d ';'))
if [ "${result}" = "success" ]; then
echo "\t<testcase classname=\"${classname}\" name=\"$name\"/>"
else
local error=($(echo $test | cut -f 4 -d ';'))
echo "\t<testcase classname=\"${classname}\" name=\"$name\">"
echo "\t\t<failure type=\"failure\">${error}</failure>"
echo "\t</testcase>"
fi
done
echo "</testsuite>"
}
beforeClass() {
local reports="${1}"
timestamp="$(date)"
echo "# ${timestamp}" > "${reports}"
xmlReports=$(echo "${reports}" | sed 's/\.txt/\.xml/')
echo "<!-- ${timestamp} -->" > "${xmlReports}"
}
afterClass() {
local reports="${1}"
xmlReports=$(echo "${reports}" | sed 's/\.txt/\.xml/')
toJunitXML "${reports}" >> "${xmlReports}"
}