diff --git a/run_project_tests.py b/run_project_tests.py
index 977c0c4..97137ae 100755
--- a/run_project_tests.py
+++ b/run_project_tests.py
@@ -1306,6 +1306,15 @@
         print('{0:<{2}}: {1}'.format(tool['tool'], get_version(tool), max_width))
     print()
 
+def clear_transitive_files():
+    a = Path('test cases/common')
+    for d in a.glob('*subproject subdir/subprojects/subsubsub*'):
+        if d.is_dir():
+            shutil.rmtree(d)
+        else:
+            d.unlink()
+            
+
 if __name__ == '__main__':
     parser = argparse.ArgumentParser(description="Run the test suite of Meson.")
     parser.add_argument('extra_args', nargs='*',
@@ -1326,6 +1335,8 @@
     if options.native_file:
         options.extra_args += ['--native-file', options.native_file]
 
+    clear_transitive_files()
+
     print('Meson build system', meson_version, 'Project Tests')
     print('Using python', sys.version.split('\n')[0])
     setup_commands(options.backend)
@@ -1357,4 +1368,5 @@
             tests = list(g)
             if len(tests) != 1:
                 print('WARNING: The {} suite contains duplicate "{}" tests: "{}"'.format(name, k, '", "'.join(tests)))
+    clear_transitive_files()
     raise SystemExit(failing_tests)
diff --git a/run_unittests.py b/run_unittests.py
index 7e7ec93..c5a43f6 100755
--- a/run_unittests.py
+++ b/run_unittests.py
@@ -5793,12 +5793,16 @@
            contain required keys.
         '''
         tdir = os.path.join(self.unit_test_dir, '20 subproj dep variables')
+        stray_file = os.path.join(tdir, 'subprojects/subsubproject.wrap')
+        if os.path.exists(stray_file):
+            os.unlink(stray_file)
         out = self.init(tdir, inprocess=True)
         self.assertRegex(out, r"Neither a subproject directory nor a .*nosubproj.wrap.* file was found")
         self.assertRegex(out, r'Function does not take positional arguments.')
         self.assertRegex(out, r'Dependency .*somenotfounddep.* from subproject .*subprojects/somesubproj.* found: .*NO.*')
         self.assertRegex(out, r'Dependency .*zlibproxy.* from subproject .*subprojects.*somesubproj.* found: .*YES.*')
         self.assertRegex(out, r'Missing key .*source_filename.* in subsubproject.wrap')
+        os.unlink(stray_file)
 
     def test_exception_exit_status(self):
         '''
