capnproto

FORK: Cap'n Proto serialization/RPC system - core tools and C++ library
git clone https://git.neptards.moe/neptards/capnproto.git
Log | Files | Refs | README | LICENSE

filesystem-disk-generic-test.c++ (2498B)


      1 // Copyright (c) 2016 Sandstorm Development Group, Inc. and contributors
      2 // Licensed under the MIT License:
      3 //
      4 // Permission is hereby granted, free of charge, to any person obtaining a copy
      5 // of this software and associated documentation files (the "Software"), to deal
      6 // in the Software without restriction, including without limitation the rights
      7 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      8 // copies of the Software, and to permit persons to whom the Software is
      9 // furnished to do so, subject to the following conditions:
     10 //
     11 // The above copyright notice and this permission notice shall be included in
     12 // all copies or substantial portions of the Software.
     13 //
     14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     15 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     16 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     17 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     18 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     19 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     20 // THE SOFTWARE.
     21 
     22 #if __linux__
     23 
     24 // This test compiles filesystem-disk-unix.c++ with various features #undefed, causing it to take
     25 // different code paths, then runs filesystem-disk-test.c++ against that.
     26 //
     27 // This test is only intended to run on Linux, but is intended to make the code behave like it
     28 // would on a generic flavor of Unix.
     29 //
     30 // At present this test only runs under Ekam builds. Integrating it into other builds would be
     31 // awkward since it #includes filesystem-disk-unix.c++, so it cannot link against that file, but
     32 // needs to link against the rest of KJ. Ekam "just figures it out", but other build systems would
     33 // require a lot of work here.
     34 
     35 #include "filesystem.h"
     36 #include "debug.h"
     37 #include <sys/types.h>
     38 #include <sys/stat.h>
     39 #include <sys/ioctl.h>
     40 #include <fcntl.h>
     41 #include <unistd.h>
     42 #include <stdio.h>
     43 #include <sys/mman.h>
     44 #include <errno.h>
     45 #include <dirent.h>
     46 #include <syscall.h>
     47 #include "vector.h"
     48 #include "miniposix.h"
     49 
     50 #undef __linux__
     51 #undef O_CLOEXEC
     52 #undef O_DIRECTORY
     53 #undef O_TMPFILE
     54 #undef FIOCLEX
     55 #undef DT_UNKNOWN
     56 #undef F_DUPFD_CLOEXEC
     57 #undef FALLOC_FL_PUNCH_HOLE
     58 #undef FICLONE
     59 #undef FICLONERANGE
     60 #undef SEEK_HOLE
     61 #undef SEEK_DATA
     62 #undef RENAME_EXCHANGE
     63 
     64 #define HOLES_NOT_SUPPORTED
     65 
     66 #include "filesystem-disk-unix.c++"
     67 #include "filesystem-disk-test.c++"
     68 
     69 #endif  // __linux__