try:
with open(script_path, 'rb') as f:
source_code = f.read()
-
- # Compile and execute the script
- code = compile(source_code, script_path, 'exec')
- exec(code, {'__name__': '__main__', '__file__': script_path})
except FileNotFoundError as e:
raise TargetError(f"Script file not found: {script_path}") from e
except PermissionError as e:
raise TargetError(f"Permission denied reading script: {script_path}") from e
+
+ try:
+ # Compile and execute the script
+ code = compile(source_code, script_path, 'exec')
+ exec(code, {'__name__': '__main__', '__file__': script_path})
except SyntaxError as e:
raise TargetError(f"Syntax error in script {script_path}: {e}") from e
except SystemExit:
# Expected errors - we just want to test format validation
pass
+ def test_script_error_treatment(self):
+ script_file = tempfile.NamedTemporaryFile("w", delete=False, suffix=".py")
+ script_file.write("open('nonexistent_file.txt')\n")
+ script_file.close()
+ self.addCleanup(os.unlink, script_file.name)
+
+ result = subprocess.run(
+ [sys.executable, "-m", "profiling.sampling.sample", "-d", "1", script_file.name],
+ capture_output=True,
+ text=True,
+ )
+ output = result.stdout + result.stderr
+
+ self.assertNotIn("Script file not found", output)
+ self.assertIn("No such file or directory: 'nonexistent_file.txt'", output)
+
class TestSampleProfilerCLI(unittest.TestCase):
def _setup_sync_mocks(self, mock_socket, mock_popen):