diff --git a/core/TESTS/test_parsers.py b/core/TESTS/test_parsers.py
index 85869d3..44b9d8a 100644
--- a/core/TESTS/test_parsers.py
+++ b/core/TESTS/test_parsers.py
@@ -21,6 +21,7 @@ https://docs.djangoproject.com/en/dev/topics/testing/tools/
import re
import subprocess
import unittest
+from http import HTTPStatus
from django.test import Client, SimpleTestCase, TestCase
@@ -99,4 +100,28 @@ class ImportTest(TestCase):
for e in expected:
self.assertIn(e, messages)
for e in not_expected:
- self.assertNotIn(e, messages)
\ No newline at end of file
+ self.assertNotIn(e, messages)
+
+ def test_aliases(self):
+ # Needs another test with test data
+ response = self.client.get(f"/aliases/{TEST_YEAR}")
+ self.assertEqual(response.status_code, HTTPStatus.OK)
+ content = response.content.decode()
+ with open('_test_response.html', 'w') as f:
+ f.write(content)
+ ph = f"'fsmartarse'"
+ phmatch = re.search(ph, content)
+ self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'")
+
+
+ def test_people(self):
+ # Needs another test with test data
+ response = self.client.get("/people")
+ self.assertEqual(response.status_code, HTTPStatus.OK)
+ content = response.content.decode()
+ with open('_test_response.html', 'w') as f:
+ f.write(content)
+ ph = f"
{TEST_YEAR} | "
+ phmatch = re.search(ph, content)
+ self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'")
+
\ No newline at end of file
diff --git a/core/TESTS/tests.py b/core/TESTS/tests.py
index c663df6..fc6f12b 100644
--- a/core/TESTS/tests.py
+++ b/core/TESTS/tests.py
@@ -476,6 +476,71 @@ class PageTests(TestCase):
self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'")
+ def test_statistics(self):
+ response = self.client.get("/statistics")
+ self.assertEqual(response.status_code, HTTPStatus.OK)
+ content = response.content.decode()
+ ph = r"0 expeditions: 0 people, 0 caves and 0 logbook entries."
+ phmatch = re.search(ph, content)
+ self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'")
+
+ def test_stats(self):
+ # Needs another test with test data
+ response = self.client.get("/stats")
+ self.assertEqual(response.status_code, HTTPStatus.OK)
+ content = response.content.decode()
+ ph = r"Total length: 0.0 km adding up the total for each year."
+ phmatch = re.search(ph, content)
+ self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'")
+
+ def test_dataissues(self):
+ # Needs another test with test data
+ response = self.client.get("/dataissues")
+ self.assertEqual(response.status_code, HTTPStatus.OK)
+ content = response.content.decode()
+ ph = r"as well as these import/parsing issues"
+ phmatch = re.search(ph, content)
+ self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'")
+
+ def test_therionissues(self):
+ # Needs another test with test data
+ response = self.client.get("/therionissues")
+ self.assertEqual(response.status_code, HTTPStatus.OK)
+ content = response.content.decode()
+ ph = r"! Un-parsed image filename"
+ phmatch = re.search(ph, content)
+ self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'")
+
+ def test_surveximport(self):
+ # Needs another test with test data
+ response = self.client.get("/surveximport")
+ self.assertEqual(response.status_code, HTTPStatus.OK)
+ content = response.content.decode()
+ # with open('_test_response.html', 'w') as f:
+ # f.write(content)
+ ph = r"The number at the left-hand margin is the depth"
+ phmatch = re.search(ph, content)
+ self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'")
+
+ def test_survexdebug(self):
+ # Needs another test with test data
+ response = self.client.get("/survexdebug")
+ self.assertEqual(response.status_code, HTTPStatus.OK)
+ content = response.content.decode()
+ ph = r"Running list of warnings during import"
+ phmatch = re.search(ph, content)
+ self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'")
+
+ def test_eastings(self):
+ # Needs another test with test data
+ response = self.client.get("/eastings")
+ self.assertEqual(response.status_code, HTTPStatus.OK)
+ content = response.content.decode()
+ ph = r"Survex Station | x | y |
"
+ phmatch = re.search(ph, content)
+ self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'")
+
+
# ADD TESTS when we are redirecting /expofiles/ to get the actual files using e.g.
# import requests
# page = requests.get("http://dataquestio.github.io/web-scraping-pages/simple.html")
diff --git a/parsers/survex.py b/parsers/survex.py
index 838b47e..4a4cb85 100644
--- a/parsers/survex.py
+++ b/parsers/survex.py
@@ -1849,7 +1849,7 @@ class LoadingSurvex:
Path(svxpath).parent
if not svxpath.is_file():
- message = f' ! BAD survex file "{fullpath}" specified in *include in {calledpath} '
+ message = f' ! BAD. "{fullpath}" is not a file, specified in *include in {calledpath} '
stash_data_issue(parser="survex", message=message)
print(message)
return
@@ -2033,8 +2033,6 @@ def FindAndLoadSurvex(survexblockroot):
svx_scan.svxfileslist = [] # free memory
svx_scan = None # Hmm. Does this actually delete all the instance variables if they are lists, dicts etc.?
- print(f" - RunSurvexIfNeeded cavern on '{fullpathtotop}'", file=sys.stderr)
- omit_scan.RunSurvexIfNeeded(fullpathtotop, fullpathtotop)
omit_scan.check_unique_name(fullpathtotop)
omit_scan.uniquefile[unseensroot] = ["0"]
@@ -2130,6 +2128,45 @@ def FindAndLoadSurvex(survexblockroot):
return legsnumber
+def parse_one_file(fpath): # --------------------------------------in progress-------------------
+ """Parse just one file. Use when re-loading after editing.
+ NB careful of *include lines, which may exist! Ignore them.
+ """
+ print("\n - Loading One Survex file (LinearLoad)", file=sys.stderr)
+ svx_load = LoadingSurvex()
+
+ omitsfileroot = MakeOmitFileRoot(fpath) # NO! This always creats a SurvexFile object. We are overwriting one..
+ survexomitsroot = SurvexBlock(
+ name=OMITBLOCK, survexpath="", survexfile=omitsfileroot, legsall=0, legslength=0.0
+ )
+ survexomitsroot.save()
+ # SurvexBlock.objects.all().delete()
+ # SurvexFile.objects.all().delete()
+ # SurvexDirectory.objects.all().delete()
+ # SurvexPersonRole.objects.all().delete()
+ # SurvexStation.objects.all().delete()
+ print(" - Loading Survex Blocks...")
+
+ svx_load.survexdict[survexfileroot.survexdirectory] = []
+ svx_load.survexdict[survexfileroot.survexdirectory].append(survexfileroot)
+ svx_load.svxdirs[""] = survexfileroot.survexdirectory
+
+ # ----------------------------------------------------------------
+ svx_load.LinearLoad(survexblockroot, survexfileroot.path, collatefilename)
+ # ----------------------------------------------------------------
+
+ legsnumber = svx_load.legsnumber
+
+ print(f" - Number of SurvexDirectories: {len(svx_load.survexdict):,}")
+ tf = 0
+ for d in svx_load.survexdict:
+ tf += len(svx_load.survexdict[d])
+ print(f" - Number of SurvexFiles: {tf:,}")
+ print(f" - Number of Survex legs: {legsnumber:,}")
+
+ # Now set Django SurvexFile object..
+
+ svx_load = None
def MakeSurvexFileRoot():
"""Returns a file_object.path = SURVEX_TOPNAME associated with directory_object.path = SURVEX_DATA"""