[3.12] gh-127637: add tests for dis command-line interface (#127759) (#127780)

This commit is contained in:
Bénédikt Tran 2025-01-18 12:01:56 +01:00 committed by GitHub
parent 405f6d72bb
commit fbbef609d1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 20 additions and 5 deletions

View file

@ -790,12 +790,12 @@ def dis(self):
return output.getvalue()
def main():
def main(args=None):
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('infile', type=argparse.FileType('rb'), nargs='?', default='-')
args = parser.parse_args()
args = parser.parse_args(args=args)
with args.infile as infile:
source = infile.read()
code = compile(source, args.infile.name, "exec")

View file

@ -3,16 +3,17 @@
import contextlib
import dis
import io
import opcode
import re
import sys
import tempfile
import types
import unittest
from test.support import (captured_stdout, requires_debug_ranges,
requires_specialization, cpython_only)
requires_specialization, cpython_only,
os_helper)
from test.support.bytecode_helper import BytecodeTestCase
import opcode
def get_tb():
def _error():
@ -2069,5 +2070,18 @@ def get_disassembly(self, tb):
return output.getvalue()
class TestDisCLI(unittest.TestCase):
def setUp(self):
self.filename = tempfile.mktemp()
self.addCleanup(os_helper.unlink, self.filename)
def test_invocation(self):
with self.assertRaises(SystemExit):
# suppress argparse error message
with contextlib.redirect_stderr(io.StringIO()):
dis.main(args=['--unknown', self.filename])
if __name__ == "__main__":
unittest.main()

View file

@ -0,0 +1 @@
Add tests for the :mod:`dis` command-line interface. Patch by Bénédikt Tran.