| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335 |
- __package__ = 'abx.archivebox'
- # from django.test import TestCase
- # from .toml_util import convert, TOML_HEADER
- # TEST_INPUT = """
- # [SERVER_CONFIG]
- # IS_TTY=False
- # USE_COLOR=False
- # SHOW_PROGRESS=False
- # IN_DOCKER=False
- # IN_QEMU=False
- # PUID=501
- # PGID=20
- # CONFIG_FILE=/opt/archivebox/data/ArchiveBox.conf
- # ONLY_NEW=True
- # TIMEOUT=60
- # MEDIA_TIMEOUT=3600
- # OUTPUT_PERMISSIONS=644
- # RESTRICT_FILE_NAMES=windows
- # URL_DENYLIST=\.(css|js|otf|ttf|woff|woff2|gstatic\.com|googleapis\.com/css)(\?.*)?$
- # URL_ALLOWLIST=None
- # ADMIN_USERNAME=None
- # ADMIN_PASSWORD=None
- # ENFORCE_ATOMIC_WRITES=True
- # TAG_SEPARATOR_PATTERN=[,]
- # SECRET_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- # BIND_ADDR=127.0.0.1:8000
- # ALLOWED_HOSTS=*
- # DEBUG=False
- # PUBLIC_INDEX=True
- # PUBLIC_SNAPSHOTS=True
- # PUBLIC_ADD_VIEW=False
- # FOOTER_INFO=Content is hosted for personal archiving purposes only. Contact server owner for any takedown requests.
- # SNAPSHOTS_PER_PAGE=40
- # CUSTOM_TEMPLATES_DIR=None
- # TIME_ZONE=UTC
- # TIMEZONE=UTC
- # REVERSE_PROXY_USER_HEADER=Remote-User
- # REVERSE_PROXY_WHITELIST=
- # LOGOUT_REDIRECT_URL=/
- # PREVIEW_ORIGINALS=True
- # LDAP=False
- # LDAP_SERVER_URI=None
- # LDAP_BIND_DN=None
- # LDAP_BIND_PASSWORD=None
- # LDAP_USER_BASE=None
- # LDAP_USER_FILTER=None
- # LDAP_USERNAME_ATTR=None
- # LDAP_FIRSTNAME_ATTR=None
- # LDAP_LASTNAME_ATTR=None
- # LDAP_EMAIL_ATTR=None
- # LDAP_CREATE_SUPERUSER=False
- # SAVE_TITLE=True
- # SAVE_FAVICON=True
- # SAVE_WGET=True
- # SAVE_WGET_REQUISITES=True
- # SAVE_SINGLEFILE=True
- # SAVE_READABILITY=True
- # SAVE_MERCURY=True
- # SAVE_HTMLTOTEXT=True
- # SAVE_PDF=True
- # SAVE_SCREENSHOT=True
- # SAVE_DOM=True
- # SAVE_HEADERS=True
- # SAVE_WARC=True
- # SAVE_GIT=True
- # SAVE_MEDIA=True
- # SAVE_ARCHIVE_DOT_ORG=True
- # RESOLUTION=1440,2000
- # GIT_DOMAINS=github.com,bitbucket.org,gitlab.com,gist.github.com,codeberg.org,gitea.com,git.sr.ht
- # CHECK_SSL_VALIDITY=True
- # MEDIA_MAX_SIZE=750m
- # USER_AGENT=None
- # CURL_USER_AGENT=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.8.0 (+https://github.com/ArchiveBox/ArchiveBox/) curl/curl 8.4.0 (x86_64-apple-darwin23.0)
- # WGET_USER_AGENT=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.8.0 (+https://github.com/ArchiveBox/ArchiveBox/) wget/GNU Wget 1.24.5
- # CHROME_USER_AGENT=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.8.0 (+https://github.com/ArchiveBox/ArchiveBox/)
- # COOKIES_FILE=None
- # CHROME_USER_DATA_DIR=None
- # CHROME_TIMEOUT=0
- # CHROME_HEADLESS=True
- # CHROME_SANDBOX=True
- # CHROME_EXTRA_ARGS=[]
- # YOUTUBEDL_ARGS=['--restrict-filenames', '--trim-filenames', '128', '--write-description', '--write-info-json', '--write-annotations', '--write-thumbnail', '--no-call-home', '--write-sub', '--write-auto-subs', '--convert-subs=srt', '--yes-playlist', '--continue', '--no-abort-on-error', '--ignore-errors', '--geo-bypass', '--add-metadata', '--format=(bv*+ba/b)[filesize<=750m][filesize_approx<=?750m]/(bv*+ba/b)']
- # YOUTUBEDL_EXTRA_ARGS=[]
- # WGET_ARGS=['--no-verbose', '--adjust-extension', '--convert-links', '--force-directories', '--backup-converted', '--span-hosts', '--no-parent', '-e', 'robots=off']
- # WGET_EXTRA_ARGS=[]
- # CURL_ARGS=['--silent', '--location', '--compressed']
- # CURL_EXTRA_ARGS=[]
- # GIT_ARGS=['--recursive']
- # SINGLEFILE_ARGS=[]
- # SINGLEFILE_EXTRA_ARGS=[]
- # MERCURY_ARGS=['--format=text']
- # MERCURY_EXTRA_ARGS=[]
- # FAVICON_PROVIDER=https://www.google.com/s2/favicons?domain={}
- # USE_INDEXING_BACKEND=True
- # USE_SEARCHING_BACKEND=True
- # SEARCH_BACKEND_ENGINE=ripgrep
- # SEARCH_BACKEND_HOST_NAME=localhost
- # SEARCH_BACKEND_PORT=1491
- # SEARCH_BACKEND_PASSWORD=SecretPassword
- # SEARCH_PROCESS_HTML=True
- # SONIC_COLLECTION=archivebox
- # SONIC_BUCKET=snapshots
- # SEARCH_BACKEND_TIMEOUT=90
- # FTS_SEPARATE_DATABASE=True
- # FTS_TOKENIZERS=porter unicode61 remove_diacritics 2
- # FTS_SQLITE_MAX_LENGTH=1000000000
- # USE_CURL=True
- # USE_WGET=True
- # USE_SINGLEFILE=True
- # USE_READABILITY=True
- # USE_MERCURY=True
- # USE_GIT=True
- # USE_CHROME=True
- # USE_NODE=True
- # USE_YOUTUBEDL=True
- # USE_RIPGREP=True
- # CURL_BINARY=curl
- # GIT_BINARY=git
- # WGET_BINARY=wget
- # SINGLEFILE_BINARY=single-file
- # READABILITY_BINARY=readability-extractor
- # MERCURY_BINARY=postlight-parser
- # YOUTUBEDL_BINARY=yt-dlp
- # NODE_BINARY=node
- # RIPGREP_BINARY=rg
- # CHROME_BINARY=chrome
- # POCKET_CONSUMER_KEY=None
- # USER=squash
- # PACKAGE_DIR=/opt/archivebox/archivebox
- # TEMPLATES_DIR=/opt/archivebox/archivebox/templates
- # ARCHIVE_DIR=/opt/archivebox/data/archive
- # SOURCES_DIR=/opt/archivebox/data/sources
- # LOGS_DIR=/opt/archivebox/data/logs
- # PERSONAS_DIR=/opt/archivebox/data/personas
- # URL_DENYLIST_PTN=re.compile('\\.(css|js|otf|ttf|woff|woff2|gstatic\\.com|googleapis\\.com/css)(\\?.*)?$', re.IGNORECASE|re.MULTILINE)
- # URL_ALLOWLIST_PTN=None
- # DIR_OUTPUT_PERMISSIONS=755
- # ARCHIVEBOX_BINARY=/opt/archivebox/.venv/bin/archivebox
- # VERSION=0.8.0
- # COMMIT_HASH=102e87578c6036bb0132dd1ebd17f8f05ffc880f
- # BUILD_TIME=2024-05-15 03:28:05 1715768885
- # VERSIONS_AVAILABLE=None
- # CAN_UPGRADE=False
- # PYTHON_BINARY=/opt/archivebox/.venv/bin/python3.10
- # PYTHON_VERSION=3.10.14
- # DJANGO_BINARY=/opt/archivebox/.venv/lib/python3.10/site-packages/django/__init__.py
- # DJANGO_VERSION=5.0.6 final (0)
- # SQLITE_BINARY=/opt/homebrew/Cellar/[email protected]/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/sqlite3/dbapi2.py
- # SQLITE_VERSION=2.6.0
- # CURL_VERSION=curl 8.4.0 (x86_64-apple-darwin23.0)
- # WGET_VERSION=GNU Wget 1.24.5
- # WGET_AUTO_COMPRESSION=True
- # RIPGREP_VERSION=ripgrep 14.1.0
- # SINGLEFILE_VERSION=None
- # READABILITY_VERSION=None
- # MERCURY_VERSION=None
- # GIT_VERSION=git version 2.44.0
- # YOUTUBEDL_VERSION=2024.04.09
- # CHROME_VERSION=Google Chrome 124.0.6367.207
- # NODE_VERSION=v21.7.3
- # """
- # EXPECTED_OUTPUT = TOML_HEADER + '''[SERVER_CONFIG]
- # IS_TTY = false
- # USE_COLOR = false
- # SHOW_PROGRESS = false
- # IN_DOCKER = false
- # IN_QEMU = false
- # PUID = 501
- # PGID = 20
- # CONFIG_FILE = "/opt/archivebox/data/ArchiveBox.conf"
- # ONLY_NEW = true
- # TIMEOUT = 60
- # MEDIA_TIMEOUT = 3600
- # OUTPUT_PERMISSIONS = 644
- # RESTRICT_FILE_NAMES = "windows"
- # URL_DENYLIST = "\\\\.(css|js|otf|ttf|woff|woff2|gstatic\\\\.com|googleapis\\\\.com/css)(\\\\?.*)?$"
- # URL_ALLOWLIST = null
- # ADMIN_USERNAME = null
- # ADMIN_PASSWORD = null
- # ENFORCE_ATOMIC_WRITES = true
- # TAG_SEPARATOR_PATTERN = "[,]"
- # SECRET_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
- # BIND_ADDR = "127.0.0.1:8000"
- # ALLOWED_HOSTS = "*"
- # DEBUG = false
- # PUBLIC_INDEX = true
- # PUBLIC_SNAPSHOTS = true
- # PUBLIC_ADD_VIEW = false
- # FOOTER_INFO = "Content is hosted for personal archiving purposes only. Contact server owner for any takedown requests."
- # SNAPSHOTS_PER_PAGE = 40
- # CUSTOM_TEMPLATES_DIR = null
- # TIME_ZONE = "UTC"
- # TIMEZONE = "UTC"
- # REVERSE_PROXY_USER_HEADER = "Remote-User"
- # REVERSE_PROXY_WHITELIST = ""
- # LOGOUT_REDIRECT_URL = "/"
- # PREVIEW_ORIGINALS = true
- # LDAP = false
- # LDAP_SERVER_URI = null
- # LDAP_BIND_DN = null
- # LDAP_BIND_PASSWORD = null
- # LDAP_USER_BASE = null
- # LDAP_USER_FILTER = null
- # LDAP_USERNAME_ATTR = null
- # LDAP_FIRSTNAME_ATTR = null
- # LDAP_LASTNAME_ATTR = null
- # LDAP_EMAIL_ATTR = null
- # LDAP_CREATE_SUPERUSER = false
- # SAVE_TITLE = true
- # SAVE_FAVICON = true
- # SAVE_WGET = true
- # SAVE_WGET_REQUISITES = true
- # SAVE_SINGLEFILE = true
- # SAVE_READABILITY = true
- # SAVE_MERCURY = true
- # SAVE_HTMLTOTEXT = true
- # SAVE_PDF = true
- # SAVE_SCREENSHOT = true
- # SAVE_DOM = true
- # SAVE_HEADERS = true
- # SAVE_WARC = true
- # SAVE_GIT = true
- # SAVE_MEDIA = true
- # SAVE_ARCHIVE_DOT_ORG = true
- # RESOLUTION = [1440, 2000]
- # GIT_DOMAINS = "github.com,bitbucket.org,gitlab.com,gist.github.com,codeberg.org,gitea.com,git.sr.ht"
- # CHECK_SSL_VALIDITY = true
- # MEDIA_MAX_SIZE = "750m"
- # USER_AGENT = null
- # CURL_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.8.0 (+https://github.com/ArchiveBox/ArchiveBox/) curl/curl 8.4.0 (x86_64-apple-darwin23.0)"
- # WGET_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.8.0 (+https://github.com/ArchiveBox/ArchiveBox/) wget/GNU Wget 1.24.5"
- # CHROME_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.8.0 (+https://github.com/ArchiveBox/ArchiveBox/)"
- # COOKIES_FILE = null
- # CHROME_USER_DATA_DIR = null
- # CHROME_TIMEOUT = false
- # CHROME_HEADLESS = true
- # CHROME_SANDBOX = true
- # CHROME_EXTRA_ARGS = []
- # YOUTUBEDL_ARGS = ["--restrict-filenames", "--trim-filenames", "128", "--write-description", "--write-info-json", "--write-annotations", "--write-thumbnail", "--no-call-home", "--write-sub", "--write-auto-subs", "--convert-subs=srt", "--yes-playlist", "--continue", "--no-abort-on-error", "--ignore-errors", "--geo-bypass", "--add-metadata", "--format=(bv*+ba/b)[filesize<=750m][filesize_approx<=?750m]/(bv*+ba/b)"]
- # YOUTUBEDL_EXTRA_ARGS = []
- # WGET_ARGS = ["--no-verbose", "--adjust-extension", "--convert-links", "--force-directories", "--backup-converted", "--span-hosts", "--no-parent", "-e", "robots=off"]
- # WGET_EXTRA_ARGS = []
- # CURL_ARGS = ["--silent", "--location", "--compressed"]
- # CURL_EXTRA_ARGS = []
- # GIT_ARGS = ["--recursive"]
- # SINGLEFILE_ARGS = []
- # SINGLEFILE_EXTRA_ARGS = []
- # MERCURY_ARGS = ["--format=text"]
- # MERCURY_EXTRA_ARGS = []
- # FAVICON_PROVIDER = "https://www.google.com/s2/favicons?domain={}"
- # USE_INDEXING_BACKEND = true
- # USE_SEARCHING_BACKEND = true
- # SEARCH_BACKEND_ENGINE = "ripgrep"
- # SEARCH_BACKEND_HOST_NAME = "localhost"
- # SEARCH_BACKEND_PORT = 1491
- # SEARCH_BACKEND_PASSWORD = "SecretPassword"
- # SEARCH_PROCESS_HTML = true
- # SONIC_COLLECTION = "archivebox"
- # SONIC_BUCKET = "snapshots"
- # SEARCH_BACKEND_TIMEOUT = 90
- # FTS_SEPARATE_DATABASE = true
- # FTS_TOKENIZERS = "porter unicode61 remove_diacritics 2"
- # FTS_SQLITE_MAX_LENGTH = 1000000000
- # USE_CURL = true
- # USE_WGET = true
- # USE_SINGLEFILE = true
- # USE_READABILITY = true
- # USE_MERCURY = true
- # USE_GIT = true
- # USE_CHROME = true
- # USE_NODE = true
- # USE_YOUTUBEDL = true
- # USE_RIPGREP = true
- # CURL_BINARY = "curl"
- # GIT_BINARY = "git"
- # WGET_BINARY = "wget"
- # SINGLEFILE_BINARY = "single-file"
- # READABILITY_BINARY = "readability-extractor"
- # MERCURY_BINARY = "postlight-parser"
- # YOUTUBEDL_BINARY = "yt-dlp"
- # NODE_BINARY = "node"
- # RIPGREP_BINARY = "rg"
- # CHROME_BINARY = "chrome"
- # POCKET_CONSUMER_KEY = null
- # USER = "squash"
- # PACKAGE_DIR = "/opt/archivebox/archivebox"
- # TEMPLATES_DIR = "/opt/archivebox/archivebox/templates"
- # ARCHIVE_DIR = "/opt/archivebox/data/archive"
- # SOURCES_DIR = "/opt/archivebox/data/sources"
- # LOGS_DIR = "/opt/archivebox/data/logs"
- # PERSONAS_DIR = "/opt/archivebox/data/personas"
- # URL_DENYLIST_PTN = "re.compile(\'\\\\.(css|js|otf|ttf|woff|woff2|gstatic\\\\.com|googleapis\\\\.com/css)(\\\\?.*)?$\', re.IGNORECASE|re.MULTILINE)"
- # URL_ALLOWLIST_PTN = null
- # DIR_OUTPUT_PERMISSIONS = 755
- # ARCHIVEBOX_BINARY = "/opt/archivebox/.venv/bin/archivebox"
- # VERSION = "0.8.0"
- # COMMIT_HASH = "102e87578c6036bb0132dd1ebd17f8f05ffc880f"
- # BUILD_TIME = "2024-05-15 03:28:05 1715768885"
- # VERSIONS_AVAILABLE = null
- # CAN_UPGRADE = false
- # PYTHON_BINARY = "/opt/archivebox/.venv/bin/python3.10"
- # PYTHON_VERSION = "3.10.14"
- # DJANGO_BINARY = "/opt/archivebox/.venv/lib/python3.10/site-packages/django/__init__.py"
- # DJANGO_VERSION = "5.0.6 final (0)"
- # SQLITE_BINARY = "/opt/homebrew/Cellar/[email protected]/3.10.14/Frameworks/Python.framework/Versions/3.10/lib/python3.10/sqlite3/dbapi2.py"
- # SQLITE_VERSION = "2.6.0"
- # CURL_VERSION = "curl 8.4.0 (x86_64-apple-darwin23.0)"
- # WGET_VERSION = "GNU Wget 1.24.5"
- # WGET_AUTO_COMPRESSION = true
- # RIPGREP_VERSION = "ripgrep 14.1.0"
- # SINGLEFILE_VERSION = null
- # READABILITY_VERSION = null
- # MERCURY_VERSION = null
- # GIT_VERSION = "git version 2.44.0"
- # YOUTUBEDL_VERSION = "2024.04.09"
- # CHROME_VERSION = "Google Chrome 124.0.6367.207"
- # NODE_VERSION = "v21.7.3"'''
- # class IniToTomlTests(TestCase):
- # def test_convert(self):
- # first_output = convert(TEST_INPUT) # make sure ini -> toml parses correctly
- # second_output = convert(first_output) # make sure toml -> toml parses/dumps consistently
- # assert first_output == second_output == EXPECTED_OUTPUT # make sure parsing is indempotent
- # # DEBUGGING
- # import sys
- # import difflib
- # sys.stdout.writelines(difflib.context_diff(first_output, second_output, fromfile='first', tofile='second'))
- # print(repr(second_output))
|