Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
3bead098
Kaydet (Commit)
3bead098
authored
Ock 27, 1992
tarafından
Guido van Rossum
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Initial revision
üst
19a86e72
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
913 additions
and
0 deletions
+913
-0
pdb.doc
Lib/pdb.doc
+157
-0
test_b1.py
Lib/test/test_b1.py
+127
-0
test_b2.py
Lib/test/test_b2.py
+130
-0
test_builtin.py
Lib/test/test_builtin.py
+13
-0
test_exceptions.py
Lib/test/test_exceptions.py
+91
-0
test_grammar.py
Lib/test/test_grammar.py
+344
-0
test_opcodes.py
Lib/test/test_opcodes.py
+24
-0
test_operations.py
Lib/test/test_operations.py
+5
-0
test_support.py
Lib/test/test_support.py
+22
-0
No files found.
Lib/pdb.doc
0 → 100644
Dosyayı görüntüle @
3bead098
The Python Debugger
===================
To use the debugger in its simplest form:
>>> import pdb
>>> pdb.run('<a statement>')
The debugger's prompt is '(Pdb) '. This will stop in the first
function call in <a statement>.
The commands recognized by the debugger are listed in the next
section. Most can be abbreviated as indicated; e.g., h(elp) means
that 'help' can be typed as 'h' or 'help' (but not as 'he' or 'hel',
nor as 'H' or 'Help' or 'HELP'). Optional arguments are enclosed in
square brackets.
A blank line repeats the previous command literally. (Except for
'list', where it lists the next 11 lines.)
Commands that the debugger doesn't recognize are assumed to be Python
statements and are executed in the context of the program being
debugged. Python statements can also be prefixed with an exclamation
point ('!'). This is a powerful way to inspect the program being
debugged; it is even possible to change variables. When an exception
occurs in such a statement, the exception name is printed but the
debugger's state is not changed.
The debugger is not directly programmable; but it is implemented as a
class from which you can derive your own debugger class, so you can
make as fancy as you like.
Debugger commands
=================
h(elp)
Without argument, print the list of available commands.
With a command name as argument, print help about that command
(this is currently not implemented).
w(here)
Print a stack trace, with the most recent frame at the bottom.
An arrow indicates the "current frame", which determines the
context of most commands.
d(own)
Move the current frame one level down in the stack trace
(to an older frame).
u(p)
Move the current frame one level up in the stack trace
(to a newer frame).
b(reak) [lineno]
With a line number argument, set a break there in the current file.
Without argument, list all breaks.
cl(ear) [lineno]
With a line number argument, clear that break in the current file.
Without argument, clear all breaks (but first ask confirmation).
s(tep)
Execute the current line, stop at the first possible occasion
(either in a function that is called or in the current function).
n(ext)
Continue execution until the next line in the current function
is reached or it returns.
r(eturn)
Continue execution until the current function returns.
c(ont(inue))
Continue execution, only stop when a breakpoint is encountered.
l(ist) [first [,last]]
List source code for the current file.
Without arguments, list 11 lines around the current line
or continue the previous listing.
With one argument, list 11 lines starting at that line.
With two arguments, list the given range;
if the second argument is less than the first, it is a count.
a(rgs)
Print the argument list of the current function.
p expression
Print the value of the expression.
(!) statement
Execute the (one-line) statement in the context of
the current stack frame.
The exclamation point can be omitted unless the first word
of the statement resembles a debugger command.
To assign to a global variable you must always prefix the
command with a 'global' command, e.g.:
(Pdb) global list_options; list_options = ['-l']
(Pdb)
q(uit)
Quit from the debugger.
The program being executed is aborted.
How it works
============
Some changes were made to the interpreter:
- if sys.trace is defined (by the user) and not None, it should be a function
- sys.trace is called the global trace function
- there can also a local trace function (see later)
Trace functions have three arguments: (frame, event, arg)
- frame is the current stack frame
- event is a string: 'call', 'line', 'return' or 'exception'
- arg is dependent on the event type
A trace function should return a new trace function or None.
Class methods are accepted (and most useful!) as trace methods.
The events have the following meaning:
'call': A function is called (or some other code block entered).
The global trace function is called;
arg is the argument list to the function;
the return value specifies the local trace function.
'line': The interpreter is about to execute a new line of code
(sometimes multiple line events on one line exist).
The local trace function is called; arg in None;
the return value specifies the new local trace function.
'return': A function (or other code block) is about to return.
The local trace function is called;
arg is the value that will be returned.
The trace function's return value is ignored.
'exception': An exception has occurred.
The local trace function is called;
arg is a triple (exception, value, traceback);
the return value specifies the new local trace function
Note that as an exception is propagated down the chain of callers, an
'exception' event is generated at each level.
Stack frame objects have the following read-only attributes:
f_code: the code object being executed
f_lineno: the current line number (-1 for 'call' events)
f_back: the stack frame of the caller, or None
f_locals: dictionary containing local name bindings
f_globals: dictionary containing global name bindings
Code objects have the following read-only attributes:
co_code: the code string
co_names: the list of names used by the code
co_consts: the list of (literal) constants used by the code
co_filename: the filename from which the code was compiled
Lib/test/test_b1.py
0 → 100644
Dosyayı görüntüle @
3bead098
# Python test set -- part 4a, built-in functions a-m
from
test_support
import
*
print
'abs'
if
abs
(
0
)
<>
0
:
raise
TestFailed
,
'abs(0)'
if
abs
(
1234
)
<>
1234
:
raise
TestFailed
,
'abs(1234)'
if
abs
(
-
1234
)
<>
1234
:
raise
TestFailed
,
'abs(-1234)'
#
if
abs
(
0.0
)
<>
0.0
:
raise
TestFailed
,
'abs(0.0)'
if
abs
(
3.14
)
<>
3.14
:
raise
TestFailed
,
'abs(3.14)'
if
abs
(
-
3.14
)
<>
3.14
:
raise
TestFailed
,
'abs(-3.14)'
#
if
abs
(
0L
)
<>
0L
:
raise
TestFailed
,
'abs(0L)'
if
abs
(
1234L
)
<>
1234L
:
raise
TestFailed
,
'abs(1234L)'
if
abs
(
-
1234L
)
<>
1234L
:
raise
TestFailed
,
'abs(-1234L)'
print
'apply'
def
f0
(
*
args
):
if
args
!=
():
raise
TestFailed
,
'f0 called with '
+
`args`
def
f1
(
a1
):
if
a1
!=
1
:
raise
TestFailed
,
'f1 called with '
+
`a1`
def
f2
(
a1
,
a2
):
if
a1
!=
1
or
a2
!=
2
:
raise
TestFailed
,
'f2 called with '
+
`a1, a2`
def
f3
(
a1
,
a2
,
a3
):
if
a1
!=
1
or
a2
!=
2
or
a3
!=
3
:
raise
TestFailed
,
'f2 called with '
+
`a1, a2, a3`
apply
(
f0
,
())
apply
(
f1
,
(
1
,))
apply
(
f2
,
(
1
,
2
))
apply
(
f3
,
(
1
,
2
,
3
))
print
'chr'
if
chr
(
32
)
<>
' '
:
raise
TestFailed
,
'chr(32)'
if
chr
(
65
)
<>
'A'
:
raise
TestFailed
,
'chr(65)'
if
chr
(
97
)
<>
'a'
:
raise
TestFailed
,
'chr(97)'
print
'dir'
x
=
1
if
'x'
not
in
dir
():
raise
TestFailed
,
'dir()'
import
sys
if
'modules'
not
in
dir
(
sys
):
raise
TestFailed
,
'dir(sys)'
print
'divmod'
if
divmod
(
12
,
7
)
<>
(
1
,
5
):
raise
TestFailed
,
'divmod(12, 7)'
if
divmod
(
-
12
,
7
)
<>
(
-
2
,
2
):
raise
TestFailed
,
'divmod(-12, 7)'
if
divmod
(
12
,
-
7
)
<>
(
-
2
,
-
2
):
raise
TestFailed
,
'divmod(12, -7)'
if
divmod
(
-
12
,
-
7
)
<>
(
1
,
-
5
):
raise
TestFailed
,
'divmod(-12, -7)'
#
if
divmod
(
12L
,
7L
)
<>
(
1L
,
5L
):
raise
TestFailed
,
'divmod(12L, 7L)'
if
divmod
(
-
12L
,
7L
)
<>
(
-
2L
,
2L
):
raise
TestFailed
,
'divmod(-12L, 7L)'
if
divmod
(
12L
,
-
7L
)
<>
(
-
2L
,
-
2L
):
raise
TestFailed
,
'divmod(12L, -7L)'
if
divmod
(
-
12L
,
-
7L
)
<>
(
1L
,
-
5L
):
raise
TestFailed
,
'divmod(-12L, -7L)'
#
if
divmod
(
12
,
7L
)
<>
(
1
,
5L
):
raise
TestFailed
,
'divmod(12, 7L)'
if
divmod
(
-
12
,
7L
)
<>
(
-
2
,
2L
):
raise
TestFailed
,
'divmod(-12, 7L)'
if
divmod
(
12L
,
-
7
)
<>
(
-
2L
,
-
2
):
raise
TestFailed
,
'divmod(12L, -7)'
if
divmod
(
-
12L
,
-
7
)
<>
(
1L
,
-
5
):
raise
TestFailed
,
'divmod(-12L, -7)'
#
if
divmod
(
3.25
,
1.0
)
<>
(
3.0
,
0.25
):
raise
TestFailed
,
'divmod(3.25, 1.0)'
if
divmod
(
-
3.25
,
1.0
)
<>
(
-
4.0
,
0.75
):
raise
TestFailed
,
'divmod(-3.25, 1.0)'
if
divmod
(
3.25
,
-
1.0
)
<>
(
-
4.0
,
-
0.75
):
raise
TestFailed
,
'divmod(3.25, -1.0)'
if
divmod
(
-
3.25
,
-
1.0
)
<>
(
3.0
,
-
0.25
):
raise
TestFailed
,
'divmod(-3.25, -1.0)'
print
'eval'
if
eval
(
'1+1'
)
<>
2
:
raise
TestFailed
,
'eval(
\'
1+1
\'
)'
print
'exec'
z
=
0
exec
(
'z=1+1
\n
'
)
if
z
<>
2
:
raise
TestFailed
,
'exec(
\'
z=1+1
\'\\
n)'
print
'float'
if
float
(
3.14
)
<>
3.14
:
raise
TestFailed
,
'float(3.14)'
if
float
(
314
)
<>
314.0
:
raise
TestFailed
,
'float(314)'
if
float
(
314L
)
<>
314.0
:
raise
TestFailed
,
'float(314L)'
print
'getattr'
import
sys
if
getattr
(
sys
,
'stdout'
)
is
not
sys
.
stdout
:
raise
TestFailed
,
'getattr'
print
'hex'
if
hex
(
16
)
!=
'0x10'
:
raise
TestFailed
,
'hex(16)'
if
hex
(
16L
)
!=
'0x10L'
:
raise
TestFailed
,
'hex(16L)'
if
hex
(
-
16
)
!=
'-0x10'
:
raise
TestFailed
,
'hex(-16)'
if
hex
(
-
16L
)
!=
'-0x10L'
:
raise
TestFailed
,
'hex(-16L)'
# Test input() later, together with raw_input
print
'int'
if
int
(
314
)
<>
314
:
raise
TestFailed
,
'int(314)'
if
int
(
3.14
)
<>
3
:
raise
TestFailed
,
'int(3.14)'
if
int
(
314L
)
<>
314
:
raise
TestFailed
,
'int(314L)'
print
'len'
if
len
(
'123'
)
<>
3
:
raise
TestFailed
,
'len(
\'
123
\'
)'
if
len
(())
<>
0
:
raise
TestFailed
,
'len(())'
if
len
((
1
,
2
,
3
,
4
))
<>
4
:
raise
TestFailed
,
'len((1, 2, 3, 4))'
if
len
([
1
,
2
,
3
,
4
])
<>
4
:
raise
TestFailed
,
'len([1, 2, 3, 4])'
if
len
({})
<>
0
:
raise
TestFailed
,
'len({})'
if
len
({
'a'
:
1
,
'b'
:
2
})
<>
2
:
raise
TestFailed
,
'len({
\'
a
\'
:1,
\'
b
\'
: 2})'
print
'long'
if
long
(
314
)
<>
314L
:
raise
TestFailed
,
'long(314)'
if
long
(
3.14
)
<>
3L
:
raise
TestFailed
,
'long(3.14)'
if
long
(
314L
)
<>
314L
:
raise
TestFailed
,
'long(314L)'
print
'max'
if
max
(
'123123'
)
<>
'3'
:
raise
TestFailed
,
'max(
\'
123123
\'
)'
if
max
(
1
,
2
,
3
)
<>
3
:
raise
TestFailed
,
'max(1, 2, 3)'
if
max
((
1
,
2
,
3
,
1
,
2
,
3
))
<>
3
:
raise
TestFailed
,
'max((1, 2, 3, 1, 2, 3))'
if
max
([
1
,
2
,
3
,
1
,
2
,
3
])
<>
3
:
raise
TestFailed
,
'max([1, 2, 3, 1, 2, 3])'
#
if
max
(
1
,
2L
,
3.0
)
<>
3.0
:
raise
TestFailed
,
'max(1, 2L, 3.0)'
if
max
(
1L
,
2.0
,
3
)
<>
3
:
raise
TestFailed
,
'max(1L, 2.0, 3)'
if
max
(
1.0
,
2
,
3L
)
<>
3L
:
raise
TestFailed
,
'max(1.0, 2, 3L)'
print
'min'
if
min
(
'123123'
)
<>
'1'
:
raise
TestFailed
,
'min(
\'
123123
\'
)'
if
min
(
1
,
2
,
3
)
<>
1
:
raise
TestFailed
,
'min(1, 2, 3)'
if
min
((
1
,
2
,
3
,
1
,
2
,
3
))
<>
1
:
raise
TestFailed
,
'min((1, 2, 3, 1, 2, 3))'
if
min
([
1
,
2
,
3
,
1
,
2
,
3
])
<>
1
:
raise
TestFailed
,
'min([1, 2, 3, 1, 2, 3])'
#
if
min
(
1
,
2L
,
3.0
)
<>
1
:
raise
TestFailed
,
'min(1, 2L, 3.0)'
if
min
(
1L
,
2.0
,
3
)
<>
1L
:
raise
TestFailed
,
'min(1L, 2.0, 3)'
if
min
(
1.0
,
2
,
3L
)
<>
1.0
:
raise
TestFailed
,
'min(1.0, 2, 3L)'
Lib/test/test_b2.py
0 → 100644
Dosyayı görüntüle @
3bead098
# Python test set -- part 4b, built-in functions n-z
from
test_support
import
*
print
'oct'
if
oct
(
100
)
!=
'0144'
:
raise
TestFailed
,
'oct(100)'
if
oct
(
100L
)
!=
'0144L'
:
raise
TestFailed
,
'oct(100L)'
if
oct
(
-
100
)
!=
'-0144'
:
raise
TestFailed
,
'oct(-100)'
if
oct
(
-
100L
)
!=
'-0144L'
:
raise
TestFailed
,
'oct(-100L)'
print
'open'
# NB the first 4 lines are also used to test input and raw_input, below
fp
=
open
(
TESTFN
,
'w'
)
try
:
fp
.
write
(
'1+1
\n
'
)
fp
.
write
(
'1+1
\n
'
)
fp
.
write
(
'The quick brown fox jumps over the lazy dog'
)
fp
.
write
(
'.
\n
'
)
fp
.
write
(
'Dear John
\n
'
)
fp
.
write
(
'XXX'
*
100
)
fp
.
write
(
'YYY'
*
100
)
finally
:
fp
.
close
()
#
fp
=
open
(
TESTFN
,
'r'
)
try
:
if
fp
.
readline
(
4
)
<>
'1+1
\n
'
:
raise
TestFailed
,
'readline(4) # exact'
if
fp
.
readline
(
4
)
<>
'1+1
\n
'
:
raise
TestFailed
,
'readline(4) # exact'
if
fp
.
readline
()
<>
'The quick brown fox jumps over the lazy dog.
\n
'
:
raise
TestFailed
,
'readline() # default'
if
fp
.
readline
(
4
)
<>
'Dear'
:
raise
TestFailed
,
'readline(4) # short'
if
fp
.
readline
(
100
)
<>
' John
\n
'
:
raise
TestFailed
,
'readline(100)'
if
fp
.
read
(
300
)
<>
'XXX'
*
100
:
raise
TestFailed
,
'read(300)'
if
fp
.
read
(
1000
)
<>
'YYY'
*
100
:
raise
TestFailed
,
'read(1000) # truncate'
finally
:
fp
.
close
()
print
'ord'
if
ord
(
' '
)
<>
32
:
raise
TestFailed
,
'ord(
\'
\'
)'
if
ord
(
'A'
)
<>
65
:
raise
TestFailed
,
'ord(
\'
A
\'
)'
if
ord
(
'a'
)
<>
97
:
raise
TestFailed
,
'ord(
\'
a
\'
)'
print
'pow'
if
pow
(
0
,
0
)
<>
1
:
raise
TestFailed
,
'pow(0,0)'
if
pow
(
0
,
1
)
<>
0
:
raise
TestFailed
,
'pow(0,1)'
if
pow
(
1
,
0
)
<>
1
:
raise
TestFailed
,
'pow(1,0)'
if
pow
(
1
,
1
)
<>
1
:
raise
TestFailed
,
'pow(1,1)'
#
if
pow
(
2
,
0
)
<>
1
:
raise
TestFailed
,
'pow(2,0)'
if
pow
(
2
,
10
)
<>
1024
:
raise
TestFailed
,
'pow(2,10)'
if
pow
(
2
,
20
)
<>
1024
*
1024
:
raise
TestFailed
,
'pow(2,20)'
if
pow
(
2
,
30
)
<>
1024
*
1024
*
1024
:
raise
TestFailed
,
'pow(2,30)'
#
if
pow
(
-
2
,
0
)
<>
1
:
raise
TestFailed
,
'pow(-2,0)'
if
pow
(
-
2
,
1
)
<>
-
2
:
raise
TestFailed
,
'pow(-2,1)'
if
pow
(
-
2
,
2
)
<>
4
:
raise
TestFailed
,
'pow(-2,2)'
if
pow
(
-
2
,
3
)
<>
-
8
:
raise
TestFailed
,
'pow(-2,3)'
#
if
pow
(
0L
,
0
)
<>
1
:
raise
TestFailed
,
'pow(0L,0)'
if
pow
(
0L
,
1
)
<>
0
:
raise
TestFailed
,
'pow(0L,1)'
if
pow
(
1L
,
0
)
<>
1
:
raise
TestFailed
,
'pow(1L,0)'
if
pow
(
1L
,
1
)
<>
1
:
raise
TestFailed
,
'pow(1L,1)'
#
if
pow
(
2L
,
0
)
<>
1
:
raise
TestFailed
,
'pow(2L,0)'
if
pow
(
2L
,
10
)
<>
1024
:
raise
TestFailed
,
'pow(2L,10)'
if
pow
(
2L
,
20
)
<>
1024
*
1024
:
raise
TestFailed
,
'pow(2L,20)'
if
pow
(
2L
,
30
)
<>
1024
*
1024
*
1024
:
raise
TestFailed
,
'pow(2L,30)'
#
if
pow
(
-
2L
,
0
)
<>
1
:
raise
TestFailed
,
'pow(-2L,0)'
if
pow
(
-
2L
,
1
)
<>
-
2
:
raise
TestFailed
,
'pow(-2L,1)'
if
pow
(
-
2L
,
2
)
<>
4
:
raise
TestFailed
,
'pow(-2L,2)'
if
pow
(
-
2L
,
3
)
<>
-
8
:
raise
TestFailed
,
'pow(-2L,3)'
#
if
pow
(
0.
,
0
)
<>
1.
:
raise
TestFailed
,
'pow(0.,0)'
if
pow
(
0.
,
1
)
<>
0.
:
raise
TestFailed
,
'pow(0.,1)'
if
pow
(
1.
,
0
)
<>
1.
:
raise
TestFailed
,
'pow(1.,0)'
if
pow
(
1.
,
1
)
<>
1.
:
raise
TestFailed
,
'pow(1.,1)'
#
if
pow
(
2.
,
0
)
<>
1.
:
raise
TestFailed
,
'pow(2.,0)'
if
pow
(
2.
,
10
)
<>
1024.
:
raise
TestFailed
,
'pow(2.,10)'
if
pow
(
2.
,
20
)
<>
1024.
*
1024.
:
raise
TestFailed
,
'pow(2.,20)'
if
pow
(
2.
,
30
)
<>
1024.
*
1024.
*
1024.
:
raise
TestFailed
,
'pow(2.,30)'
#
# XXX These don't work -- negative float to the float power...
#if pow(-2.,0) <> 1.: raise TestFailed, 'pow(-2.,0)'
#if pow(-2.,1) <> -2.: raise TestFailed, 'pow(-2.,1)'
#if pow(-2.,2) <> 4.: raise TestFailed, 'pow(-2.,2)'
#if pow(-2.,3) <> -8.: raise TestFailed, 'pow(-2.,3)'
print
'range'
if
range
(
3
)
<>
[
0
,
1
,
2
]:
raise
TestFailed
,
'range(3)'
if
range
(
1
,
5
)
<>
[
1
,
2
,
3
,
4
]:
raise
TestFailed
,
'range(1, 5)'
if
range
(
0
)
<>
[]:
raise
TestFailed
,
'range(0)'
if
range
(
-
3
)
<>
[]:
raise
TestFailed
,
'range(-3)'
if
range
(
1
,
10
,
3
)
<>
[
1
,
4
,
7
]:
raise
TestFailed
,
'range(1, 10, 3)'
if
range
(
5
,
-
5
,
-
3
)
<>
[
5
,
2
,
-
1
,
-
4
]:
raise
TestFailed
,
'range(5, -5, -3)'
print
'input and raw_input'
import
sys
fp
=
open
(
TESTFN
,
'r'
)
savestdin
=
sys
.
stdin
try
:
sys
.
stdin
=
fp
if
input
()
<>
2
:
raise
TestFailed
,
'input()'
if
input
(
'testing
\n
'
)
<>
2
:
raise
TestFailed
,
'input()'
if
raw_input
()
<>
'The quick brown fox jumps over the lazy dog.'
:
raise
TestFailed
,
'raw_input()'
if
raw_input
(
'testing
\n
'
)
<>
'Dear John'
:
raise
TestFailed
,
'raw_input(
\'
testing
\\
n
\'
)'
finally
:
sys
.
stdin
=
savestdin
fp
.
close
()
print
'reload'
import
string
reload
(
string
)
print
'setattr'
import
sys
setattr
(
sys
,
'foobar'
,
1
)
if
sys
.
foobar
!=
1
:
raise
TestFailed
,
'setattr(sys,
\'
foobar
\'
, 1)'
print
'type'
if
type
(
''
)
<>
type
(
'123'
)
or
type
(
''
)
==
type
(()):
raise
TestFailed
,
'type()'
# Epilogue -- unlink the temp file
unlink
(
TESTFN
)
Lib/test/test_builtin.py
0 → 100644
Dosyayı görüntüle @
3bead098
# Python test set -- part 4, built-in functions
from
test_support
import
*
print
'4. Built-in functions'
print
'test_b1'
unload
(
'test_b1'
)
import
test_b1
print
'test_b2'
unload
(
'test_b2'
)
import
test_b2
Lib/test/test_exceptions.py
0 → 100644
Dosyayı görüntüle @
3bead098
# Python test set -- part 5, built-in exceptions
from
test_support
import
*
print
'5. Built-in exceptions'
# XXX This is not really enough, each *operation* should be tested!
def
r
(
name
):
print
name
r
(
AttributeError
)
import
sys
try
:
x
=
sys
.
undefined_attribute
except
AttributeError
:
pass
r
(
EOFError
)
import
sys
fp
=
open
(
TESTFN
,
'w'
)
fp
.
close
()
fp
=
open
(
TESTFN
,
'r'
)
savestdin
=
sys
.
stdin
try
:
sys
.
stdin
=
fp
x
=
raw_input
()
except
EOFError
:
pass
finally
:
sys
.
stdin
=
savestdin
fp
.
close
()
r
(
IOError
)
try
:
open
(
'this file does not exist'
,
'r'
)
except
IOError
:
pass
r
(
ImportError
)
try
:
import
undefined_module
except
ImportError
:
pass
r
(
IndexError
)
x
=
[]
try
:
a
=
x
[
10
]
except
IndexError
:
pass
r
(
KeyError
)
x
=
{}
try
:
a
=
x
[
'key'
]
except
KeyError
:
pass
r
(
KeyboardInterrupt
)
print
'(not testable in a script)'
r
(
MemoryError
)
print
'(not safe to test)'
r
(
NameError
)
try
:
x
=
undefined_variable
except
NameError
:
pass
r
(
OverflowError
)
x
=
1
try
:
while
1
:
x
=
x
+
x
except
OverflowError
:
pass
r
(
RuntimeError
)
print
'(not used any more?)'
r
(
SyntaxError
)
try
:
exec
(
'/
\n
'
)
except
SyntaxError
:
pass
r
(
SystemError
)
print
'(hard to reproduce)'
r
(
SystemExit
)
import
sys
try
:
sys
.
exit
(
0
)
except
SystemExit
:
pass
r
(
TypeError
)
try
:
[]
+
()
except
TypeError
:
pass
r
(
ValueError
)
try
:
x
=
chr
(
10000
)
except
ValueError
:
pass
r
(
ZeroDivisionError
)
try
:
x
=
1
/
0
except
ZeroDivisionError
:
pass
unlink
(
TESTFN
)
Lib/test/test_grammar.py
0 → 100644
Dosyayı görüntüle @
3bead098
# Python test set -- part 1, grammar.
# This just tests whether the parser accepts them all.
from
test_support
import
*
print
'1. Parser'
print
'1.1 Tokens'
print
'1.1.1 Backslashes'
# Backslash means line continuation:
x
=
1
\
+
1
if
x
<>
2
:
raise
TestFailed
,
'backslash for line continuation'
# Backslash does not means continuation in comments :\
x
=
0
if
x
<>
0
:
raise
TestFailed
,
'backslash ending comment'
print
'1.1.2 Numeric literals'
print
'1.1.2.1 Plain integers'
if
0xff
<>
255
:
raise
TestFailed
,
'hex int'
if
0377
<>
255
:
raise
TestFailed
,
'octal int'
if
2147483647
!=
017777777777
:
raise
TestFailed
,
'max positive int'
if
-
2147483647
-
1
!=
020000000000
:
raise
TestFailed
,
'max negative int'
# XXX -2147483648
if
037777777777
!=
-
1
:
raise
TestFailed
,
'oct -1'
if
0xffffffff
!=
-
1
:
raise
TestFailed
,
'hex -1'
for
s
in
'2147483648'
,
'040000000000'
,
'0x100000000'
:
try
:
x
=
eval
(
s
)
except
OverflowError
:
continue
raise
TestFailed
,
'No OverflowError on huge integer literal '
+
`s`
print
'1.1.2.2 Long integers'
x
=
0L
x
=
0
l
x
=
0xffffffffffffffff
L
x
=
0xffffffffffffffff
l
x
=
077777777777777777
L
x
=
077777777777777777
l
x
=
123456789012345678901234567890L
x
=
123456789012345678901234567890
l
print
'1.1.2.3 Floating point'
x
=
3.14
x
=
314.
x
=
0.314
# XXX x = 000.314
x
=
.
314
x
=
3e14
x
=
3E14
x
=
3e-14
x
=
3e+14
x
=
3.e14
x
=
.
3e14
x
=
3.1e4
print
'1.2 Grammar'
print
'single_input'
# NEWLINE | simple_stmt | compound_stmt NEWLINE
# XXX can't test in a script -- this rule is only used when interactive
print
'file_input'
# (NEWLINE | stmt)* ENDMARKER
# Being tested as this very moment this very module
print
'expr_input'
# testlist NEWLINE
# XXX Hard to test -- used only in calls to input()
print
'eval_input'
# testlist ENDMARKER
x
=
eval
(
'1, 0 or 1'
)
print
'funcdef'
### 'def' NAME parameters ':' suite
### parameters: '(' [varargslist] ')'
### varargslist: (fpdef ',')* ('+'|'*') NAME | fpdef (',' fpdef)* [',']
### fpdef: NAME | '(' fplist ')'
### fplist: fpdef (',' fpdef)* [',']
def
f1
():
pass
def
f2
(
one_argument
):
pass
def
f3
(
two
,
arguments
):
pass
def
f4
(
two
,
(
compound
,
(
argument
,
list
))):
pass
def
a1
(
one_arg
,):
pass
def
a2
(
two
,
args
,):
pass
def
v0
(
*
rest
):
pass
def
v1
(
a
,
*
rest
):
pass
def
v2
(
a
,
b
,
*
rest
):
pass
def
v3
(
a
,
(
b
,
c
),
*
rest
):
pass
### stmt: simple_stmt | compound_stmt
# Tested below
### simple_stmt: small_stmt (';' small_stmt)* [';']
print
'simple_stmt'
x
=
1
;
pass
;
del
x
### small_stmt: expr_stmt | print_stmt | pass_stmt | del_stmt | flow_stmt | import_stmt
# Tested below
print
'expr_stmt'
# (exprlist '=')* exprlist
1
1
,
2
,
3
x
=
1
x
=
1
,
2
,
3
x
=
y
=
z
=
1
,
2
,
3
x
,
y
,
z
=
1
,
2
,
3
abc
=
a
,
b
,
c
=
x
,
y
,
z
=
xyz
=
1
,
2
,
(
3
,
4
)
# NB these variables are deleted below
print
'print_stmt'
# 'print' (test ',')* [test]
print
1
,
2
,
3
print
1
,
2
,
3
,
print
print
0
or
1
,
0
or
1
,
print
0
or
1
print
'del_stmt'
# 'del' exprlist
del
abc
del
x
,
y
,
(
z
,
xyz
)
print
'pass_stmt'
# 'pass'
pass
print
'flow_stmt'
# break_stmt | continue_stmt | return_stmt | raise_stmt
# Tested below
print
'break_stmt'
# 'break'
while
1
:
break
print
'continue_stmt'
# 'continue'
i
=
1
while
i
:
i
=
0
;
continue
print
'return_stmt'
# 'return' [testlist]
def
g1
():
return
def
g2
():
return
1
g1
()
x
=
g2
()
print
'raise_stmt'
# 'raise' test [',' test]
try
:
raise
RuntimeError
,
'just testing'
except
RuntimeError
:
pass
try
:
raise
KeyboardInterrupt
except
KeyboardInterrupt
:
pass
print
'import_stmt'
# 'import' NAME (',' NAME)* | 'from' NAME 'import' ('*' | NAME (',' NAME)*)
[
1
]
import
sys
[
2
]
import
time
,
math
[
3
]
from
time
import
sleep
[
4
]
from
sys
import
*
[
5
]
from
math
import
sin
,
cos
[
6
]
print
'global_stmt'
# 'global' NAME (',' NAME)*
def
f
():
global
a
global
a
,
b
global
one
,
two
,
three
,
four
,
five
,
six
,
seven
,
eight
,
nine
,
ten
### compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef
# Tested below
print
'if_stmt'
# 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite]
if
1
:
pass
if
1
:
pass
else
:
pass
if
0
:
pass
elif
0
:
pass
if
0
:
pass
elif
0
:
pass
elif
0
:
pass
elif
0
:
pass
else
:
pass
print
'while_stmt'
# 'while' test ':' suite ['else' ':' suite]
while
0
:
pass
while
0
:
pass
else
:
pass
print
'for_stmt'
# 'for' exprlist 'in' exprlist ':' suite ['else' ':' suite]
[
1
]
for
i
in
1
,
2
,
3
:
pass
[
2
]
for
i
,
j
,
k
in
():
pass
else
:
pass
[
3
]
print
'try_stmt'
# 'try' ':' suite (except_clause ':' suite)* ['finally' ':' suite]
### except_clause: 'except' [expr [',' expr]]
try
:
pass
try
:
1
/
0
except
ZeroDivisionError
:
pass
try
:
1
/
0
except
EOFError
:
pass
except
TypeError
,
msg
:
pass
except
RuntimeError
,
msg
:
pass
except
:
pass
try
:
pass
finally
:
pass
try
:
1
/
0
except
:
pass
finally
:
pass
print
'suite'
# simple_stmt | NEWLINE INDENT NEWLINE* (stmt NEWLINE*)+ DEDENT
if
1
:
pass
if
1
:
pass
if
1
:
#
#
#
pass
pass
#
pass
#
print
'test'
### and_test ('or' and_test)*
### and_test: not_test ('and' not_test)*
### not_test: 'not' not_test | comparison
if
not
1
:
pass
if
1
and
1
:
pass
if
1
or
1
:
pass
if
not
not
not
1
:
pass
if
not
1
and
1
and
1
:
pass
if
1
and
1
or
1
and
1
and
1
or
not
1
and
1
:
pass
print
'comparison'
### comparison: expr (comp_op expr)*
### comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not'
if
1
:
pass
x
=
(
1
==
1
)
if
1
==
1
:
pass
if
1
!=
1
:
pass
if
1
<>
1
:
pass
if
1
<
1
:
pass
if
1
>
1
:
pass
if
1
<=
1
:
pass
if
1
>=
1
:
pass
if
1
is
1
:
pass
if
1
is
not
1
:
pass
if
1
in
():
pass
if
1
not
in
():
pass
if
1
<
1
>
1
==
1
>=
1
<=
1
<>
1
in
1
not
in
1
is
1
is
not
1
:
pass
print
'binary mask ops'
x
=
1
&
1
x
=
1
^
1
x
=
1
|
1
print
'shift ops'
x
=
1
<<
1
x
=
1
>>
1
x
=
1
<<
1
>>
1
print
'additive ops'
x
=
1
x
=
1
+
1
x
=
1
-
1
-
1
x
=
1
-
1
+
1
-
1
+
1
print
'multiplicative ops'
x
=
1
*
1
x
=
1
/
1
x
=
1
%
1
x
=
1
/
1
*
1
%
1
print
'unary ops'
x
=
+
1
x
=
-
1
x
=
~
1
x
=
~
1
^
1
&
1
|
1
&
1
^
-
1
x
=
-
1
*
1
/
1
+
1
*
1
-
---
1
*
1
print
'selectors'
### trailer: '(' [testlist] ')' | '[' subscript ']' | '.' NAME
### subscript: expr | [expr] ':' [expr]
import
sys
,
time
c
=
sys
.
path
[
0
]
x
=
time
.
time
()
x
=
sys
.
modules
[
'time'
]
.
time
()
a
=
'01234'
c
=
a
[
0
]
c
=
a
[
-
1
]
s
=
a
[
0
:
5
]
s
=
a
[:
5
]
s
=
a
[
0
:]
s
=
a
[:]
s
=
a
[
-
5
:]
s
=
a
[:
-
1
]
s
=
a
[
-
4
:
-
3
]
print
'atoms'
### atom: '(' [testlist] ')' | '[' [testlist] ']' | '{' [dictmaker] '}' | '`' testlist '`' | NAME | NUMBER | STRING
### dictmaker: test ':' test (',' test ':' test)* [',']
x
=
(
1
)
x
=
(
1
or
2
or
3
)
x
=
(
1
or
2
or
3
,
2
,
3
)
x
=
[]
x
=
[
1
]
x
=
[
1
or
2
or
3
]
x
=
[
1
or
2
or
3
,
2
,
3
]
x
=
[]
x
=
{}
x
=
{
'one'
:
1
}
x
=
{
'one'
:
1
,}
x
=
{
'one'
or
'two'
:
1
or
2
}
x
=
{
'one'
:
1
,
'two'
:
2
}
x
=
{
'one'
:
1
,
'two'
:
2
,}
x
=
{
'one'
:
1
,
'two'
:
2
,
'three'
:
3
,
'four'
:
4
,
'five'
:
5
,
'six'
:
6
}
x
=
`x`
x
=
`1 or 2 or 3`
x
=
x
x
=
'x'
x
=
123
### exprlist: expr (',' expr)* [',']
### testlist: test (',' test)* [',']
# These have been exercised enough above
print
'classdef'
# 'class' NAME parameters ['=' baselist] ':' suite
### baselist: atom arguments (',' atom arguments)*
### arguments: '(' [testlist] ')'
class
B
:
pass
class
C1
(
B
):
pass
class
C2
(
B
):
pass
class
D
(
C1
,
C2
,
B
):
pass
class
C
:
def
meth1
(
self
):
pass
def
meth2
(
self
,
arg
):
pass
def
meth3
(
self
,
a1
,
a2
):
pass
Lib/test/test_opcodes.py
0 → 100644
Dosyayı görüntüle @
3bead098
# Python test set -- part 2, opcodes
from
test_support
import
*
print
'2. Opcodes'
print
'XXX Not yet fully implemented'
print
'2.1 try inside for loop'
n
=
0
for
i
in
range
(
10
):
n
=
n
+
i
try
:
1
/
0
except
NameError
:
pass
except
ZeroDivisionError
:
pass
except
TypeError
:
pass
finally
:
pass
try
:
pass
except
:
pass
try
:
pass
finally
:
pass
n
=
n
+
i
if
n
<>
90
:
raise
TestFailed
,
'try inside for'
Lib/test/test_operations.py
0 → 100644
Dosyayı görüntüle @
3bead098
# Python test set -- part 3, built-in operations.
print
'3. Operations'
print
'XXX Not yet implemented'
Lib/test/test_support.py
0 → 100644
Dosyayı görüntüle @
3bead098
# Python test set -- supporting definitions.
TestFailed
=
'test_support -- test failed'
# Exception
def
unload
(
name
):
import
sys
try
:
del
sys
.
modules
[
name
]
except
KeyError
:
pass
def
forget
(
modname
):
unload
(
modname
)
import
sys
,
os
for
dirname
in
sys
.
path
:
try
:
os
.
unlink
(
os
.
path
.
join
(
dirname
,
modname
+
'.pyc'
))
except
os
.
error
:
pass
TESTFN
=
'@test'
# Filename used for testing
from
os
import
unlink
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment