1c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner// Copyright 2014 The Android Open Source Project
2c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner//
3c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner// This software is licensed under the terms of the GNU General Public
4c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner// License version 2, as published by the Free Software Foundation, and
5c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner// may be copied, distributed, and modified under those terms.
6c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner//
7c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner// This program is distributed in the hope that it will be useful,
8c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner// but WITHOUT ANY WARRANTY; without even the implied warranty of
9c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner// GNU General Public License for more details.
11c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner
12c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner#include "android/filesystems/fstab_parser.h"
13c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner
14c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner#include <gtest/gtest.h>
15c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner
16c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' TurnerTEST(FstabParser, ParsePartitionFormat) {
17c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner    static const char kFstab[] =
18c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner        "# Android fstab file.\n"
19c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner        "#<src>                                                  <mnt_point>         <type>    <mnt_flags and options>                              <fs_mgr_flags>\n"
20c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner        "# The filesystem that contains the filesystem checker binary (typically /system) cannot\n"
21c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner        "# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK\n"
22c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner        "/dev/block/mtdblock0                                    /system             ext4      ro,barrier=1                                         wait\n"
23c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner        "/dev/block/mtdblock1\t      \t                          /data\t             yaffs2    noatime,nosuid,nodev,barrier=1,nomblk_io_submit      wait,check\n"
24c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner        "/dev/block/mtdblock2\t/cache\tntfs\tnoatime,nosuid,nodev  wait,check\n"
25c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner        "/devices/platform/goldfish_mmc.0\t\t\tauto\tvfat      defaults                                             voldmanaged=sdcard:auto\n"
26c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner        ;
27c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner    static const size_t kFstabSize = sizeof(kFstab);
28c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner
29c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner    char* out = NULL;
30c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner    EXPECT_TRUE(android_parseFstabPartitionFormat(kFstab, kFstabSize,
31c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner                                                  "/system", &out));
32c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner    EXPECT_STREQ("ext4", out);
33c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner    free(out);
34c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner
35c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner    EXPECT_TRUE(android_parseFstabPartitionFormat(kFstab, kFstabSize,
36c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner                                                  "/data", &out));
37c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner    EXPECT_STREQ("yaffs2", out);
38c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner    free(out);
39c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner
40c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner    EXPECT_TRUE(android_parseFstabPartitionFormat(kFstab, kFstabSize,
41c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner                                                  "/cache", &out));
42c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner    EXPECT_STREQ("ntfs", out);
43c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner    free(out);
44c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner
45c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner    EXPECT_FALSE(android_parseFstabPartitionFormat(kFstab, kFstabSize,
46c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner                                                   "/unknown", &out));
47c8e89b5a1998ce74a4863989f0cde2e8925bed06David 'Digit' Turner}
48