Run CPython test suite in our CI (#353)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 1dc21e0..1174ce3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -74,6 +74,14 @@
           cd src
           python -m unittest test_typing_extensions.py
 
+      - name: Test CPython typing test suite
+        run: |
+          # Run the typing test suite from CPython with typing_extensions installed,
+          # because we monkeypatch typing under some circumstances.
+          python -c 'import typing_extensions; import test.__main__' test_typing -v
+        # Test suite fails on PyPy even without typing_extensions
+        if: !startsWith(matrix.python-version, 'pypy')
+
   linting:
     name: Lint
 
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a545e25..ce9d3f0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,7 @@
-# Release 4.11.0 (WIP)
+# Unreleased
 
+- Fix minor discrepancy between error messages produced by `typing`
+  and `typing_extensions` on Python 3.10. Patch by Jelle Zijlstra.
 - When `include_extra=False`, `get_type_hints()` now strips `ReadOnly` from the annotation.
 
 # Release 4.10.0 (February 24, 2024)
diff --git a/src/test_typing_extensions.py b/src/test_typing_extensions.py
index d48880f..8940145 100644
--- a/src/test_typing_extensions.py
+++ b/src/test_typing_extensions.py
@@ -3262,7 +3262,7 @@
         self.assertEqual(MemoizedFunc.__parameters__, (Ts, T, T2))
         self.assertTrue(MemoizedFunc._is_protocol)
 
-        things = "arguments" if sys.version_info >= (3, 11) else "parameters"
+        things = "arguments" if sys.version_info >= (3, 10) else "parameters"
 
         # A bug was fixed in 3.11.1
         # (https://github.com/python/cpython/commit/74920aa27d0c57443dd7f704d6272cca9c507ab3)
@@ -5711,7 +5711,7 @@
                 self.assertIsInstance(a, G)
                 self.assertEqual(a.x, 3)
 
-                things = "arguments" if sys.version_info >= (3, 11) else "parameters"
+                things = "arguments" if sys.version_info >= (3, 10) else "parameters"
 
                 with self.assertRaisesRegex(TypeError, f'Too many {things}'):
                     G[int, str]
diff --git a/src/typing_extensions.py b/src/typing_extensions.py
index 4499c61..9421833 100644
--- a/src/typing_extensions.py
+++ b/src/typing_extensions.py
@@ -164,7 +164,8 @@
             num_tv_tuples = sum(isinstance(p, TypeVarTuple) for p in parameters)
             if (num_tv_tuples > 0) and (alen >= elen - num_tv_tuples):
                 return
-        raise TypeError(f"Too {'many' if alen > elen else 'few'} parameters for {cls};"
+        things = "arguments" if sys.version_info >= (3, 10) else "parameters"
+        raise TypeError(f"Too {'many' if alen > elen else 'few'} {things} for {cls};"
                         f" actual {alen}, expected {elen}")