| 2026 | static constexpr char ExitCommand = 'X'; |
| 2027 | |
| 2028 | [[noreturn]] static void TestOtherProcess(fs::path dirname, std::string lockname, int fd) |
| 2029 | { |
| 2030 | char ch; |
| 2031 | while (true) { |
| 2032 | int rv = read(fd, &ch, 1); // Wait for command |
| 2033 | assert(rv == 1); |
| 2034 | switch(ch) { |
| 2035 | case LockCommand: |
| 2036 | ch = LockDirectory(dirname, lockname); |
| 2037 | rv = write(fd, &ch, 1); |
| 2038 | assert(rv == 1); |
| 2039 | break; |
| 2040 | case UnlockCommand: |
| 2041 | ReleaseDirectoryLocks(); |
| 2042 | ch = true; // Always succeeds |
| 2043 | rv = write(fd, &ch, 1); |
| 2044 | assert(rv == 1); |
| 2045 | break; |
| 2046 | case ExitCommand: |
| 2047 | close(fd); |
| 2048 | exit(0); |
| 2049 | default: |
| 2050 | assert(0); |
| 2051 | } |
| 2052 | } |
| 2053 | } |
| 2054 | #endif |
| 2055 | |
| 2056 | BOOST_AUTO_TEST_CASE(test_LockDirectory) |
no test coverage detected