#!/usr/bin/env python3

import os
import sys
import tempfile

from posix_parity import compare_calls
from posix_parity import fail
from posix_parity import join


def statvfs_cmp(lhs, rhs):
    return (
        lhs.f_namemax == rhs.f_namemax
        and lhs.f_bsize > 0
        and rhs.f_bsize > 0
        and lhs.f_frsize > 0
        and rhs.f_frsize > 0
    )


def main():
    if len(sys.argv) != 2:
        print("usage: TEST_posix_statfs <mountpoint>", file=sys.stderr)
        return 1

    mount = sys.argv[1]

    with tempfile.TemporaryDirectory() as native:
        err = compare_calls(
            "statvfs mount parity",
            lambda: os.statvfs(mount),
            lambda: os.statvfs(native),
            statvfs_cmp,
        )
        if err:
            return fail(err)

        err = compare_calls(
            "statvfs ENOENT",
            lambda: os.statvfs(join(mount, "posix-statfs/missing")),
            lambda: os.statvfs(join(native, "posix-statfs/missing")),
        )
        if err:
            return fail(err)

        return 0


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