37 lines
1.4 KiB
Python
Raw Normal View History

import importlib.util
import io
import os
import subprocess
import sys
import tempfile
import unittest
PATH = os.path.join(os.path.dirname(__file__), "pre-push-clean.py")
SPEC = importlib.util.spec_from_file_location("pre_push_clean", PATH)
MOD = importlib.util.module_from_spec(SPEC); SPEC.loader.exec_module(MOD)
class PrePushUnicodePathTests(unittest.TestCase):
def test_fallback_file_list_preserves_unicode_paths(self):
with tempfile.TemporaryDirectory() as directory:
old_cwd, old_stdin = os.getcwd(), sys.stdin
try:
os.chdir(directory)
subprocess.run(["git", "init", "-q"], check=True)
subprocess.run(["git", "config", "user.email", "test@example.invalid"], check=True)
subprocess.run(["git", "config", "user.name", "test"], check=True)
os.makedirs("霜砚", exist_ok=True)
with open("霜砚/凭证.md", "w", encoding="utf-8") as handle:
handle.write("safe\n")
subprocess.run(["git", "add", "."], check=True)
subprocess.run(["git", "commit", "-qm", "fixture"], check=True)
sys.stdin = io.StringIO("")
self.assertIn("霜砚/凭证.md", MOD.get_changed_files())
finally:
sys.stdin = old_stdin
os.chdir(old_cwd)
if __name__ == "__main__":
unittest.main()