fix(stubgen): give new output files the default umask permissions

This commit is contained in:
Adrià Franch 2026-10-11 17:11:35 +02:00
parent 83be8dfb27
commit 8b73fe7a76
2 changed files with 10 additions and 0 deletions

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python3
import argparse
import os
import re
import sys
import tempfile
@ -177,6 +178,8 @@ def same_file(left, right):
def write_outputs(outputs):
staged = []
umask = os.umask(0)
os.umask(umask)
try:
for filename, content in outputs:
path = Path(filename).resolve()
@ -188,6 +191,8 @@ def write_outputs(outputs):
handle.write(content)
if path.exists():
temporary.chmod(path.stat().st_mode & 0o7777)
else:
temporary.chmod(0o666 & ~umask)
for temporary, path in staged:
temporary.replace(path)
finally:

View File

@ -1,5 +1,6 @@
import contextlib
import io
import os
import tempfile
from pathlib import Path
import sys
@ -113,6 +114,10 @@ class StubGeneratorTests(unittest.TestCase):
self.assertEqual(stubgen.main(arguments), 0)
self.assertIn('APS5_EXPORT("AAAAAAAAAAA",', code.read_text(encoding="utf-8"))
self.assertIn("unknown name, signature", debt.read_text(encoding="utf-8"))
if sys.platform != "win32":
mask = os.umask(0o022)
os.umask(mask)
self.assertEqual(code.stat().st_mode & 0o777, 0o666 & ~mask)
if __name__ == "__main__":