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
26817a84
Kaydet (Commit)
26817a84
authored
Ara 11, 2016
tarafından
Serhiy Storchaka
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Sade Fark
Issue #28512: Fixed setting the offset attribute of SyntaxError by
PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().
üst
2b27c2dd
8114f216
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
56 additions
and
60 deletions
+56
-60
__init__.py
Lib/test/support/__init__.py
+10
-3
test_future.py
Lib/test/test_future.py
+23
-40
test_global.py
Lib/test/test_global.py
+3
-3
test_support.py
Lib/test/test_support.py
+1
-1
test_symtable.py
Lib/test/test_symtable.py
+5
-3
test_syntax.py
Lib/test/test_syntax.py
+7
-2
NEWS
Misc/NEWS
+3
-0
errors.c
Python/errors.c
+4
-8
No files found.
Lib/test/support/__init__.py
Dosyayı görüntüle @
26817a84
...
...
@@ -1060,9 +1060,16 @@ def make_bad_fd():
file
.
close
()
unlink
(
TESTFN
)
def
check_syntax_error
(
testcase
,
statement
):
testcase
.
assertRaises
(
SyntaxError
,
compile
,
statement
,
'<test string>'
,
'exec'
)
def
check_syntax_error
(
testcase
,
statement
,
*
,
lineno
=
None
,
offset
=
None
):
with
testcase
.
assertRaises
(
SyntaxError
)
as
cm
:
compile
(
statement
,
'<test string>'
,
'exec'
)
err
=
cm
.
exception
testcase
.
assertIsNotNone
(
err
.
lineno
)
if
lineno
is
not
None
:
testcase
.
assertEqual
(
err
.
lineno
,
lineno
)
testcase
.
assertIsNotNone
(
err
.
offset
)
if
offset
is
not
None
:
testcase
.
assertEqual
(
err
.
offset
,
offset
)
def
open_urlresource
(
url
,
*
args
,
**
kw
):
import
urllib.request
,
urllib
.
parse
...
...
Lib/test/test_future.py
Dosyayı görüntüle @
26817a84
...
...
@@ -2,6 +2,7 @@
import
unittest
from
test
import
support
import
os
import
re
rx
=
re
.
compile
(
r'\((\S+).py, line (\d+)'
)
...
...
@@ -12,6 +13,12 @@ def get_error_location(msg):
class
FutureTest
(
unittest
.
TestCase
):
def
check_syntax_error
(
self
,
err
,
basename
,
lineno
,
offset
=
0
):
self
.
assertIn
(
'
%
s.py, line
%
d'
%
(
basename
,
lineno
),
str
(
err
))
self
.
assertEqual
(
os
.
path
.
basename
(
err
.
filename
),
basename
+
'.py'
)
self
.
assertEqual
(
err
.
lineno
,
lineno
)
self
.
assertEqual
(
err
.
offset
,
offset
)
def
test_future1
(
self
):
with
support
.
CleanImport
(
'future_test1'
):
from
test
import
future_test1
...
...
@@ -27,68 +34,44 @@ class FutureTest(unittest.TestCase):
from
test
import
test_future3
def
test_badfuture3
(
self
):
try
:
with
self
.
assertRaises
(
SyntaxError
)
as
cm
:
from
test
import
badsyntax_future3
except
SyntaxError
as
msg
:
self
.
assertEqual
(
get_error_location
(
msg
),
(
"badsyntax_future3"
,
'3'
))
else
:
self
.
fail
(
"expected exception didn't occur"
)
self
.
check_syntax_error
(
cm
.
exception
,
"badsyntax_future3"
,
3
)
def
test_badfuture4
(
self
):
try
:
with
self
.
assertRaises
(
SyntaxError
)
as
cm
:
from
test
import
badsyntax_future4
except
SyntaxError
as
msg
:
self
.
assertEqual
(
get_error_location
(
msg
),
(
"badsyntax_future4"
,
'3'
))
else
:
self
.
fail
(
"expected exception didn't occur"
)
self
.
check_syntax_error
(
cm
.
exception
,
"badsyntax_future4"
,
3
)
def
test_badfuture5
(
self
):
try
:
with
self
.
assertRaises
(
SyntaxError
)
as
cm
:
from
test
import
badsyntax_future5
except
SyntaxError
as
msg
:
self
.
assertEqual
(
get_error_location
(
msg
),
(
"badsyntax_future5"
,
'4'
))
else
:
self
.
fail
(
"expected exception didn't occur"
)
self
.
check_syntax_error
(
cm
.
exception
,
"badsyntax_future5"
,
4
)
def
test_badfuture6
(
self
):
try
:
with
self
.
assertRaises
(
SyntaxError
)
as
cm
:
from
test
import
badsyntax_future6
except
SyntaxError
as
msg
:
self
.
assertEqual
(
get_error_location
(
msg
),
(
"badsyntax_future6"
,
'3'
))
else
:
self
.
fail
(
"expected exception didn't occur"
)
self
.
check_syntax_error
(
cm
.
exception
,
"badsyntax_future6"
,
3
)
def
test_badfuture7
(
self
):
try
:
with
self
.
assertRaises
(
SyntaxError
)
as
cm
:
from
test
import
badsyntax_future7
except
SyntaxError
as
msg
:
self
.
assertEqual
(
get_error_location
(
msg
),
(
"badsyntax_future7"
,
'3'
))
else
:
self
.
fail
(
"expected exception didn't occur"
)
self
.
check_syntax_error
(
cm
.
exception
,
"badsyntax_future7"
,
3
,
53
)
def
test_badfuture8
(
self
):
try
:
with
self
.
assertRaises
(
SyntaxError
)
as
cm
:
from
test
import
badsyntax_future8
except
SyntaxError
as
msg
:
self
.
assertEqual
(
get_error_location
(
msg
),
(
"badsyntax_future8"
,
'3'
))
else
:
self
.
fail
(
"expected exception didn't occur"
)
self
.
check_syntax_error
(
cm
.
exception
,
"badsyntax_future8"
,
3
)
def
test_badfuture9
(
self
):
try
:
with
self
.
assertRaises
(
SyntaxError
)
as
cm
:
from
test
import
badsyntax_future9
except
SyntaxError
as
msg
:
self
.
assertEqual
(
get_error_location
(
msg
),
(
"badsyntax_future9"
,
'3'
))
else
:
self
.
fail
(
"expected exception didn't occur"
)
self
.
check_syntax_error
(
cm
.
exception
,
"badsyntax_future9"
,
3
,
0
)
def
test_badfuture10
(
self
):
try
:
with
self
.
assertRaises
(
SyntaxError
)
as
cm
:
from
test
import
badsyntax_future10
except
SyntaxError
as
msg
:
self
.
assertEqual
(
get_error_location
(
msg
),
(
"badsyntax_future10"
,
'3'
))
else
:
self
.
fail
(
"expected exception didn't occur"
)
self
.
check_syntax_error
(
cm
.
exception
,
"badsyntax_future10"
,
3
,
0
)
def
test_parserhack
(
self
):
# test that the parser.c::future_hack function works as expected
...
...
Lib/test/test_global.py
Dosyayı görüntüle @
26817a84
...
...
@@ -24,7 +24,7 @@ def wrong1():
global a
global b
"""
check_syntax_error
(
self
,
prog_text_1
)
check_syntax_error
(
self
,
prog_text_1
,
lineno
=
4
,
offset
=
4
)
def
test2
(
self
):
prog_text_2
=
"""
\
...
...
@@ -32,7 +32,7 @@ def wrong2():
print(x)
global x
"""
check_syntax_error
(
self
,
prog_text_2
)
check_syntax_error
(
self
,
prog_text_2
,
lineno
=
3
,
offset
=
4
)
def
test3
(
self
):
prog_text_3
=
"""
\
...
...
@@ -41,7 +41,7 @@ def wrong3():
x = 2
global x
"""
check_syntax_error
(
self
,
prog_text_3
)
check_syntax_error
(
self
,
prog_text_3
,
lineno
=
4
,
offset
=
4
)
def
test4
(
self
):
prog_text_4
=
"""
\
...
...
Lib/test/test_support.py
Dosyayı görüntüle @
26817a84
...
...
@@ -240,7 +240,7 @@ class TestSupport(unittest.TestCase):
self
.
assertEqual
(
cm
.
exception
.
errno
,
errno
.
EBADF
)
def
test_check_syntax_error
(
self
):
support
.
check_syntax_error
(
self
,
"def class"
)
support
.
check_syntax_error
(
self
,
"def class"
,
lineno
=
1
,
offset
=
9
)
with
self
.
assertRaises
(
AssertionError
):
support
.
check_syntax_error
(
self
,
"x=1"
)
...
...
Lib/test/test_symtable.py
Dosyayı görüntüle @
26817a84
...
...
@@ -159,15 +159,17 @@ class SymtableTest(unittest.TestCase):
def
test_filename_correct
(
self
):
### Bug tickler: SyntaxError file name correct whether error raised
### while parsing or building symbol table.
def
checkfilename
(
brokencode
):
def
checkfilename
(
brokencode
,
offset
):
try
:
symtable
.
symtable
(
brokencode
,
"spam"
,
"exec"
)
except
SyntaxError
as
e
:
self
.
assertEqual
(
e
.
filename
,
"spam"
)
self
.
assertEqual
(
e
.
lineno
,
1
)
self
.
assertEqual
(
e
.
offset
,
offset
)
else
:
self
.
fail
(
"no SyntaxError for
%
r"
%
(
brokencode
,))
checkfilename
(
"def f(x): foo)("
)
# parse-time
checkfilename
(
"def f(x): global x"
)
# symtable-build-time
checkfilename
(
"def f(x): foo)("
,
14
)
# parse-time
checkfilename
(
"def f(x): global x"
,
10
)
# symtable-build-time
symtable
.
symtable
(
"pass"
,
b
"spam"
,
"exec"
)
with
self
.
assertWarns
(
DeprecationWarning
),
\
self
.
assertRaises
(
TypeError
):
...
...
Lib/test/test_syntax.py
Dosyayı görüntüle @
26817a84
...
...
@@ -548,7 +548,7 @@ from test import support
class
SyntaxTestCase
(
unittest
.
TestCase
):
def
_check_error
(
self
,
code
,
errtext
,
filename
=
"<testcase>"
,
mode
=
"exec"
,
subclass
=
None
):
filename
=
"<testcase>"
,
mode
=
"exec"
,
subclass
=
None
,
lineno
=
None
,
offset
=
None
):
"""Check that compiling code raises SyntaxError with errtext.
errtest is a regular expression that must be present in the
...
...
@@ -563,6 +563,11 @@ class SyntaxTestCase(unittest.TestCase):
mo
=
re
.
search
(
errtext
,
str
(
err
))
if
mo
is
None
:
self
.
fail
(
"SyntaxError did not contain '
%
r'"
%
(
errtext
,))
self
.
assertEqual
(
err
.
filename
,
filename
)
if
lineno
is
not
None
:
self
.
assertEqual
(
err
.
lineno
,
lineno
)
if
offset
is
not
None
:
self
.
assertEqual
(
err
.
offset
,
offset
)
else
:
self
.
fail
(
"compile() did not raise SyntaxError"
)
...
...
@@ -573,7 +578,7 @@ class SyntaxTestCase(unittest.TestCase):
self
.
_check_error
(
"del f()"
,
"delete"
)
def
test_global_err_then_warn
(
self
):
# Bug
tickler
: The SyntaxError raised for one global statement
# Bug
#763201
: The SyntaxError raised for one global statement
# shouldn't be clobbered by a SyntaxWarning issued for a later one.
source
=
"""if 1:
def error(a):
...
...
Misc/NEWS
Dosyayı görüntüle @
26817a84
...
...
@@ -10,6 +10,9 @@ What's New in Python 3.7.0 alpha 1
Core and Builtins
-----------------
- Issue #28512: Fixed setting the offset attribute of SyntaxError by
PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().
- Issue #28918: Fix the cross compilation of xxlimited when Python has been
built with Py_DEBUG defined.
...
...
Python/errors.c
Dosyayı görüntüle @
26817a84
...
...
@@ -1053,16 +1053,15 @@ PyErr_SyntaxLocationObject(PyObject *filename, int lineno, int col_offset)
PyErr_Clear
();
Py_DECREF
(
tmp
);
}
tmp
=
NULL
;
if
(
col_offset
>=
0
)
{
tmp
=
PyLong_FromLong
(
col_offset
);
if
(
tmp
==
NULL
)
PyErr_Clear
();
else
{
if
(
_PyObject_SetAttrId
(
v
,
&
PyId_offset
,
tmp
))
PyErr_Clear
();
Py_DECREF
(
tmp
);
}
}
if
(
_PyObject_SetAttrId
(
v
,
&
PyId_offset
,
tmp
?
tmp
:
Py_None
))
PyErr_Clear
();
Py_XDECREF
(
tmp
);
if
(
filename
!=
NULL
)
{
if
(
_PyObject_SetAttrId
(
v
,
&
PyId_filename
,
filename
))
PyErr_Clear
();
...
...
@@ -1074,9 +1073,6 @@ PyErr_SyntaxLocationObject(PyObject *filename, int lineno, int col_offset)
Py_DECREF
(
tmp
);
}
}
if
(
_PyObject_SetAttrId
(
v
,
&
PyId_offset
,
Py_None
))
{
PyErr_Clear
();
}
if
(
exc
!=
PyExc_SyntaxError
)
{
if
(
!
_PyObject_HasAttrId
(
v
,
&
PyId_msg
))
{
tmp
=
PyObject_Str
(
v
);
...
...
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