summaryrefslogtreecommitdiff
path: root/test/libapt
diff options
context:
space:
mode:
Diffstat (limited to 'test/libapt')
-rw-r--r--test/libapt/assert.h27
-rw-r--r--test/libapt/compareversion_test.cc7
-rw-r--r--test/libapt/getlanguages_test.cc12
-rw-r--r--test/libapt/getlistoffilesindir_test.cc2
-rw-r--r--test/libapt/hashsums_test.cc2
-rw-r--r--test/libapt/makefile4
-rw-r--r--test/libapt/parsedepends_test.cc4
-rwxr-xr-xtest/libapt/run-tests29
-rw-r--r--test/libapt/strutil_test.cc2
-rw-r--r--test/libapt/versions.lst106
10 files changed, 177 insertions, 18 deletions
diff --git a/test/libapt/assert.h b/test/libapt/assert.h
index fae9b6c64..a07be4b57 100644
--- a/test/libapt/assert.h
+++ b/test/libapt/assert.h
@@ -26,6 +26,18 @@ void assertEquals(int const &expect, unsigned int const &get, unsigned long cons
assertEquals<unsigned int const&, unsigned int const&>(expect, get, line);
}
+void assertEquals(unsigned long const &expect, int const &get, unsigned long const &line) {
+ if (get < 0)
+ OutputAssertEqual(expect, "==", get, line);
+ assertEquals<unsigned long const&, unsigned long const&>(expect, get, line);
+}
+
+void assertEquals(int const &expect, unsigned long const &get, unsigned long const &line) {
+ if (expect < 0)
+ OutputAssertEqual(expect, "==", get, line);
+ assertEquals<unsigned long const&, unsigned long const&>(expect, get, line);
+}
+
#define equalsOr2(x,y,z) assertEqualsOr2(y, z, x, __LINE__)
@@ -54,6 +66,21 @@ void assertEqualsOr2(int const &expect1, int const &expect2, unsigned int const
}
+#define equalsOr3(w,x,y,z) assertEqualsOr3(x, y, z, w, __LINE__)
+
+template < typename X, typename Y >
+void OutputAssertEqualOr3(X expect1, X expect2, X expect3, char const* compare, Y get, unsigned long const &line) {
+ std::cerr << "Test FAILED: »" << expect1 << "« or »" << expect2 << "« or »" << expect3 << "« " << compare << " »" << get << "« at line " << line << std::endl;
+}
+
+template < typename X, typename Y >
+void assertEqualsOr3(X expect1, X expect2, X expect3, Y get, unsigned long const &line) {
+ if (expect1 == get || expect2 == get || expect3 == get)
+ return;
+ OutputAssertEqualOr3(expect1, expect2, expect3, "==", get, line);
+}
+
+
// simple helper to quickly output a vectors
template < typename X >
void dumpVector(X vec) {
diff --git a/test/libapt/compareversion_test.cc b/test/libapt/compareversion_test.cc
index b6213e84c..fdb1d5674 100644
--- a/test/libapt/compareversion_test.cc
+++ b/test/libapt/compareversion_test.cc
@@ -63,6 +63,9 @@ void assertVersion(int const &CurLine, string const &A, string const &B, int con
bool RunTest(const char *File)
{
+ if (FileExists(File) == false)
+ return _error->Error("Versiontestfile %s doesn't exist!", File);
+
ifstream F(File,ios::in);
if (!F != 0)
return false;
@@ -112,8 +115,8 @@ bool RunTest(const char *File)
int main(int argc, char *argv[])
{
- if (argc <= 1)
- RunTest("../versions.lst");
+ if (argc != 2)
+ return 1;
else
RunTest(argv[1]);
diff --git a/test/libapt/getlanguages_test.cc b/test/libapt/getlanguages_test.cc
index f6aa7a697..a1c801ea2 100644
--- a/test/libapt/getlanguages_test.cc
+++ b/test/libapt/getlanguages_test.cc
@@ -126,13 +126,19 @@ int main(int argc,char *argv[])
_config->Set("Dir::State::lists", argv[1]);
vec = APT::Configuration::getLanguages(true, false, env);
- equals(vec.size(), 6);
+ equals(vec.size(), 7);
equals(vec[0], "de_DE");
equals(vec[1], "de");
equals(vec[2], "en");
equals(vec[3], "none");
- equalsOr2(vec[4], "pt", "tr");
- equalsOr2(vec[5], "tr", "pt");
+ equalsOr3(vec[4], "pt", "tr", "ast_DE");
+ equalsOr3(vec[5], "tr", "pt", "ast_DE");
+ equalsOr3(vec[6], "tr", "pt", "ast_DE");
+
+ _config->Set("Acquire::Languages", "none");
+ vec = APT::Configuration::getLanguages(true, false, env);
+ equals(vec.size(), 0);
+ _config->Set("Acquire::Languages", "");
_config->Set("Dir::State::lists", "/non-existing-dir");
_config->Set("Acquire::Languages::1", "none");
diff --git a/test/libapt/getlistoffilesindir_test.cc b/test/libapt/getlistoffilesindir_test.cc
index 5ee014cca..b2c95e840 100644
--- a/test/libapt/getlistoffilesindir_test.cc
+++ b/test/libapt/getlistoffilesindir_test.cc
@@ -7,7 +7,7 @@
#include <stdio.h>
#include <iostream>
-#define P(x) string(argv[1]).append("/").append(x)
+#define P(x) std::string(argv[1]).append("/").append(x)
int main(int argc,char *argv[])
{
diff --git a/test/libapt/hashsums_test.cc b/test/libapt/hashsums_test.cc
index 2cb71cc38..396e4cf6b 100644
--- a/test/libapt/hashsums_test.cc
+++ b/test/libapt/hashsums_test.cc
@@ -146,7 +146,7 @@ int main(int argc, char** argv)
equals(sha2.VerifyFile(argv[1]), true);
}
{
- HashString sha2("SHA256:"+string(argv[4]));
+ HashString sha2("SHA256:" + std::string(argv[4]));
equals(sha2.VerifyFile(argv[1]), true);
}
diff --git a/test/libapt/makefile b/test/libapt/makefile
index a5f79da1a..d3dddaeed 100644
--- a/test/libapt/makefile
+++ b/test/libapt/makefile
@@ -6,6 +6,10 @@ BASENAME=_libapt_test
# Bring in the default rules
include ../../buildlib/defaults.mak
+.PHONY: test
+test:
+ ./run-tests
+
# Program for testing getLanguageCode
PROGRAM = getLanguages${BASENAME}
SLIBS = -lapt-pkg
diff --git a/test/libapt/parsedepends_test.cc b/test/libapt/parsedepends_test.cc
index 7b496878d..b5d92d9d2 100644
--- a/test/libapt/parsedepends_test.cc
+++ b/test/libapt/parsedepends_test.cc
@@ -4,8 +4,8 @@
#include "assert.h"
int main(int argc,char *argv[]) {
- string Package;
- string Version;
+ std::string Package;
+ std::string Version;
unsigned int Op = 5;
unsigned int Null = 0;
bool StripMultiArch = true;
diff --git a/test/libapt/run-tests b/test/libapt/run-tests
index 0eea6d4f8..ada2dc38b 100755
--- a/test/libapt/run-tests
+++ b/test/libapt/run-tests
@@ -3,19 +3,32 @@ set -e
DIR=$(readlink -f $(dirname $0))
echo "Compiling the tests …"
-test -d "$DIR/../../build/obj/test/libapt/" || mkdir -p "$DIR/../../build/obj/test/libapt/"
(cd $DIR && make)
echo "Running all testcases …"
LDPATH="$DIR/../../build/bin"
EXT="_libapt_test"
+
+# detect if output is on a terminal (colorful) or better not
+if expr match "$(readlink -f /proc/$$/fd/1)" '/dev/pts/[0-9]\+' > /dev/null; then
+ COLHIGH='\033[1;35m'
+ COLRESET='\033[0m'
+ TESTOKAY='\033[1;32mOKAY\033[0m'
+ TESTFAIL='\033[1;31mFAILED\033[0m'
+else
+ COLHIGH=''
+ COLRESET=''
+ TESTOKAY='OK'
+ TESTFAIL='###FAILED###'
+fi
+
for testapp in $(ls ${LDPATH}/*$EXT)
do
name=$(basename ${testapp})
+ NAME="${COLHIGH}${name}${COLRESET}"
tmppath=""
if [ $name = "GetListOfFilesInDir${EXT}" ]; then
# TODO: very-low: move env creation to the actual test-app
- echo "Prepare Testarea for \033[1;35m$name\033[0m ..."
tmppath=$(mktemp -d)
touch "${tmppath}/anormalfile" \
"${tmppath}/01yet-anothernormalfile" \
@@ -47,12 +60,12 @@ do
ln -s "${tmppath}/anormalfile" "${tmppath}/linkedfile.list"
ln -s "${tmppath}/non-existing-file" "${tmppath}/brokenlink.list"
elif [ $name = "getLanguages${EXT}" ]; then
- echo "Prepare Testarea for \033[1;35m$name\033[0m ..."
tmppath=$(mktemp -d)
touch "${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-tr" \
"${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-pt" \
"${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-se~" \
- "${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-st.bak"
+ "${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-st.bak" \
+ "${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-ast_DE"
elif [ $name = "HashSums${EXT}" ]; then
TMP="$(mktemp)"
dmesg > $TMP
@@ -60,14 +73,14 @@ do
LD_LIBRARY_PATH=${LDPATH} ${testapp} $TMP $(md5sum $TMP | cut -d' ' -f 1) $(sha1sum $TMP | cut -d' ' -f 1) $(sha256sum $TMP | cut -d' ' -f 1) $(sha512sum $TMP | cut -d' ' -f 1) && echo "\033[1;32mOKAY\033[0m" || echo "\033[1;31mFAILED\033[0m"
rm $TMP
continue
+ elif [ $name = "CompareVersion${EXT}" ]; then
+ tmppath="${DIR}/versions.lst"
fi
- echo -n "Testing with \033[1;35m${name}\033[0m ... "
- LD_LIBRARY_PATH=${LDPATH} ${testapp} ${tmppath} && echo "\033[1;32mOKAY\033[0m" || echo "\033[1;31mFAILED\033[0m"
+ echo -n "Testing with ${NAME} "
+ LD_LIBRARY_PATH=${LDPATH} ${testapp} ${tmppath} && echo "$TESTOKAY" || echo "$TESTFAIL"
if [ -n "$tmppath" -a -d "$tmppath" ]; then
- echo "Cleanup Testarea after \033[1;35m$name\033[0m ..."
rm -rf "$tmppath"
fi
-
done
diff --git a/test/libapt/strutil_test.cc b/test/libapt/strutil_test.cc
index af6eb2cc6..bfe0d7222 100644
--- a/test/libapt/strutil_test.cc
+++ b/test/libapt/strutil_test.cc
@@ -4,7 +4,7 @@
int main(int argc,char *argv[])
{
- string input, output, expected;
+ std::string input, output, expected;
// no input
input = "foobar";
diff --git a/test/libapt/versions.lst b/test/libapt/versions.lst
new file mode 100644
index 000000000..8dd8ebdc9
--- /dev/null
+++ b/test/libapt/versions.lst
@@ -0,0 +1,106 @@
+# List of
+# ver1 ver2 ret
+# Of versions worth testing
+# 1 means that ver1 > ver2
+# -1 means that ver1 < ver2
+# 0 means that ver1 = ver2
+7.6p2-4 7.6-0 1
+1.0.3-3 1.0-1 1
+1.3 1.2.2-2 1
+1.3 1.2.2 1
+
+# Important attributes
+# disabled as dpkg --compare-versions doesn't like them… (versions have to start with a number)
+#- . -1
+#p - -1
+#a - -1
+#z - -1
+#a . -1
+#z . -1
+
+# disabled as dpkg --compare-versions doesn't like them… (versions have to start with a number)
+#III-alpha9.8 III-alpha9.8-1.5 -1
+
+# Epochs
+1:0.4 10.3 1
+1:1.25-4 1:1.25-8 -1
+0:1.18.36 1.18.36 0
+
+# native version
+1.18.36 1.18.35 1
+0:1.18.36 1.18.35 1
+
+# Funky, but allowed, characters in upstream version
+9:1.18.36:5.4-20 10:0.5.1-22 -1
+9:1.18.36:5.4-20 9:1.18.36:5.5-1 -1
+9:1.18.36:5.4-20 9:1.18.37:4.3-22 -1
+1.18.36-0.17.35-18 1.18.36-19 1
+
+# Junk
+1:1.2.13-3 1:1.2.13-3.1 -1
+2.0.7pre1-4 2.0.7r-1 -1
+
+# Test some properties of text strings
+0-pre 0-pre 0
+0-pre 0-pree -1
+
+1.1.6r2-2 1.1.6r-1 1
+2.6b2-1 2.6b-2 1
+
+98.1p5-1 98.1-pre2-b6-2 -1
+0.4a6-2 0.4-1 1
+
+1:3.0.5-2 1:3.0.5.1 -1
+
+# #205960
+3.0~rc1-1 3.0-1 -1
+
+# #573592 - debian policy 5.6.12
+1.0 1.0-0 0
+0.2 1.0-0 -1
+1.0 1.0-0+b1 -1
+1.0 1.0-0~ 1
+
+# if a version includes a dash
+# it should be the debrev dash - policy says so…
+0:0-0-0 0-0 1
+
+# do we like strange versions? Yes we like strange versions…
+0 0 0
+0 00 0
+
+# "steal" the testcases from cupt
+1.2.3 1.2.3 0 # identical
+4.4.3-2 4.4.3-2 0 # identical
+1:2ab:5 1:2ab:5 0 # this is correct...
+7:1-a:b-5 7:1-a:b-5 0 # and this
+57:1.2.3abYZ+~-4-5 57:1.2.3abYZ+~-4-5 0 # and those too
+1.2.3 0:1.2.3 0 # zero epoch
+1.2.3 1.2.3-0 0 # zero revision
+009 9 0 # zeroes...
+009ab5 9ab5 0 # there as well
+1.2.3 1.2.3-1 -1 # added non-zero revision
+1.2.3 1.2.4 -1 # just bigger
+1.2.4 1.2.3 1 # order doesn't matter
+1.2.24 1.2.3 1 # bigger, eh?
+0.10.0 0.8.7 1 # bigger, eh?
+3.2 2.3 1 # major number rocks
+1.3.2a 1.3.2 1 # letters rock
+0.5.0~git 0.5.0~git2 -1 # numbers rock
+2a 21 -1 # but not in all places
+1.3.2a 1.3.2b -1 # but there is another letter
+1:1.2.3 1.2.4 1 # epoch rocks
+1:1.2.3 1:1.2.4 -1 # bigger anyway
+1.2a+~bCd3 1.2a++ -1 # tilde doesn't rock
+1.2a+~bCd3 1.2a+~ 1 # but first is longer!
+5:2 304-2 1 # epoch rocks
+5:2 304:2 -1 # so big epoch?
+25:2 3:2 1 # 25 > 3, obviously
+1:2:123 1:12:3 -1 # 12 > 2
+1.2-5 1.2-3-5 -1 # 1.2 < 1.2-3
+5.10.0 5.005 1 # preceding zeroes don't matters
+3a9.8 3.10.2 -1 # letters are before all letter symbols
+3a9.8 3~10 1 # but after the tilde
+1.4+OOo3.0.0~ 1.4+OOo3.0.0-4 -1 # another tilde check
+2.4.7-1 2.4.7-z -1 # revision comparing
+1.002-1+b2 1.00 1 # whatever...