def test_etl():
    
    ctx = reload.context()
    with copy_file("redcap/record.json", ctx["dataInputFilePath"]):
        with copy_file("redcap/metadata.json", ctx["dataDictionaryInputFilePath"]):
            with datatables(lambda: reload.etl(ctx)) as ret:
                assert ret
                assert os.path.isfile("/data/tables/Proposal")
                with open("/data/tables/Proposal") as f:
                    assert sum(1 for _ in f) == 2
def do_test_auxiliary(aux1, exp):
    
    aux0 = os.environ.get("AUXILIARY_PATH")
    os.environ["AUXILIARY_PATH"] = aux1
    ctx = reload.context()
    shutil.copy("redcap/record.json", ctx["dataInputFilePath"])
    shutil.copy("redcap/metadata.json", ctx["dataDictionaryInputFilePath"])
    assert reload.etl(ctx)
    with open("/data/tables/ProposalFunding") as f:
        i = f.readline().split(",").index("totalBudgetInt")
        assert f.readline().split(",")[i] == exp
    os.remove(ctx["dataInputFilePath"])
    os.remove(ctx["dataDictionaryInputFilePath"])
    shutil.rmtree("/data/tables")
    if aux0 is None:
        del os.environ["AUXILIARY_PATH"]
    else:
        os.environ["AUXILIARY_PATH"] = aux0
def do_test_blocklist2(blocklist1, exp):
    
    blocklist0 = os.environ.get("BLOCK_PATH")
    os.environ["BLOCK_PATH"] = blocklist1
    ctx = reload.context()
    shutil.copy("redcap/record2.json", ctx["dataInputFilePath"])
    shutil.copy("redcap/metadata.json", ctx["dataDictionaryInputFilePath"])
    assert reload.etl(ctx)
    with open("/data/tables/Proposal", newline="") as f:
        reader = csv.reader(f)
        headers = next(reader)
        i = sum(1 for row in reader)
        assert i == exp
    os.remove(ctx["dataInputFilePath"])
    os.remove(ctx["dataDictionaryInputFilePath"])
    shutil.rmtree("/data/tables")
    if blocklist0 is None:
        del os.environ["BLOCK_PATH"]
    else:
        os.environ["BLOCK_PATH"] = blocklist0