[Python-checkins] bpo-26901: Fix the Argument Clinic test suite (GH-8879)

Victor Stinner webhook-mailer at python.org
Mon Sep 3 17:17:24 EDT 2018


https://github.com/python/cpython/commit/65fc98e7b1f62c2e621f04780a3a77c3498cc195
commit: 65fc98e7b1f62c2e621f04780a3a77c3498cc195
branch: master
author: Victor Stinner <vstinner at redhat.com>
committer: GitHub <noreply at github.com>
date: 2018-09-03T23:17:20+02:00
summary:

bpo-26901: Fix the Argument Clinic test suite (GH-8879)

* Fix Tools/clinic/clinic_test.py: add missing
  FakeClinic.destination_buffers attribute and pass a file argument
  to Clinic().
* Rename Tools/clinic/clinic_test.py to Lib/test/test_clinic.py:
  add temporary Tools/clinic/ to sys.path to import the clinic
  module.

Co-Authored-By: Pablo Galindo <pablogsal at gmail.com>

files:
A Lib/test/test_clinic.py
D Tools/clinic/clinic_test.py

diff --git a/Tools/clinic/clinic_test.py b/Lib/test/test_clinic.py
similarity index 97%
rename from Tools/clinic/clinic_test.py
rename to Lib/test/test_clinic.py
index a9479a6e44e5..ba4ae3401056 100644
--- a/Tools/clinic/clinic_test.py
+++ b/Lib/test/test_clinic.py
@@ -1,16 +1,26 @@
 # Argument Clinic
 # Copyright 2012-2013 by Larry Hastings.
 # Licensed to the PSF under a contributor agreement.
-#
 
-import clinic
-from clinic import DSLParser
+from test import support
+from unittest import TestCase
 import collections
 import inspect
-from test import support
+import os.path
 import sys
 import unittest
-from unittest import TestCase
+
+
+clinic_path = os.path.join(os.path.dirname(__file__), '..', '..', 'Tools', 'clinic')
+clinic_path = os.path.normpath(clinic_path)
+if not os.path.exists(clinic_path):
+    raise unittest.SkipTest(f'{clinic_path!r} path does not exist')
+sys.path.append(clinic_path)
+try:
+    import clinic
+    from clinic import DSLParser
+finally:
+    del sys.path[-1]
 
 
 class FakeConverter:
@@ -35,7 +45,7 @@ def get(self, name, default):
         return self.used_converters.setdefault(name, FakeConverterFactory(name))
 
 clinic.Clinic.presets_text = ''
-c = clinic.Clinic(language='C')
+c = clinic.Clinic(language='C', filename = "file")
 
 class FakeClinic:
     def __init__(self):
@@ -43,6 +53,7 @@ def __init__(self):
         self.legacy_converters = FakeConvertersDict()
         self.language = clinic.CLanguage(None)
         self.filename = None
+        self.destination_buffers = {}
         self.block_parser = clinic.BlockParser('', self.language)
         self.modules = collections.OrderedDict()
         self.classes = collections.OrderedDict()
@@ -93,7 +104,7 @@ def test_eol(self):
         # so it would spit out an end line for you.
         # and since you really already had one,
         # the last line of the block got corrupted.
-        c = clinic.Clinic(clinic.CLanguage(None))
+        c = clinic.Clinic(clinic.CLanguage(None), filename="file")
         raw = "/*[clinic]\nfoo\n[clinic]*/"
         cooked = c.parse(raw).splitlines()
         end_line = cooked[2].rstrip()
@@ -252,7 +263,7 @@ def test_round_trip_2(self):
 
     def _test_clinic(self, input, output):
         language = clinic.CLanguage(None)
-        c = clinic.Clinic(language)
+        c = clinic.Clinic(language, filename="file")
         c.parsers['inert'] = InertParser(c)
         c.parsers['copy'] = CopyParser(c)
         computed = c.parse(input)



More information about the Python-checkins mailing list