summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xmanaplustest5
-rw-r--r--manaplustest.desktop2
-rw-r--r--src/test/testmain.cpp3
-rw-r--r--src/utils/paths.cpp50
-rw-r--r--src/utils/paths.h2
5 files changed, 55 insertions, 7 deletions
diff --git a/manaplustest b/manaplustest
deleted file mode 100755
index 12bdc2b8a..000000000
--- a/manaplustest
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-cd $(dirname $(whereis -b manaplus|cut -d " " -f 2))
-
-manaplus --tests
diff --git a/manaplustest.desktop b/manaplustest.desktop
index 005be4ea9..11947fa03 100644
--- a/manaplustest.desktop
+++ b/manaplustest.desktop
@@ -3,7 +3,7 @@
Version=1.0
Name=ManaPlus (Tests)
Comment=Run tests for ManaPlus
-Exec=manaplustest
+Exec=manaplus --tests
StartupNotify=false
Terminal=false
Type=Application
diff --git a/src/test/testmain.cpp b/src/test/testmain.cpp
index f5bdc5711..eb24a2c75 100644
--- a/src/test/testmain.cpp
+++ b/src/test/testmain.cpp
@@ -29,6 +29,7 @@
#include "utils/gettext.h"
#include "utils/mkdir.h"
#include "utils/stringutils.h"
+#include "utils/paths.h"
#include "utils/process.h"
#include <iostream>
@@ -43,7 +44,7 @@ TestMain::TestMain()
#ifdef WIN32
fileName = "manaplus.exe";
#else
- fileName = selfName;
+ fileName = getSelfName();
#endif
log = new Logger;
diff --git a/src/utils/paths.cpp b/src/utils/paths.cpp
index 04f553ca9..306955cb3 100644
--- a/src/utils/paths.cpp
+++ b/src/utils/paths.cpp
@@ -75,3 +75,53 @@ std::string &fixDirSeparators(std::string &str)
return replaceAll(str, "/", "\\");
}
+
+std::string removeLast(std::string str)
+{
+ size_t pos2 = str.rfind("/");
+ size_t pos3 = str.rfind("\\");
+ if (pos3 != std::string::npos)
+ {
+ if (pos2 == std::string::npos || pos3 > pos2)
+ pos2 = pos3;
+ }
+ if (pos2 == std::string::npos)
+ pos2 = -1;
+ if (pos2 >= 0)
+ return str.substr(0, pos2);
+ else
+ return str;
+}
+
+#ifdef WIN32
+std::string getSelfName()
+{
+ // GetModuleFileName(nullptr)
+ return "";
+}
+
+#elif defined(__APPLE__)
+std::string getSelfName()
+{
+ return "";
+}
+
+#elif defined __linux__ || defined __linux
+#include <unistd.h>
+
+std::string getSelfName()
+{
+ char buf[257];
+ int sz = readlink("/proc/self/exe", buf, 256);
+ if (sz > 0 && sz < 256)
+ {
+ buf[sz] = 0;
+ return buf;
+ }
+ else
+ {
+ return "";
+ }
+}
+
+#endif
diff --git a/src/utils/paths.h b/src/utils/paths.h
index b89671adc..18fa4629e 100644
--- a/src/utils/paths.h
+++ b/src/utils/paths.h
@@ -31,4 +31,6 @@ bool checkPath(std::string path);
std::string &fixDirSeparators(std::string &str);
+std::string getSelfName();
+
#endif // UTILS_PATHS_H