summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml17
-rw-r--r--npc/dev/test.txt2
-rwxr-xr-xtravis.sh117
3 files changed, 131 insertions, 5 deletions
diff --git a/.travis.yml b/.travis.yml
index 4de81e6a8..a7f6a789f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,14 +2,23 @@ language: c
compiler:
- clang
- gcc
+
+install:
+ - ./travis.sh getplugins || true
before_script:
- - uname -a
+ - uname -a
+ - ./travis.sh createdb ragnarok root
+ - ./travis.sh importdb ragnarok travis
+ - mysql -u root -e "SET PASSWORD FOR 'travis'@'localhost' = PASSWORD('travis');"
script:
- - ./configure --enable-debug && make sql -j3 && ./map-server --version
- - make clean
- - ./configure --disable-renewal --enable-debug && make sql -j3 && ./map-server --version
+ - ./travis.sh build $CONFIGURE_FLAGS
+ - ./travis.sh test ragnarok travis travis
+
+env:
+ - CONFIGURE_FLAGS="--enable-debug"
+ - CONFIGURE_FLAGS="--disable-renewal --enable-debug"
notifications:
email: false
diff --git a/npc/dev/test.txt b/npc/dev/test.txt
index 3cc714993..f9e4fc410 100644
--- a/npc/dev/test.txt
+++ b/npc/dev/test.txt
@@ -708,7 +708,7 @@ OnReportError:
if (.errors == 1)
debugmes "**** WARNING: Any self-test results past this point are unreliable because of previous errors. ****";
debugmes "Error: "+.@msg$+": '"+.@val$+"' (found) != '"+.@ref$+"' (expected)";
- .errors++;
+ ++.errors;
//end;
return;
diff --git a/travis.sh b/travis.sh
new file mode 100755
index 000000000..6f2eced20
--- /dev/null
+++ b/travis.sh
@@ -0,0 +1,117 @@
+#!/bin/bash
+
+MODE="$1"
+shift
+
+function foo {
+ for i in "$@"; do
+ echo "> $i"
+ done
+}
+
+function usage {
+ echo "usage:"
+ echo " $0 createdb <dbname> [dbuser] [dbpassword]"
+ echo " $0 importdb <dbname> [dbuser] [dbpassword]"
+ echo " $0 build [configure args]"
+ echo " $0 test <dbname> [dbuser] [dbpassword]"
+ echo " $0 getplugins"
+ exit 1
+}
+
+function aborterror {
+ echo $@
+ exit 1
+}
+
+case "$MODE" in
+ createdb|importdb|test)
+ DBNAME="$1"
+ DBUSER="$2"
+ DBPASS="$3"
+ if [ -z "$DBNAME" ]; then
+ usage
+ fi
+ if [ "$MODE" != "test" ]; then
+ if [ -n "$DBUSER" ]; then
+ DBUSER="-u $DBUSER"
+ fi
+ if [ -n "$DBPASS" ]; then
+ DBPASS="-p$DBPASS"
+ fi
+ fi
+ ;;
+esac
+
+case "$MODE" in
+ createdb)
+ echo "Creating database $DBNAME..."
+ mysql $DBUSER $DBPASS -e "create database $DBNAME;" || aborterror "Unable to create database."
+ ;;
+ importdb)
+ echo "Importing tables into $DBNAME..."
+ mysql $DBUSER $DBPASS $DBNAME < sql-files/main.sql || aborterror "Unable to import main database."
+ mysql $DBUSER $DBPASS $DBNAME < sql-files/logs.sql || aborterror "Unable to import logs database."
+ ;;
+ build)
+ ./configure $@ || aborterror "Configure error, aborting build."
+ make sql -j3 || aborterror "Build failed."
+ if [ -f src/plugins/script_mapquit.c ]; then
+ make plugin.script_mapquit -j3 || aborterror "Build failed."
+ fi
+ ;;
+ test)
+ cat >> conf/import/login_conf.txt << EOF
+ipban.sql.db_username: $DBUSER
+ipban.sql.db_password: $DBPASS
+ipban.sql.db_database: $DBNAME
+account.sql.db_username: $DBUSER
+account.sql.db_password: $DBPASS
+account.sql.db_database: $DBNAME
+account.sql.db_hostname: localhost
+EOF
+ [ $? -eq 0 ] || aborterror "Unable to import configuration, aborting tests."
+ cat >> conf/import/inter_conf.txt << EOF
+sql.db_username: $DBUSER
+sql.db_password: $DBPASS
+sql.db_database: $DBNAME
+sql.db_hostname: localhost
+char_server_id: $DBUSER
+char_server_pw: $DBPASS
+char_server_db: $DBNAME
+char_server_ip: localhost
+map_server_id: $DBUSER
+map_server_pw: $DBPASS
+map_server_db: $DBNAME
+map_server_ip: localhost
+log_db_id: $DBUSER
+log_db_pw: $DBPASS
+log_db_db: $DBNAME
+log_db_ip: localhost
+EOF
+ [ $? -eq 0 ] || aborterror "Unable to import configuration, aborting tests."
+ ARGS="--load-script npc/dev/test.txt "
+ if [ -f src/plugins/script_mapquit.c ]; then
+ ARGS="--load-plugin script_mapquit $ARGS --load-script npc/dev/ci_test.txt"
+ fi
+ echo "Running Hercules with command line: ./map-server --run-once $ARGS"
+ ./map-server --run-once $ARGS || aborterror "Test failed."
+ ;;
+ getplugins)
+ echo "Cloning plugins repository..."
+ git clone http://github.com/HerculesWS/StaffPlugins.git || aborterror "Unable to fetch plugin repository"
+ if [ -f StaffPlugins/Haru/script_mapquit/script_mapquit.c -a -f StaffPlugins/Haru/script_mapquit/examples/ci_test.txt ]; then
+ pushd src/plugins || aborterror "Unable to enter plugins directory."
+ ln -s ../../StaffPlugins/Haru/script_mapquit/script_mapquit.c ./
+ popd
+ pushd npc/dev || aborterror "Unable to enter scripts directory."
+ ln -s ../../StaffPlugins/Haru/script_mapquit/examples/ci_test.txt ./
+ popd
+ else
+ echo "Plugin not found, skipping advanced tests."
+ fi
+ ;;
+ *)
+ usage
+ ;;
+esac