blob: dee0b6d6f0601bbf1b59746f9b47f34f5a2ce4fc [file] [log] [blame]
Will Drewrydecdfdc2011-09-27 15:13:54 -05001/* libminijail_unittest.c
2 * Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file.
5 *
6 * Test platform independent logic of minijail.
7 */
8
9#include "test_harness.h"
10
11#include "libminijail.h"
12#include "libminijail-private.h"
13
14/* Silence unused variable warnings. */
15TEST(silence_unused) {
16 EXPECT_STREQ(kLdPreloadEnvVar, kLdPreloadEnvVar);
17 EXPECT_STREQ(kFdEnvVar, kFdEnvVar);
18 EXPECT_STRNE(kFdEnvVar, kLdPreloadEnvVar);
19}
20
21FIXTURE(marshal) {
22 char buf[4096];
23 struct minijail *m;
24 struct minijail *j;
25 size_t size;
26};
27
28FIXTURE_SETUP(marshal) {
29 self->m = minijail_new();
30 self->j = minijail_new();
31 ASSERT_TRUE(self->m && self->j) TH_LOG("allocation failed");
32 self->size = minijail_size(self->m);
33 ASSERT_GT(sizeof(self->buf), self->size) {
34 TH_LOG("static buffer too small for test");
35 }
36}
37
38FIXTURE_TEARDOWN(marshal) {
39 minijail_destroy(self->m);
40 minijail_destroy(self->j);
41}
42
43TEST_F(marshal, empty) {
44 ASSERT_EQ(0, minijail_marshal(self->m, self->buf, sizeof(self->buf)));
45 EXPECT_EQ(0, minijail_unmarshal(self->j, self->buf, self->size));
46}
47
48TEST_F(marshal, 0xff) {
49 memset(self->buf, 0xff, sizeof(self->buf));
50 /* It should parse, but the results will be a ... surprise. */
51 EXPECT_EQ(0, minijail_unmarshal(self->j, self->buf, sizeof(self->buf)));
52}
53
54TEST_F(marshal, short) {
55 ASSERT_EQ(0, minijail_marshal(self->m, self->buf, sizeof(self->buf)));
56 EXPECT_NE(0, minijail_unmarshal(self->j, self->buf, self->size / 2));
57}
58
59TEST_HARNESS_MAIN