|
|
|
|
|
import os |
|
|
import sys |
|
|
import pytest |
|
|
|
|
|
|
|
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) |
|
|
|
|
|
from wrdler.modules.constants import HF_API_TOKEN |
|
|
from wrdler.modules.storage import gen_full_url, _get_json_from_repo, HF_REPO_ID, SHORTENER_JSON_FILE |
|
|
|
|
|
|
|
|
if HF_API_TOKEN: |
|
|
os.environ["HF_API_TOKEN"] = HF_API_TOKEN |
|
|
|
|
|
def test_download_settings_by_short_id_handles_both(capsys): |
|
|
|
|
|
short_id = "hDjsB_dl" |
|
|
|
|
|
|
|
|
status, full_url = gen_full_url( |
|
|
short_url=short_id, |
|
|
repo_id=HF_REPO_ID, |
|
|
json_file=SHORTENER_JSON_FILE |
|
|
) |
|
|
|
|
|
|
|
|
if status != "success_retrieved_full" or not full_url: |
|
|
print( |
|
|
f"Could not resolve short id '{short_id}'. " |
|
|
f"Status: {status}. " |
|
|
f"Check repo '{HF_REPO_ID}' and mapping file '{SHORTENER_JSON_FILE}'." |
|
|
) |
|
|
captured = capsys.readouterr() |
|
|
assert "Could not resolve short id" in captured.out |
|
|
|
|
|
assert not full_url, "full_url should be empty/None on failure" |
|
|
print("settings.json was not found or could not be resolved.") |
|
|
return |
|
|
else: |
|
|
print(f"Resolved short id '{short_id}' to full URL: {full_url}") |
|
|
|
|
|
|
|
|
assert status == "success_retrieved_full", f"Failed to resolve short ID: {status}" |
|
|
assert full_url, "No full URL returned" |
|
|
|
|
|
|
|
|
url_parts = full_url.split("/resolve/main/") |
|
|
assert len(url_parts) == 2, f"Invalid full URL format: {full_url}" |
|
|
file_path = url_parts[1] |
|
|
|
|
|
|
|
|
settings = _get_json_from_repo(HF_REPO_ID, file_path, repo_type="dataset") |
|
|
assert settings, "Failed to download or parse settings.json" |
|
|
|
|
|
print("\nDownloaded settings.json contents:", settings) |
|
|
|
|
|
assert "challenge_id" in settings |
|
|
assert "wordlist_source" in settings |
|
|
assert "users" in settings |
|
|
|
|
|
if __name__ == "__main__": |
|
|
pytest.main(["-s", __file__]) |