#!/usr/bin/env python3

import tempfile
import os
import sys

from posix_parity import mergerfs_mount


def main():
    try:
        with mergerfs_mount() as (mount, _):
            (fd, filepath) = tempfile.mkstemp(dir=mount)

            times = (1234567890, 9876543210)
            os.utime(fd, times=times)

            st1 = os.fstat(fd)
            if st1.st_atime != times[0] or st1.st_mtime != times[1]:
                os.close(fd)
                os.unlink(filepath)
                print("futimens before unlink: expected atime={} mtime={}, got atime={} mtime={}".format(
                    times[0], times[1], st1.st_atime, st1.st_mtime), end='')
                return 1

            os.unlink(filepath)

            times2 = (1111111111, 2222222222)
            os.utime(fd, times=times2)

            st2 = os.fstat(fd)
            if st2.st_atime != times2[0] or st2.st_mtime != times2[1]:
                os.close(fd)
                print("futimens after unlink: expected atime={} mtime={}, got atime={} mtime={}".format(
                    times2[0], times2[1], st2.st_atime, st2.st_mtime), end='')
                return 1

            os.close(fd)
            return 0
    except RuntimeError as exc:
        print(str(exc), end="")
        return 77


if __name__ == "__main__":
    raise SystemExit(main())
