diff options
| author | Pjotr Prins | 2026-04-05 11:58:36 +0200 |
|---|---|---|
| committer | Pjotr Prins | 2026-04-05 11:58:36 +0200 |
| commit | d0876ab1f89c107db906be6c82a413308cb54c19 (patch) | |
| tree | 05bf86f564eca40422e828b4408b6b0a3962098e /tests | |
| parent | 9d3ecb23ef927c9cb1f84676d05dae360559dc37 (diff) | |
| download | genecup-d0876ab1f89c107db906be6c82a413308cb54c19.tar.gz | |
Add local search test
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_local_xfetch.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/test_local_xfetch.py b/tests/test_local_xfetch.py new file mode 100644 index 0000000..7b7bc8f --- /dev/null +++ b/tests/test_local_xfetch.py @@ -0,0 +1,38 @@ +"""Test local xsearch + xfetch against a local PubMed archive. + +Requires EDIRECT_LOCAL_ARCHIVE to point to a PubMed archive directory +(e.g. /export3/PubMed/Source) and edirect tools on PATH. + +Run with: EDIRECT_LOCAL_ARCHIVE=/export3/PubMed/Source python3 -m unittest tests.test_local_xfetch -v +""" + +import os +import subprocess +import unittest + +ARCHIVE = os.environ.get("EDIRECT_LOCAL_ARCHIVE", "/export3/PubMed/Source") + +@unittest.skipUnless(os.path.isdir(ARCHIVE), + f"EDIRECT_LOCAL_ARCHIVE not found: {ARCHIVE}") +class TestLocalXfetch(unittest.TestCase): + def test_xsearch_xfetch_penk_stress(self): + """Local xsearch + xfetch for Penk + stress, expect PMIDs.""" + env = os.environ.copy() + env["EDIRECT_LOCAL_ARCHIVE"] = ARCHIVE + result = subprocess.run( + ["sh", "-c", + 'xsearch -db pubmed -query "(stress) AND (Penk [tiab])" ' + '| xfetch -db pubmed'], + capture_output=True, text=True, timeout=120, env=env) + self.assertEqual(result.returncode, 0, result.stderr) + output = result.stdout.strip() + self.assertGreater(len(output), 0, "Expected non-empty XML output") + self.assertIn("PubmedArticle", output, + "Expected PubmedArticle XML elements") + # Count articles + count = output.count("<PubmedArticle>") + print(f" Found {count} PubmedArticle records for Penk+stress (local)") + self.assertGreater(count, 10, "Expected at least 10 PubmedArticles") + +if __name__ == "__main__": + unittest.main() |
