From 150c301d0e178ba65763731cb2b418744f39421d Mon Sep 17 00:00:00 2001
From: lb584 <lb584@cam.ac.uk>
Date: Fri, 12 May 2023 11:20:10 +0100
Subject: [PATCH] adding a check for loading resource files before all partial
 integration tests begin. Allows the user to spot if they have not set their
 working dir correctly

---
 .../integration/partial/integration_test_utils.py  | 14 ++++++++++++--
 tests/integration/partial/run_test_suite.py        |  5 +----
 tests/integration/partial/test_advisory.py         |  1 +
 tests/integration/partial/test_deposition.py       |  1 +
 tests/integration/partial/test_env_suit.py         |  2 ++
 tests/integration/partial/test_epi.py              |  1 +
 tests/integration/partial/test_survey.py           |  1 +
 7 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/tests/integration/partial/integration_test_utils.py b/tests/integration/partial/integration_test_utils.py
index 6faef10..78fdddc 100644
--- a/tests/integration/partial/integration_test_utils.py
+++ b/tests/integration/partial/integration_test_utils.py
@@ -3,8 +3,6 @@ import datetime
 import glob
 import json
 import os
-import sys
-import unittest
 from importlib import reload
 from typing import List
 from unittest import TestSuite, TestLoader, TestCase, TestResult
@@ -29,6 +27,18 @@ class IntegrationTestUtils:
     TEST_START_DATE: str = None
     TEST_JOB_DIR: str = None
 
+    @staticmethod
+    def check_resources_exist():
+        """
+        do a single check for the email cred file, which will raise an error suggesting that the user may not have set
+        their pythonpath correctly
+        """
+        emailcred_exists = os.path.exists(IntegrationTestUtils.EMAIL_CRED_PATH)
+        if not emailcred_exists:
+            raise FileNotFoundError(f"email cred file {IntegrationTestUtils.EMAIL_CRED_PATH} not found - have you set "
+                                    f"the working directory to the same directory as the tests you are running?"
+                                    f" (tests use a path relative to the test directory)")
+
     @staticmethod
     def build_arg_parser() -> argparse.ArgumentParser:
         parser = argparse.ArgumentParser()
diff --git a/tests/integration/partial/run_test_suite.py b/tests/integration/partial/run_test_suite.py
index cded5c8..4ba4814 100644
--- a/tests/integration/partial/run_test_suite.py
+++ b/tests/integration/partial/run_test_suite.py
@@ -1,15 +1,12 @@
 import sys
-import unittest
 from unittest import TestLoader, TestSuite, TestResult
 
-import HtmlTestRunner
 from HtmlTestRunner import HTMLTestRunner
-from HtmlTestRunner.result import HtmlTestResult
 
+from integration.partial.test_advisory import TestAdvisory
 from integration.partial.test_deposition import TestDeposition
 from integration.partial.test_env_suit import TestEnvSuit
 from integration.partial.test_survey import TestSurvey
-from integration.partial.test_advisory import TestAdvisory
 
 
 def build_test_runner() -> TestSuite:
diff --git a/tests/integration/partial/test_advisory.py b/tests/integration/partial/test_advisory.py
index 9cc1dce..6864334 100644
--- a/tests/integration/partial/test_advisory.py
+++ b/tests/integration/partial/test_advisory.py
@@ -26,6 +26,7 @@ class TestAdvisory(BaseAdvisoryTestSuite.AdvisoryTestSuite):
 
     def setUp(self) -> None:
 
+        IntegrationTestUtils.check_resources_exist()
         self.set_expected_values()
 
         if IntegrationTestUtils.TEST_OUT_PATH is None or not os.path.isdir(IntegrationTestUtils.TEST_OUT_PATH):
diff --git a/tests/integration/partial/test_deposition.py b/tests/integration/partial/test_deposition.py
index 92a6e1f..9655d41 100644
--- a/tests/integration/partial/test_deposition.py
+++ b/tests/integration/partial/test_deposition.py
@@ -28,6 +28,7 @@ class TestDeposition(BaseDepoTestSuite.DepoTestSuite):
 
     def setUp(self) -> None:
 
+        IntegrationTestUtils.check_resources_exist()
         self.set_expected_values()
 
         if IntegrationTestUtils.TEST_OUT_PATH is None or not os.path.isdir(IntegrationTestUtils.TEST_OUT_PATH):
diff --git a/tests/integration/partial/test_env_suit.py b/tests/integration/partial/test_env_suit.py
index 8c33a3d..c45b7f1 100644
--- a/tests/integration/partial/test_env_suit.py
+++ b/tests/integration/partial/test_env_suit.py
@@ -26,6 +26,8 @@ class TestEnvSuit(BaseEnvSuitTestSuite.EnvSuitTestSuite):
         self.ETH_PNG_COUNT = 6
 
     def setUp(self) -> None:
+
+        IntegrationTestUtils.check_resources_exist()
         self.set_expected_values()
 
         if IntegrationTestUtils.TEST_OUT_PATH is None or not os.path.isdir(
diff --git a/tests/integration/partial/test_epi.py b/tests/integration/partial/test_epi.py
index 197ce6e..f1e1d74 100644
--- a/tests/integration/partial/test_epi.py
+++ b/tests/integration/partial/test_epi.py
@@ -24,6 +24,7 @@ class TestEpi(BaseEpiTestSuite.EpiTestSuite):
 
     def setUp(self) -> None:
 
+        IntegrationTestUtils.check_resources_exist()
         self.set_expected_values()
 
         if IntegrationTestUtils.TEST_OUT_PATH is None or not os.path.isdir(IntegrationTestUtils.TEST_OUT_PATH):
diff --git a/tests/integration/partial/test_survey.py b/tests/integration/partial/test_survey.py
index 59d63d5..2581702 100644
--- a/tests/integration/partial/test_survey.py
+++ b/tests/integration/partial/test_survey.py
@@ -23,6 +23,7 @@ class TestSurvey(BaseSurveyTestSuite.SurveyTestSuite):
 
     def setUp(self) -> None:
 
+        IntegrationTestUtils.check_resources_exist()
         self.set_expected_values()
 
         if IntegrationTestUtils.TEST_OUT_PATH is None or not os.path.isdir(
-- 
GitLab