--- /dev/null
+import os
+import pathlib
+import subprocess
+import sys
+import pytest
+
+
+# Get directory of this file
+dir_path = pathlib.Path(__file__).resolve().parent
+
+# Build list of demo programs
+demos = []
+for subdir in ['.']:
+ p = pathlib.Path(dir_path, subdir)
+ demo_files = list(p.glob('*.py'))
+ for f in demo_files:
+ demos.append((f.parent, f.name))
+
+
+@pytest.mark.parametrize("path,name", demos)
+def test_demos(path, name):
+
+ # Run in serial
+ ret = subprocess.run([sys.executable, name],
+ cwd=str(path),
+ env={**os.environ, 'MPLBACKEND': 'agg'},
+ check=True)
--- /dev/null
+import os
+import pathlib
+import subprocess
+import sys
+import pytest
+
+
+# Get directory of this file
+dir_path = pathlib.Path(__file__).resolve().parent
+
+# Build list of demo programs
+tests = []
+for subdir in ['.']:
+ p = pathlib.Path(dir_path, subdir)
+ test_files = list(p.glob('**/*.py'))
+ for f in test_files:
+ tests.append((f.parent, f.name))
+
+
+# remove tests that are known to break
+tests = [d for d in tests if d[1] not in '']
+
+
+@pytest.mark.parametrize("path,name", tests)
+def test_demos(path, name):
+
+ ret = subprocess.run([sys.executable, name],
+ cwd=str(path),
+ env={**os.environ, 'MPLBACKEND': 'agg'},
+ check=True)