mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
|
|
import sys
|
|
import os.path
|
|
import shutil
|
|
import unittest
|
|
from contextlib import contextmanager
|
|
|
|
import semmle.populator
|
|
from tests import test_utils
|
|
import subprocess
|
|
if sys.version_info < (3,0):
|
|
from StringIO import StringIO
|
|
else:
|
|
from io import StringIO
|
|
|
|
ALL_ACCESS = int("777", base=8)
|
|
|
|
|
|
@contextmanager
|
|
def discard_output():
|
|
new_out, new_err = StringIO(), StringIO()
|
|
old_out, old_err = sys.stdout, sys.stderr
|
|
try:
|
|
sys.stdout, sys.stderr = new_out, new_err
|
|
yield
|
|
finally:
|
|
sys.stdout, sys.stderr = old_out, old_err
|
|
|
|
class SingleThreadedTest(test_utils.ExtractorTest):
|
|
|
|
def __init__(self, name):
|
|
super(SingleThreadedTest, self).__init__(name)
|
|
|
|
def test_ioerror(self):
|
|
if os.name == "nt":
|
|
return
|
|
try:
|
|
os.chmod(self.trap_path, 0)
|
|
with discard_output():
|
|
try:
|
|
self.run_extractor("-z1", "-y", "package.sub", "mod1", "package.x", "package.sub.a")
|
|
except subprocess.CalledProcessError as ex:
|
|
self.assertEqual(ex.returncode, 1)
|
|
finally:
|
|
os.chmod(self.trap_path, ALL_ACCESS)
|