#!/usr/bin/env python3

import os
import random
import subprocess
import sys
import tempfile


def run(*args):
    subprocess.run(["cargo", "run", "--quiet", "--", *args], check=True)


tmpdir = tempfile.TemporaryDirectory()

secret_path = f"{tmpdir.name}/secret"
# between 1 an 2 MB
secret = os.urandom(int(1e6 * (1 + random.random())))

open(secret_path, "wb").write(secret)

run("share", secret_path, *[f"{tmpdir.name}/{i}.share" for i in range(1, 7)])

for i in range(4, 8):
    secret_path_recovered = f"{tmpdir.name}/secret.recovered_from_{i}"
    run(
        "recover",
        secret_path_recovered,
        *[f"{tmpdir.name}/{i}.share" for i in range(1, i)],
    )

    recovered_data = open(secret_path_recovered, "rb").read()

    if secret != recovered_data:
        print("failed")
        sys.exit(1)

print("all passed")