summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorRonny Chevalier <chevalier.ronny@gmail.com>2015-10-29 14:22:23 +0100
committerRonny Chevalier <chevalier.ronny@gmail.com>2015-10-29 17:14:18 +0100
commitff4ca461ed0e4022e554144dde1bf4fc75cafdc8 (patch)
tree27976b14e9dd7596c40c6af43f23debd7e3541ac /src/test
parentdb27190d544c12484ccc668616c0d0eb08bc2b73 (diff)
test: add tests to ensure that the capabilities are properly set
Diffstat (limited to 'src/test')
-rw-r--r--src/test/test-execute.c29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/test/test-execute.c b/src/test/test-execute.c
index dcd298d571..afbaa12e94 100644
--- a/src/test/test-execute.c
+++ b/src/test/test-execute.c
@@ -17,15 +17,16 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include <stdio.h>
-#include <sys/types.h>
#include <grp.h>
#include <pwd.h>
+#include <stdio.h>
+#include <sys/types.h>
#include "fs-util.h"
#include "macro.h"
#include "manager.h"
#include "mkdir.h"
+#include "path-util.h"
#include "rm-rf.h"
#include "unit.h"
#include "util.h"
@@ -129,11 +130,15 @@ static void test_exec_systemcallerrornumber(Manager *m) {
static void test_exec_user(Manager *m) {
if (getpwnam("nobody"))
test(m, "exec-user.service", 0, CLD_EXITED);
+ else
+ log_error_errno(errno, "Skipping test_exec_user, could not find nobody user: %m");
}
static void test_exec_group(Manager *m) {
if (getgrnam("nobody"))
test(m, "exec-group.service", 0, CLD_EXITED);
+ else
+ log_error_errno(errno, "Skipping test_exec_group, could not find nobody group: %m");
}
static void test_exec_environment(Manager *m) {
@@ -152,6 +157,25 @@ static void test_exec_runtimedirectory(Manager *m) {
test(m, "exec-runtimedirectory-mode.service", 0, CLD_EXITED);
if (getgrnam("nobody"))
test(m, "exec-runtimedirectory-owner.service", 0, CLD_EXITED);
+ else
+ log_error_errno(errno, "Skipping test_exec_runtimedirectory-owner, could not find nobody group: %m");
+}
+
+static void test_exec_capabilityboundingset(Manager *m) {
+ int r;
+
+ /* We use capsh to test if the capabilities are
+ * properly set, so be sure that it exists */
+ r = find_binary("capsh", NULL);
+ if (r < 0) {
+ log_error_errno(r, "Skipping test_exec_capabilityboundingset, could not find capsh binary: %m");
+ return;
+ }
+
+ test(m, "exec-capabilityboundingset-simple.service", 0, CLD_EXITED);
+ test(m, "exec-capabilityboundingset-reset.service", 0, CLD_EXITED);
+ test(m, "exec-capabilityboundingset-merge.service", 0, CLD_EXITED);
+ test(m, "exec-capabilityboundingset-invert.service", 0, CLD_EXITED);
}
int main(int argc, char *argv[]) {
@@ -168,6 +192,7 @@ int main(int argc, char *argv[]) {
test_exec_environment,
test_exec_umask,
test_exec_runtimedirectory,
+ test_exec_capabilityboundingset,
NULL,
};
test_function_t *test = NULL;