|
|
@@ -91,3 +91,60 @@ def test_extract_input_uses_only_passed_extractors(tmp_path, process):
|
|
|
|
|
|
assert (archived_item_path / "warc").exists()
|
|
|
assert not (archived_item_path / "singlefile.html").exists()
|
|
|
+
|
|
|
+def test_json(tmp_path, process, disable_extractors_dict):
|
|
|
+ with open('../../mock_server/templates/example.json', 'r', encoding='utf-8') as f:
|
|
|
+ arg_process = subprocess.run(
|
|
|
+ ["archivebox", "add", "--index-only", "--parser=json"],
|
|
|
+ stdin=f,
|
|
|
+ capture_output=True,
|
|
|
+ env=disable_extractors_dict,
|
|
|
+ )
|
|
|
+
|
|
|
+ conn = sqlite3.connect("index.sqlite3")
|
|
|
+ c = conn.cursor()
|
|
|
+ urls = c.execute("SELECT url from core_snapshot").fetchall()
|
|
|
+ tags = c.execute("SELECT name from core_tag").fetchall()
|
|
|
+ conn.commit()
|
|
|
+ conn.close()
|
|
|
+
|
|
|
+ urls = list(map(lambda x: x[0], urls))
|
|
|
+ assert "http://127.0.0.1:8080/static/example.com.html" in urls
|
|
|
+ assert "http://127.0.0.1:8080/static/iana.org.html" in urls
|
|
|
+ assert "http://127.0.0.1:8080/static/shift_jis.html" in urls
|
|
|
+ assert "http://127.0.0.1:8080/static/title_og_with_html" in urls
|
|
|
+ # if the following URL appears, we must have fallen back to another parser
|
|
|
+ assert not "http://www.example.com/should-not-exist" in urls
|
|
|
+
|
|
|
+ tags = list(map(lambda x: x[0], tags))
|
|
|
+ assert "Tag1" in tags
|
|
|
+ assert "Tag2" in tags
|
|
|
+ assert "Tag3" in tags
|
|
|
+ assert "Tag4 with Space" in tags
|
|
|
+ assert "Tag5" in tags
|
|
|
+ assert "Tag6 with Space" in tags
|
|
|
+
|
|
|
+def test_json_with_leading_garbage(tmp_path, process, disable_extractors_dict):
|
|
|
+ with open('../../mock_server/templates/example.json.bad', 'r', encoding='utf-8') as f:
|
|
|
+ arg_process = subprocess.run(
|
|
|
+ ["archivebox", "add", "--index-only", "--parser=json"],
|
|
|
+ stdin=f,
|
|
|
+ capture_output=True,
|
|
|
+ env=disable_extractors_dict,
|
|
|
+ )
|
|
|
+
|
|
|
+ conn = sqlite3.connect("index.sqlite3")
|
|
|
+ c = conn.cursor()
|
|
|
+ urls = c.execute("SELECT url from core_snapshot").fetchall()
|
|
|
+ tags = c.execute("SELECT name from core_tag").fetchall()
|
|
|
+ conn.commit()
|
|
|
+ conn.close()
|
|
|
+
|
|
|
+ urls = list(map(lambda x: x[0], urls))
|
|
|
+ assert "http://127.0.0.1:8080/static/example.com.html" in urls
|
|
|
+ # if the following URL appears, we must have fallen back to another parser
|
|
|
+ assert not "http://www.example.com/should-not-exist" in urls
|
|
|
+
|
|
|
+ tags = list(map(lambda x: x[0], tags))
|
|
|
+ assert "Tag1" in tags
|
|
|
+ assert "Tag2" in tags
|