summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorPaul Monson <paulmon@users.noreply.github.com>2019-04-25 18:36:45 (GMT)
committerSteve Dower <steve.dower@python.org>2019-04-25 18:36:45 (GMT)
commit62dfd7d6fe11bfa0cd1d7376382c8e7b1275e38c (patch)
treef59fcebb25702acbde504865f1a483ab7ac80954 /Lib/test
parent8c3ecc6bacc8d0cd534f2b5b53ed962dd1368c7b (diff)
downloadcpython-62dfd7d6fe11bfa0cd1d7376382c8e7b1275e38c.zip
cpython-62dfd7d6fe11bfa0cd1d7376382c8e7b1275e38c.tar.gz
cpython-62dfd7d6fe11bfa0cd1d7376382c8e7b1275e38c.tar.bz2
bpo-35920: Windows 10 ARM32 platform support (GH-11774)
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_codecs.py32
-rw-r--r--Lib/test/test_mimetypes.py3
-rw-r--r--Lib/test/test_os.py3
-rw-r--r--Lib/test/test_startfile.py2
-rw-r--r--Lib/test/test_sundry.py3
-rw-r--r--Lib/test/test_winreg.py3
6 files changed, 42 insertions, 4 deletions
diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py
index 05843c5..027a84e 100644
--- a/Lib/test/test_codecs.py
+++ b/Lib/test/test_codecs.py
@@ -27,6 +27,26 @@ def coding_checker(self, coder):
self.assertEqual(coder(input), (expect, len(input)))
return check
+# On small versions of Windows like Windows IoT or Windows Nano Server not all codepages are present
+def is_code_page_present(cp):
+ from ctypes import POINTER, WINFUNCTYPE, windll, WinError, Structure, WinDLL
+ from ctypes.wintypes import BOOL, UINT, BYTE, WCHAR, UINT, DWORD
+
+ MAX_LEADBYTES = 12 # 5 ranges, 2 bytes ea., 0 term.
+ MAX_DEFAULTCHAR = 2 # single or double byte
+ MAX_PATH = 260
+ class CPINFOEXW(ctypes.Structure):
+ _fields_ = [("MaxCharSize", UINT),
+ ("DefaultChar", BYTE*MAX_DEFAULTCHAR),
+ ("LeadByte", BYTE*MAX_LEADBYTES),
+ ("UnicodeDefaultChar", WCHAR),
+ ("CodePage", UINT),
+ ("CodePageName", WCHAR*MAX_PATH)]
+
+ prototype = WINFUNCTYPE(BOOL, UINT, DWORD, POINTER(CPINFOEXW))
+ GetCPInfoEx = prototype(("GetCPInfoExW", WinDLL("kernel32")))
+ info = CPINFOEXW()
+ return GetCPInfoEx(cp, 0, info)
class Queue(object):
"""
@@ -3078,9 +3098,19 @@ class CodePageTest(unittest.TestCase):
def test_code_page_decode_flags(self):
# Issue #36312: For some code pages (e.g. UTF-7) flags for
# MultiByteToWideChar() must be set to 0.
+ if support.verbose:
+ sys.stdout.write('\n')
for cp in (50220, 50221, 50222, 50225, 50227, 50229,
*range(57002, 57011+1), 65000):
- self.assertEqual(codecs.code_page_decode(cp, b'abc'), ('abc', 3))
+ # On small versions of Windows like Windows IoT
+ # not all codepages are present.
+ # A missing codepage causes an OSError exception
+ # so check for the codepage before decoding
+ if is_code_page_present(cp):
+ self.assertEqual(codecs.code_page_decode(cp, b'abc'), ('abc', 3), f'cp{cp}')
+ else:
+ if support.verbose:
+ print(f" skipping cp={cp}")
self.assertEqual(codecs.code_page_decode(42, b'abc'),
('\uf061\uf062\uf063', 3))
diff --git a/Lib/test/test_mimetypes.py b/Lib/test/test_mimetypes.py
index 554d3d5..c4b2fe2 100644
--- a/Lib/test/test_mimetypes.py
+++ b/Lib/test/test_mimetypes.py
@@ -6,6 +6,7 @@ import sys
import unittest
from test import support
+from platform import win32_edition
# Tell it we don't know about external files:
mimetypes.knownfiles = []
@@ -116,6 +117,8 @@ class Win32MimeTypesTestCase(unittest.TestCase):
mimetypes.types_map.clear()
mimetypes.types_map.update(self.original_types_map)
+ @unittest.skipIf(win32_edition() in ('NanoServer', 'WindowsCoreHeadless', 'IoTEdgeOS'),
+ "MIME types registry keys unavailable")
def test_registry_parsing(self):
# the original, minimum contents of the MIME database in the
# Windows registry is undocumented AFAIK.
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index bbadb81..a2021b1 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -28,6 +28,7 @@ import unittest
import uuid
import warnings
from test import support
+from platform import win32_is_iot
try:
import resource
@@ -2439,7 +2440,7 @@ class DeviceEncodingTests(unittest.TestCase):
# Return None when an fd doesn't actually exist.
self.assertIsNone(os.device_encoding(123456))
- @unittest.skipUnless(os.isatty(0) and (sys.platform.startswith('win') or
+ @unittest.skipUnless(os.isatty(0) and not win32_is_iot() and (sys.platform.startswith('win') or
(hasattr(locale, 'nl_langinfo') and hasattr(locale, 'CODESET'))),
'test requires a tty and either Windows or nl_langinfo(CODESET)')
def test_device_encoding(self):
diff --git a/Lib/test/test_startfile.py b/Lib/test/test_startfile.py
index f59252e..1a26a80 100644
--- a/Lib/test/test_startfile.py
+++ b/Lib/test/test_startfile.py
@@ -10,6 +10,7 @@
import unittest
from test import support
import os
+import platform
import sys
from os import path
@@ -20,6 +21,7 @@ class TestCase(unittest.TestCase):
def test_nonexisting(self):
self.assertRaises(OSError, startfile, "nonexisting.vbs")
+ @unittest.skipIf(platform.win32_is_iot(), "starting files is not supported on Windows IoT Core or nanoserver")
def test_empty(self):
# We need to make sure the child process starts in a directory
# we're not about to delete. If we're running under -j, that
diff --git a/Lib/test/test_sundry.py b/Lib/test/test_sundry.py
index 6e36a61..2accad1 100644
--- a/Lib/test/test_sundry.py
+++ b/Lib/test/test_sundry.py
@@ -1,5 +1,6 @@
"""Do a minimal test of all the modules that aren't otherwise tested."""
import importlib
+import platform
import sys
from test import support
import unittest
@@ -25,7 +26,7 @@ class TestUntestedModules(unittest.TestCase):
import distutils.unixccompiler
import distutils.command.bdist_dumb
- if sys.platform.startswith('win'):
+ if sys.platform.startswith('win') and not platform.win32_is_iot():
import distutils.command.bdist_msi
import distutils.command.bdist
import distutils.command.bdist_rpm
diff --git a/Lib/test/test_winreg.py b/Lib/test/test_winreg.py
index 11d054e..dc2b46e 100644
--- a/Lib/test/test_winreg.py
+++ b/Lib/test/test_winreg.py
@@ -5,7 +5,7 @@ import os, sys, errno
import unittest
from test import support
import threading
-from platform import machine
+from platform import machine, win32_edition
# Do this first so test will be skipped if module doesn't exist
support.import_module('winreg', required_on=['win'])
@@ -399,6 +399,7 @@ class Win64WinregTests(BaseWinregTests):
DeleteKeyEx(key=HKEY_CURRENT_USER, sub_key=test_key_name,
access=KEY_ALL_ACCESS, reserved=0)
+ @unittest.skipIf(win32_edition() in ('WindowsCoreHeadless', 'IoTEdgeOS'), "APIs not available on WindowsCoreHeadless")
def test_reflection_functions(self):
# Test that we can call the query, enable, and disable functions
# on a key which isn't on the reflection list with no consequences.