mirror of https://github.com/python/cpython
Patch derived from Trent's 101162: a Python/C API testing framework.
STILL NEEDS UNIX BUILD CHANGES.
This commit is contained in:
parent
6270031f4e
commit
9ea17ac595
|
@ -0,0 +1 @@
|
|||
test_capi
|
|
@ -0,0 +1,16 @@
|
|||
# Run the _test module tests (tests for the Python/C API): by defn, these
|
||||
# are all functions _test exports whose name begins with 'test_'.
|
||||
|
||||
import sys
|
||||
import test_support
|
||||
import _test
|
||||
|
||||
for name in dir(_test):
|
||||
if name.startswith('test_'):
|
||||
test = getattr(_test, name)
|
||||
if test_support.verbose:
|
||||
print "internal", name
|
||||
try:
|
||||
test()
|
||||
except _test.error:
|
||||
raise test_support.TestFailed, sys.exc_info()[1]
|
13
Misc/NEWS
13
Misc/NEWS
|
@ -60,7 +60,7 @@ Core language, builtins, and interpreter
|
|||
|
||||
- A 'continue' statement can now appear in a try block within the body
|
||||
of a loop. It is still not possible to use continue in a finally
|
||||
clause.
|
||||
clause.
|
||||
|
||||
Standard library
|
||||
|
||||
|
@ -94,12 +94,21 @@ Standard library
|
|||
- The socket module now supports raw packets on Linux. The socket
|
||||
family is AF_PACKET.
|
||||
|
||||
- test_capi.py is a start at running tests of the Python C API. The tests
|
||||
are implemented by the new Modules/_testmodule.c.
|
||||
|
||||
Windows changes
|
||||
|
||||
- Build procedure: the zlib project is built in a different way that
|
||||
ensures the zlib header files used can no longer get out of synch with
|
||||
the zlib binary used. See PCbuild\readme.txt for details.
|
||||
the zlib binary used. See PCbuild\readme.txt for details. Your old
|
||||
zlib-related directories can be deleted; you'll need to download fresh
|
||||
source for zlib and unpack it into a new directory.
|
||||
|
||||
- Build: New subproject _test for the benefit of test_capi.py (see above).
|
||||
|
||||
- Build: subproject ucnhash is gone, since the code was folded into the
|
||||
unicodedata subproject.
|
||||
|
||||
What's New in Python 2.1 alpha 1?
|
||||
=================================
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* C Extension module to test Python interpreter C APIs.
|
||||
*
|
||||
* The 'test_*' functions exported by this module are run as part of the
|
||||
* standard Python regression test, via Lib/test/test_capi.py.
|
||||
*/
|
||||
|
||||
#include "Python.h"
|
||||
|
||||
static PyObject *TestError; /* set to exception object in init */
|
||||
|
||||
/* Test #defines from config.h (particularly the SIZEOF_* defines).
|
||||
|
||||
The ones derived from autoconf on the UNIX-like OSes can be relied
|
||||
upon (in the absence of sloppy cross-compiling), but the Windows
|
||||
platforms have these hardcoded. Better safe than sorry.
|
||||
*/
|
||||
static PyObject*
|
||||
sizeof_error(const char* fatname, const char* typename,
|
||||
int expected, int got)
|
||||
{
|
||||
char buf[1024];
|
||||
sprintf(buf, "%s #define == %d but sizeof(%s) == %d",
|
||||
fatname, expected, typename, got);
|
||||
PyErr_SetString(TestError, buf);
|
||||
return (PyObject*)NULL;
|
||||
}
|
||||
|
||||
static PyObject*
|
||||
test_config(PyObject *self, PyObject *args)
|
||||
{
|
||||
if (!PyArg_ParseTuple(args, ":test_config"))
|
||||
return NULL;
|
||||
|
||||
#define CHECK_SIZEOF(FATNAME, TYPE) \
|
||||
if (FATNAME != sizeof(TYPE)) \
|
||||
return sizeof_error(#FATNAME, #TYPE, FATNAME, sizeof(TYPE))
|
||||
|
||||
CHECK_SIZEOF(SIZEOF_INT, int);
|
||||
CHECK_SIZEOF(SIZEOF_LONG, long);
|
||||
CHECK_SIZEOF(SIZEOF_VOID_P, void*);
|
||||
CHECK_SIZEOF(SIZEOF_TIME_T, time_t);
|
||||
#ifdef HAVE_LONG_LONG
|
||||
CHECK_SIZEOF(SIZEOF_LONG_LONG, LONG_LONG);
|
||||
#endif
|
||||
|
||||
#undef CHECK_SIZEOF
|
||||
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
|
||||
static PyMethodDef TestMethods[] = {
|
||||
{"test_config", test_config, METH_VARARGS},
|
||||
{NULL, NULL} /* sentinel */
|
||||
};
|
||||
|
||||
DL_EXPORT(void)
|
||||
init_test(void)
|
||||
{
|
||||
PyObject *m, *d;
|
||||
|
||||
m = Py_InitModule("_test", TestMethods);
|
||||
|
||||
TestError = PyErr_NewException("_test.error", NULL, NULL);
|
||||
d = PyModule_GetDict(m);
|
||||
PyDict_SetItemString(d, "error", TestError);
|
||||
}
|
|
@ -0,0 +1,99 @@
|
|||
# Microsoft Developer Studio Project File - Name="_test" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
|
||||
|
||||
CFG=_test - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "_test.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "_test.mak" CFG="_test - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "_test - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "_test - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName "_test"
|
||||
# PROP Scc_LocalPath ".."
|
||||
CPP=cl.exe
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "_test - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "."
|
||||
# PROP Intermediate_Dir "x86-temp-release\_test"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
F90=df.exe
|
||||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\Include" /I "..\PC" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /c
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0xc09 /d "NDEBUG"
|
||||
# ADD RSC /l 0xc09 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1e1F0000" /dll /machine:I386 /out:"./_test.pyd" /export:init_test
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ELSEIF "$(CFG)" == "_test - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "."
|
||||
# PROP Intermediate_Dir "x86-temp-debug\_test"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
F90=df.exe
|
||||
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\Include" /I "..\PC" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MMAP_EXPORTS" /YX /FD /GZ /c
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0xc09 /d "_DEBUG"
|
||||
# ADD RSC /l 0xc09 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x1e1F0000" /dll /debug /machine:I386 /out:"./_test_d.pyd" /pdbtype:sept /export:init_test
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "_test - Win32 Release"
|
||||
# Name "_test - Win32 Debug"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\Modules\_testmodule.c
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
|
@ -33,6 +33,18 @@ Package=<4>
|
|||
|
||||
###############################################################################
|
||||
|
||||
Project: "_test"=.\_test.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "_tkinter"=.\_tkinter.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
|
|
|
@ -55,6 +55,9 @@ winreg
|
|||
Windows registry API
|
||||
winsound
|
||||
play sounds (typically .wav files) under Windows
|
||||
_test
|
||||
tests of the Python C API, run via Lib/test/test_capi.py, and
|
||||
implemented by module Modules/_testmodule.c
|
||||
|
||||
The following subprojects will generally NOT build out of the box. They
|
||||
wrap code Python doesn't control, and you'll need to download the base
|
||||
|
|
Loading…
Reference in New Issue