Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
520e00dd
Commit
520e00dd
authored
Mar 24, 2015
by
Serhiy Storchaka
Browse files
Options
Browse Files
Download
Plain Diff
Issue #23583: Added tests for standard IO streams in IDLE.
parents
87eb482e
6c86fe2d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
235 additions
and
0 deletions
+235
-0
Lib/idlelib/idle_test/test_io.py
Lib/idlelib/idle_test/test_io.py
+233
-0
Misc/NEWS
Misc/NEWS
+2
-0
No files found.
Lib/idlelib/idle_test/test_io.py
0 → 100644
View file @
520e00dd
import
unittest
import
io
from
idlelib.PyShell
import
PseudoInputFile
,
PseudoOutputFile
class
S
(
str
):
def
__str__
(
self
):
return
'%s:str'
%
type
(
self
).
__name__
def
__unicode__
(
self
):
return
'%s:unicode'
%
type
(
self
).
__name__
def
__len__
(
self
):
return
3
def
__iter__
(
self
):
return
iter
(
'abc'
)
def
__getitem__
(
self
,
*
args
):
return
'%s:item'
%
type
(
self
).
__name__
def
__getslice__
(
self
,
*
args
):
return
'%s:slice'
%
type
(
self
).
__name__
class
MockShell
:
def
__init__
(
self
):
self
.
reset
()
def
write
(
self
,
*
args
):
self
.
written
.
append
(
args
)
def
readline
(
self
):
return
self
.
lines
.
pop
()
def
close
(
self
):
pass
def
reset
(
self
):
self
.
written
=
[]
def
push
(
self
,
lines
):
self
.
lines
=
list
(
lines
)[::
-
1
]
class
PseudeOutputFilesTest
(
unittest
.
TestCase
):
def
test_misc
(
self
):
shell
=
MockShell
()
f
=
PseudoOutputFile
(
shell
,
'stdout'
,
'utf-8'
)
self
.
assertIsInstance
(
f
,
io
.
TextIOBase
)
self
.
assertEqual
(
f
.
encoding
,
'utf-8'
)
self
.
assertIsNone
(
f
.
errors
)
self
.
assertIsNone
(
f
.
newlines
)
self
.
assertEqual
(
f
.
name
,
'<stdout>'
)
self
.
assertFalse
(
f
.
closed
)
self
.
assertTrue
(
f
.
isatty
())
self
.
assertFalse
(
f
.
readable
())
self
.
assertTrue
(
f
.
writable
())
self
.
assertFalse
(
f
.
seekable
())
def
test_unsupported
(
self
):
shell
=
MockShell
()
f
=
PseudoOutputFile
(
shell
,
'stdout'
,
'utf-8'
)
self
.
assertRaises
(
OSError
,
f
.
fileno
)
self
.
assertRaises
(
OSError
,
f
.
tell
)
self
.
assertRaises
(
OSError
,
f
.
seek
,
0
)
self
.
assertRaises
(
OSError
,
f
.
read
,
0
)
self
.
assertRaises
(
OSError
,
f
.
readline
,
0
)
def
test_write
(
self
):
shell
=
MockShell
()
f
=
PseudoOutputFile
(
shell
,
'stdout'
,
'utf-8'
)
f
.
write
(
'test'
)
self
.
assertEqual
(
shell
.
written
,
[(
'test'
,
'stdout'
)])
shell
.
reset
()
f
.
write
(
't
\
xe8
st'
)
self
.
assertEqual
(
shell
.
written
,
[(
't
\
xe8
st'
,
'stdout'
)])
shell
.
reset
()
f
.
write
(
S
(
't
\
xe8
st'
))
self
.
assertEqual
(
shell
.
written
,
[(
't
\
xe8
st'
,
'stdout'
)])
self
.
assertEqual
(
type
(
shell
.
written
[
0
][
0
]),
str
)
shell
.
reset
()
self
.
assertRaises
(
TypeError
,
f
.
write
)
self
.
assertEqual
(
shell
.
written
,
[])
self
.
assertRaises
(
TypeError
,
f
.
write
,
b'test'
)
self
.
assertRaises
(
TypeError
,
f
.
write
,
123
)
self
.
assertEqual
(
shell
.
written
,
[])
self
.
assertRaises
(
TypeError
,
f
.
write
,
'test'
,
'spam'
)
self
.
assertEqual
(
shell
.
written
,
[])
def
test_writelines
(
self
):
shell
=
MockShell
()
f
=
PseudoOutputFile
(
shell
,
'stdout'
,
'utf-8'
)
f
.
writelines
([])
self
.
assertEqual
(
shell
.
written
,
[])
shell
.
reset
()
f
.
writelines
([
'one
\
n
'
,
'two'
])
self
.
assertEqual
(
shell
.
written
,
[(
'one
\
n
'
,
'stdout'
),
(
'two'
,
'stdout'
)])
shell
.
reset
()
f
.
writelines
([
'on
\
xe8
\
n
'
,
'tw
\
xf2
'
])
self
.
assertEqual
(
shell
.
written
,
[(
'on
\
xe8
\
n
'
,
'stdout'
),
(
'tw
\
xf2
'
,
'stdout'
)])
shell
.
reset
()
f
.
writelines
([
S
(
't
\
xe8
st'
)])
self
.
assertEqual
(
shell
.
written
,
[(
't
\
xe8
st'
,
'stdout'
)])
self
.
assertEqual
(
type
(
shell
.
written
[
0
][
0
]),
str
)
shell
.
reset
()
self
.
assertRaises
(
TypeError
,
f
.
writelines
)
self
.
assertEqual
(
shell
.
written
,
[])
self
.
assertRaises
(
TypeError
,
f
.
writelines
,
123
)
self
.
assertEqual
(
shell
.
written
,
[])
self
.
assertRaises
(
TypeError
,
f
.
writelines
,
[
b'test'
])
self
.
assertRaises
(
TypeError
,
f
.
writelines
,
[
123
])
self
.
assertEqual
(
shell
.
written
,
[])
self
.
assertRaises
(
TypeError
,
f
.
writelines
,
[],
[])
self
.
assertEqual
(
shell
.
written
,
[])
def
test_close
(
self
):
shell
=
MockShell
()
f
=
PseudoOutputFile
(
shell
,
'stdout'
,
'utf-8'
)
self
.
assertFalse
(
f
.
closed
)
f
.
write
(
'test'
)
f
.
close
()
self
.
assertTrue
(
f
.
closed
)
self
.
assertRaises
(
ValueError
,
f
.
write
,
'x'
)
self
.
assertEqual
(
shell
.
written
,
[(
'test'
,
'stdout'
)])
f
.
close
()
self
.
assertRaises
(
TypeError
,
f
.
close
,
1
)
class
PseudeInputFilesTest
(
unittest
.
TestCase
):
def
test_misc
(
self
):
shell
=
MockShell
()
f
=
PseudoInputFile
(
shell
,
'stdin'
,
'utf-8'
)
self
.
assertIsInstance
(
f
,
io
.
TextIOBase
)
self
.
assertEqual
(
f
.
encoding
,
'utf-8'
)
self
.
assertIsNone
(
f
.
errors
)
self
.
assertIsNone
(
f
.
newlines
)
self
.
assertEqual
(
f
.
name
,
'<stdin>'
)
self
.
assertFalse
(
f
.
closed
)
self
.
assertTrue
(
f
.
isatty
())
self
.
assertTrue
(
f
.
readable
())
self
.
assertFalse
(
f
.
writable
())
self
.
assertFalse
(
f
.
seekable
())
def
test_unsupported
(
self
):
shell
=
MockShell
()
f
=
PseudoInputFile
(
shell
,
'stdin'
,
'utf-8'
)
self
.
assertRaises
(
OSError
,
f
.
fileno
)
self
.
assertRaises
(
OSError
,
f
.
tell
)
self
.
assertRaises
(
OSError
,
f
.
seek
,
0
)
self
.
assertRaises
(
OSError
,
f
.
write
,
'x'
)
self
.
assertRaises
(
OSError
,
f
.
writelines
,
[
'x'
])
def
test_read
(
self
):
shell
=
MockShell
()
f
=
PseudoInputFile
(
shell
,
'stdin'
,
'utf-8'
)
shell
.
push
([
'one
\
n
'
,
'two
\
n
'
,
''
])
self
.
assertEqual
(
f
.
read
(),
'one
\
n
two
\
n
'
)
shell
.
push
([
'one
\
n
'
,
'two
\
n
'
,
''
])
self
.
assertEqual
(
f
.
read
(
-
1
),
'one
\
n
two
\
n
'
)
shell
.
push
([
'one
\
n
'
,
'two
\
n
'
,
''
])
self
.
assertEqual
(
f
.
read
(
None
),
'one
\
n
two
\
n
'
)
shell
.
push
([
'one
\
n
'
,
'two
\
n
'
,
'three
\
n
'
,
''
])
self
.
assertEqual
(
f
.
read
(
2
),
'on'
)
self
.
assertEqual
(
f
.
read
(
3
),
'e
\
n
t'
)
self
.
assertEqual
(
f
.
read
(
10
),
'wo
\
n
three
\
n
'
)
shell
.
push
([
'one
\
n
'
,
'two
\
n
'
])
self
.
assertEqual
(
f
.
read
(
0
),
''
)
self
.
assertRaises
(
TypeError
,
f
.
read
,
1.5
)
self
.
assertRaises
(
TypeError
,
f
.
read
,
'1'
)
self
.
assertRaises
(
TypeError
,
f
.
read
,
1
,
1
)
def
test_readline
(
self
):
shell
=
MockShell
()
f
=
PseudoInputFile
(
shell
,
'stdin'
,
'utf-8'
)
shell
.
push
([
'one
\
n
'
,
'two
\
n
'
,
'three
\
n
'
,
'four
\
n
'
])
self
.
assertEqual
(
f
.
readline
(),
'one
\
n
'
)
self
.
assertEqual
(
f
.
readline
(
-
1
),
'two
\
n
'
)
self
.
assertEqual
(
f
.
readline
(
None
),
'three
\
n
'
)
shell
.
push
([
'one
\
n
two
\
n
'
])
self
.
assertEqual
(
f
.
readline
(),
'one
\
n
'
)
self
.
assertEqual
(
f
.
readline
(),
'two
\
n
'
)
shell
.
push
([
'one'
,
'two'
,
'three'
])
self
.
assertEqual
(
f
.
readline
(),
'one'
)
self
.
assertEqual
(
f
.
readline
(),
'two'
)
shell
.
push
([
'one
\
n
'
,
'two
\
n
'
,
'three
\
n
'
])
self
.
assertEqual
(
f
.
readline
(
2
),
'on'
)
self
.
assertEqual
(
f
.
readline
(
1
),
'e'
)
self
.
assertEqual
(
f
.
readline
(
1
),
'
\
n
'
)
self
.
assertEqual
(
f
.
readline
(
10
),
'two
\
n
'
)
shell
.
push
([
'one
\
n
'
,
'two
\
n
'
])
self
.
assertEqual
(
f
.
readline
(
0
),
''
)
self
.
assertRaises
(
TypeError
,
f
.
readlines
,
1.5
)
self
.
assertRaises
(
TypeError
,
f
.
readlines
,
'1'
)
self
.
assertRaises
(
TypeError
,
f
.
readlines
,
1
,
1
)
def
test_readlines
(
self
):
shell
=
MockShell
()
f
=
PseudoInputFile
(
shell
,
'stdin'
,
'utf-8'
)
shell
.
push
([
'one
\
n
'
,
'two
\
n
'
,
''
])
self
.
assertEqual
(
f
.
readlines
(),
[
'one
\
n
'
,
'two
\
n
'
])
shell
.
push
([
'one
\
n
'
,
'two
\
n
'
,
''
])
self
.
assertEqual
(
f
.
readlines
(
-
1
),
[
'one
\
n
'
,
'two
\
n
'
])
shell
.
push
([
'one
\
n
'
,
'two
\
n
'
,
''
])
self
.
assertEqual
(
f
.
readlines
(
None
),
[
'one
\
n
'
,
'two
\
n
'
])
shell
.
push
([
'one
\
n
'
,
'two
\
n
'
,
''
])
self
.
assertEqual
(
f
.
readlines
(
0
),
[
'one
\
n
'
,
'two
\
n
'
])
shell
.
push
([
'one
\
n
'
,
'two
\
n
'
,
''
])
self
.
assertEqual
(
f
.
readlines
(
3
),
[
'one
\
n
'
])
shell
.
push
([
'one
\
n
'
,
'two
\
n
'
,
''
])
self
.
assertEqual
(
f
.
readlines
(
4
),
[
'one
\
n
'
,
'two
\
n
'
])
shell
.
push
([
'one
\
n
'
,
'two
\
n
'
,
''
])
self
.
assertRaises
(
TypeError
,
f
.
readlines
,
1.5
)
self
.
assertRaises
(
TypeError
,
f
.
readlines
,
'1'
)
self
.
assertRaises
(
TypeError
,
f
.
readlines
,
1
,
1
)
def
test_close
(
self
):
shell
=
MockShell
()
f
=
PseudoInputFile
(
shell
,
'stdin'
,
'utf-8'
)
shell
.
push
([
'one
\
n
'
,
'two
\
n
'
,
''
])
self
.
assertFalse
(
f
.
closed
)
self
.
assertEqual
(
f
.
readline
(),
'one
\
n
'
)
f
.
close
()
self
.
assertFalse
(
f
.
closed
)
self
.
assertEqual
(
f
.
readline
(),
'two
\
n
'
)
self
.
assertRaises
(
TypeError
,
f
.
close
,
1
)
if
__name__
==
'__main__'
:
unittest
.
main
()
Misc/NEWS
View file @
520e00dd
...
...
@@ -142,6 +142,8 @@ Build
Tests
-----
- Issue #23583: Added tests for standard IO streams in IDLE.
- Issue #22289: Prevent test_urllib2net failures due to ftp connection timeout.
Tools/Demos
...
...
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