mirror of
https://github.com/ArchiveBox/ArchiveBox
synced 2024-11-10 06:34:16 +00:00
Basic integration test fixture and couple of tests
This commit is contained in:
parent
1cbbf7204d
commit
c58659036b
1 changed files with 92 additions and 0 deletions
92
tests/tests.py
Executable file
92
tests/tests.py
Executable file
|
@ -0,0 +1,92 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
from os.path import dirname, pardir, join
|
||||||
|
from subprocess import check_output, check_call
|
||||||
|
from tempfile import TemporaryDirectory
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
ARCHIVER_BIN = join(dirname(__file__), pardir, 'archive')
|
||||||
|
|
||||||
|
|
||||||
|
class Helper:
|
||||||
|
def __init__(self, output_dir: str):
|
||||||
|
self.output_dir = output_dir
|
||||||
|
|
||||||
|
def run(self, links, env=None, env_defaults=None):
|
||||||
|
if env_defaults is None:
|
||||||
|
env_defaults = {
|
||||||
|
# we don't wanna spam archive.org witin our tests..
|
||||||
|
'SUBMIT_ARCHIVE_DOT_ORG': 'False',
|
||||||
|
}
|
||||||
|
if env is None:
|
||||||
|
env = {}
|
||||||
|
|
||||||
|
env = dict(**env_defaults, **env)
|
||||||
|
|
||||||
|
jj = []
|
||||||
|
for url in links:
|
||||||
|
jj.append({
|
||||||
|
'href': url,
|
||||||
|
'description': url,
|
||||||
|
})
|
||||||
|
input_json = join(self.output_dir, 'input.json')
|
||||||
|
with open(input_json, 'w') as fo:
|
||||||
|
json.dump(jj, fo)
|
||||||
|
|
||||||
|
if env is None:
|
||||||
|
env = {}
|
||||||
|
env['OUTPUT_DIR'] = self.output_dir
|
||||||
|
check_call(
|
||||||
|
[ARCHIVER_BIN, input_json],
|
||||||
|
env={**os.environ.copy(), **env},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class TestArchiver:
|
||||||
|
def setup(self):
|
||||||
|
# self.tdir = TemporaryDirectory(dir='hello')
|
||||||
|
class AAA:
|
||||||
|
name = 'hello'
|
||||||
|
self.tdir = AAA()
|
||||||
|
|
||||||
|
def teardown(self):
|
||||||
|
pass
|
||||||
|
# self.tdir.cleanup()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def output_dir(self):
|
||||||
|
return self.tdir.name
|
||||||
|
|
||||||
|
def test_fetch_favicon_false(self):
|
||||||
|
h = Helper(self.output_dir)
|
||||||
|
|
||||||
|
h.run(links=[
|
||||||
|
'https://google.com',
|
||||||
|
], env={
|
||||||
|
'FETCH_FAVICON': 'False',
|
||||||
|
})
|
||||||
|
# for now no asserts, good enough if it isn't failing
|
||||||
|
|
||||||
|
def test_3000_links(self):
|
||||||
|
"""
|
||||||
|
The pages are deliberatly unreachable. The tool should gracefully process all of them even though individual links are failing.
|
||||||
|
"""
|
||||||
|
h = Helper(self.output_dir)
|
||||||
|
|
||||||
|
h.run(links=[
|
||||||
|
f'https://localhost:123/whatever_{i}.html' for i in range(3000)
|
||||||
|
], env={
|
||||||
|
'FETCH_FAVICON': 'False',
|
||||||
|
'FETCH_SCREENSHOT': 'False',
|
||||||
|
'FETCH_PDF': 'False',
|
||||||
|
'FETCH_DOM': 'False',
|
||||||
|
'CHECK_SSL_VALIDITY': 'False',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
pytest.main([__file__])
|
Loading…
Reference in a new issue