diff --git a/.travis.yml b/.travis.yml index e2324ce400f72..1147d5f9e9f22 100644 --- a/.travis.yml +++ b/.travis.yml @@ -44,3 +44,7 @@ install: script: # compile - bash ./acore.sh "compiler" "all" + - git clone --depth=1 --branch=master --single-branch https://github.com/ac-data/ac-data.git /home/travis/build/azerothcore/azerothcore-wotlk/env/dist/data + - cp ./data/travis/worldserver.conf ./env/dist/etc/worldserver.conf + - ./env/dist/bin/worldserver --dry-run + - ./apps/ci-error-check.sh diff --git a/apps/ci-error-check.sh b/apps/ci-error-check.sh new file mode 100755 index 0000000000000..945844a6a901c --- /dev/null +++ b/apps/ci-error-check.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +DB_ERRORS_FILE="/home/travis/build/azerothcore/azerothcore-wotlk/env/dist/bin/DBErrors.log"; +#DB_ERRORS_FILE="./env/dist/bin/DBErrors.log"; + +if [[ ! -f ${DB_ERRORS_FILE} ]]; then + echo "File ${DB_ERRORS_FILE} not found!"; + exit 1 +fi + +if [[ -s ${DB_ERRORS_FILE} ]]; then + printf "The DBErrors.log file contains startup errors:\n\n"; + cat ${DB_ERRORS_FILE}; + printf "\nPlease solve the startup errors listed above!\n"; + exit 1; +else + echo "No startup errors found in DBErrors.log, good job!"; +fi diff --git a/data/travis/worldserver.conf b/data/travis/worldserver.conf new file mode 100644 index 0000000000000..75a81fdf47a2a --- /dev/null +++ b/data/travis/worldserver.conf @@ -0,0 +1,12 @@ +################################################ +# AzerothCore World Server configuration file # +################################################ +[worldserver] + +LoginDatabaseInfo = "127.0.0.1;3306;root;;acore_auth" +WorldDatabaseInfo = "127.0.0.1;3306;root;;acore_world" +CharacterDatabaseInfo = "127.0.0.1;3306;root;;acore_characters" + +EnableLogDB = 1 +DataDir = "/home/travis/build/azerothcore/azerothcore-wotlk/env/dist/data" +LogsDir = "/home/travis/build/azerothcore/azerothcore-wotlk/env/dist/bin" diff --git a/src/common/Configuration/Config.h b/src/common/Configuration/Config.h index 28a0dc820ed8a..333d10317dfc5 100644 --- a/src/common/Configuration/Config.h +++ b/src/common/Configuration/Config.h @@ -46,7 +46,12 @@ class ConfigMgr std::list GetKeysByString(std::string const& name); + bool isDryRun() { return this->dryRun; } + void setDryRun(bool mode) { this->dryRun = mode; } + private: + bool dryRun = false; + bool GetValueHelper(const char* name, ACE_TString &result); bool LoadData(char const* file); diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index e9108763cd8f5..f90cdfd3b372c 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1350,18 +1350,21 @@ void World::SetInitialWorldSettings() ///- Init highest guids before any table loading to prevent using not initialized guids in some code. sObjectMgr->SetHighestGuids(); - ///- Check the existence of the map files for all races' startup areas. - if (!MapManager::ExistMapAndVMap(0, -6240.32f, 331.033f) - || !MapManager::ExistMapAndVMap(0, -8949.95f, -132.493f) - || !MapManager::ExistMapAndVMap(1, -618.518f, -4251.67f) - || !MapManager::ExistMapAndVMap(0, 1676.35f, 1677.45f) - || !MapManager::ExistMapAndVMap(1, 10311.3f, 832.463f) - || !MapManager::ExistMapAndVMap(1, -2917.58f, -257.98f) - || (m_int_configs[CONFIG_EXPANSION] && ( - !MapManager::ExistMapAndVMap(530, 10349.6f, -6357.29f) || - !MapManager::ExistMapAndVMap(530, -3961.64f, -13931.2f)))) - { - exit(1); + if (!sConfigMgr->isDryRun()) + { + ///- Check the existence of the map files for all starting areas. + if (!MapManager::ExistMapAndVMap(0, -6240.32f, 331.033f) + || !MapManager::ExistMapAndVMap(0, -8949.95f, -132.493f) + || !MapManager::ExistMapAndVMap(1, -618.518f, -4251.67f) + || !MapManager::ExistMapAndVMap(0, 1676.35f, 1677.45f) + || !MapManager::ExistMapAndVMap(1, 10311.3f, 832.463f) + || !MapManager::ExistMapAndVMap(1, -2917.58f, -257.98f) + || (m_int_configs[CONFIG_EXPANSION] && ( + !MapManager::ExistMapAndVMap(530, 10349.6f, -6357.29f) || + !MapManager::ExistMapAndVMap(530, -3961.64f, -13931.2f)))) + { + exit(1); + } } ///- Initialize pool manager @@ -1952,6 +1955,11 @@ void World::SetInitialWorldSettings() sLog->outString("Enabling database logging..."); sLog->SetLogDB(true); } + + if (sConfigMgr->isDryRun()) { + sLog->outString("AzerothCore dry run completed, terminating."); + exit(0); + } } void World::DetectDBCLang() diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp index 0a9597f504e66..44193525e6775 100644 --- a/src/server/worldserver/Main.cpp +++ b/src/server/worldserver/Main.cpp @@ -65,6 +65,11 @@ extern int main(int argc, char** argv) int c = 1; while (c < argc) { + if (strcmp(argv[c], "--dry-run") == 0) + { + sConfigMgr->setDryRun(true); + } + if (!strcmp(argv[c], "-c")) { if (++c >= argc)