[issue15392] Create a unittest framework for IDLE
Tomoki Imai added the comment: I'm a student thinking of participating in Google Summer of Code. And want to work to create a unittest for IDLE. Using unittest.mock seemed to be good way to test GUI. But there is a problem. There is no unittest.mock in Python2. http://docs.python.org/2/library/unittest.html I think using third party mock seemed to be ok, but not best way. https://pypi.python.org/pypi/mock Because, IDLE is a part of official python. I think relying on third party module is not good. Of cource, I would forcus on non-GUI unittest. But GUI-test would be needed. -- nosy: +Tomoki.Imai ___ Python tracker <http://bugs.python.org/issue15392> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17348] Unicode - encoding seems to be lost for inputs of unicode chars
Tomoki Imai added the comment: NO,this thread should not be closed! This is IDLE Bug.I found, IDLE has issue in using unicode literal. In normal interpreter in console. >>> u"こんにちは" u'\u3053\u3093\u306b\u3061\u306f' In IDLE. >>> u"こんにちは" u'\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf' I take a look IDLE codes, found bug in IDLE. In idlelib/PyShell.py. def runsource(self, source): "Extend base class method: Stuff the source in the line cache first" filename = self.stuffsource(source) self.more = 0 self.save_warnings_filters = warnings.filters[:] warnings.filterwarnings(action="error", category=SyntaxWarning) print(source,len(source)) if isinstance(source, types.UnicodeType): from idlelib import IOBinding try: source = source.encode(IOBinding.encoding) except UnicodeError: self.tkconsole.resetoutput() self.write("Unsupported characters in input\n") return try: print(source,len(source)) # InteractiveInterpreter.runsource() calls its runcode() method, # which is overridden (see below) return InteractiveInterpreter.runsource(self, source, filename) finally: if self.save_warnings_filters is not None: warnings.filters[:] = self.save_warnings_filters self.save_warnings_filters = None This codes change u"こんにちは" to u'\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf' I commented out following lines. if isinstance(source, types.UnicodeType): from idlelib import IOBinding try: source = source.encode(IOBinding.encoding) except UnicodeError: self.tkconsole.resetoutput() self.write("Unsupported characters in input\n") return And now works. Not well tested, I'll do unittest in GSoC (if I can). -- components: +IDLE -Unicode keywords: +patch nosy: +Tomoki.Imai type: -> behavior Added file: http://bugs.python.org/file29968/PyShell.py.20130422.diff ___ Python tracker <http://bugs.python.org/issue17348> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17348] Unicode - encoding seems to be lost for inputs of unicode chars in IDLE
Tomoki Imai added the comment: Thanks. I noticed Terry used python3 to confirm this problem... I am Japanese, but using English environment. Here is my locale settings. And I'm using Linux. konomi:tomoki% locale LANG=en_US.utf8 LC_CTYPE=en_US.UTF-8 LC_NUMERIC="en_US.utf8" LC_TIME="en_US.utf8" LC_COLLATE="en_US.utf8" LC_MONETARY="en_US.utf8" LC_MESSAGES="en_US.utf8" LC_PAPER="en_US.utf8" LC_NAME="en_US.utf8" LC_ADDRESS="en_US.utf8" LC_TELEPHONE="en_US.utf8" LC_MEASUREMENT="en_US.utf8" LC_IDENTIFICATION="en_US.utf8" LC_ALL= All strings used internally should be unicode type. In Japan, many many charset is here.(cp932,euc-jp,...). And, they causes problems in Python2 without converting it to unicode type. Remember, unicode type and "utf-8" is not same. When I type into Tkinter's Entry and get Entry's value,it returned me unicode. And deleted code converts unicode to str type. They are unified in Python3.(unicode become str,and str become byte). So, these lines are not in Python3 codes. I typed these strings using "Input Method"(am using uim). https://code.google.com/p/uim/ But, I don't know how uim generate these characters. -- ___ Python tracker <http://bugs.python.org/issue17348> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17348] Unicode - encoding seems to be lost for inputs of unicode chars in IDLE
Tomoki Imai added the comment: Sorry.I forgot to note my environment. I'm using Arch Linux. $ uname -a Linux manaka 3.8.7-1-ARCH #1 SMP PREEMPT Sat Apr 13 09:01:47 CEST 2013 x86_64 GNU/Linux And python version is here. $ python --version Python 2.7.4 IDLE's version is same, 2.7.4 downloaded from following link. http://www.python.org/download/releases/2.7.4/ In IDLE,I repeated original author's attempts. Python 2.7.4 (default, Apr 6 2013, 19:20:36) [GCC 4.8.0] on linux2 Type "copyright", "credits" or "license()" for more information. >>> c = u'€' >>> ord(c) Traceback (most recent call last): File "", line 1, in ord(c) TypeError: ord() expected a character, but string of length 3 found >>> c.encode('utf-8') '\xc3\xa2\xc2\x82\xc2\xac' >>> c u'\xe2\x82\xac' >>> print c ⬠>>> c = u'\u20ac' >>> ord(c) 8364 >>> c.encode('utf-8') '\xe2\x82\xac' >>> c u'\u20ac' >>> print c € >>> I have a problem.But it is different from original. After my fix. Python 2.7.4 (default, Apr 6 2013, 19:20:36) [GCC 4.8.0] on linux2 Type "copyright", "credits" or "license()" for more information. >>> c = u'€' >>> ord(c) 8364 >>> c.encode('utf-8') '\xe2\x82\xac' >>> c u'\u20ac' >>> print c € >>> It works. Using unicode escape is one solution. But, we Japanese can type u'こんにちは' just in 10 or 5 key types. And other people who use unicode literals for their language have same situation. Why IDLE users (probably beginner) use such workaround ? Of cource, using Python3 is best way. All beginner should start from Python3 now. But, there are people including me who have to use python2 because of libraries . -- ___ Python tracker <http://bugs.python.org/issue17348> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue15392] Create a unittest framework for IDLE
Tomoki Imai added the comment: Oh, no support for Python2? I think, it is too old, but still needs bug-fix supports. IDLE for Python2 is really buggy. For example, unicode problems in my environment. http://bugs.python.org/issue17348 It might be GUI related problem. By the way, your proposal seemed good to me. My proposal is almost same. Using unittest module, make directory such as idlelib/test and write unittest there. But I want to include Python2 and GUI support. (So, there are unittset.mock problem) Of cource, it is very import to concentrate on one thing (i.e Python3). I cannot deside whether to drop Python2 support now. I considered PEP 434 premit me writing unittest for Python2. http://www.python.org/dev/peps/pep-0434/ How do you think? -- ___ Python tracker <http://bugs.python.org/issue15392> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue15392] Create a unittest framework for IDLE
Tomoki Imai added the comment: I have already posted idle_dev mailing list (and, no one replied :P). I think, Ezio's suggestion is good if we will work for Python2. Using unittest.mock and mock to support Python2 and Python3. My proposal for GSoC is here. Making very initial version for Python2 and Python3 and, complete Python3 version and, backport it in the end. I'll set backporting for Python2 as optional work. My main goal is to make unittest for Python3. -- ___ Python tracker <http://bugs.python.org/issue15392> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com