Permalink
Checking mergeability…
Don’t worry, you can still create the pull request.
Comparing changes
Open a pull request
78
contributors
This comparison is big! We’re only showing the most recent
250
commits
Commits on Oct 29, 2018
Fix test_bdb when running Python is isolated mode. (cherry picked from commit c0799ec)
…H-10204) After commit d0f49d2, the output of the test suite is always buffered as the test output needs to be included in the JUnit file in same cases (as when a test fails). This has the consequence that printing or using debuggers (like pdb) in the test suite does not result in a good user experience anymore. This commit modifies the test suite runner so it only captures the test output when the JUnit file is requested to fix the regression so prints and debuggers are usable again. (cherry picked from commit 0227748) Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
Commits on Oct 30, 2018
) The root widget was accessed as a global variable in the Application's method. (cherry picked from commit a80af77) Co-authored-by: Daniel Lovell <lovell.daniel92@gmail.com>
Commits on Oct 31, 2018
(cherry picked from commit c9a6168) Co-authored-by: Zackery Spytz <zspytz@gmail.com>
Commits on Nov 01, 2018
https://bugs.python.org/issue35075 (cherry picked from commit bf46a09) Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
* Include memo in the documented signature of copy.deepcopy() The memo argument is mentioned lower on the doc page under writing a `__deepcopy__` method, but is not included in the documented function signature. This makes it easy to miss, and can lead to incorrect/buggy implementations of `__deepcopy__` -- which is exatly what just happpend to me! (cherry picked from commit 0200928) Co-authored-by: Stephan Hoyer <shoyer@gmail.com>
Commits on Nov 02, 2018
Some methods in the os module can accept path-like objects. This is documented in the general documentation but not in the function docstrings. To keep both in sync, the docstrings need to be updated to reflect that path-like objects are also accepted.. (cherry picked from commit b942707) Co-authored-by: BNMetrics <luna@bnmetrics.com>
Commits on Nov 03, 2018
(cherry picked from commit fe62d87) Co-authored-by: İsmail Arılık <arilik.ismail@gmail.com>
Commits on Nov 04, 2018
Commits on Nov 05, 2018
§31.5.6.3. Importing a source file directly: `module_from_spec` is new in Python 3.5. (cherry picked from commit 16c8a53) Co-authored-by: E Kawashima <e-kwsm@users.noreply.github.com>
Commits on Nov 06, 2018
The section is renamed from "IDLE -- console differences". It mostly covers the implications of using custom sys.stdxxx objects. (cherry picked from commit 5e79090) Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
(This should have been done with the first PR for this issue.) (cherry picked from commit f1d3efc) Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
… systems. (GH-10347) The test depended on '/usr/share/zoneinfo/posixrules' or equivalent because it set TZ without explicit DST transition rules. At least on OpenSUSE Tumbleweed that file is linked to '/etc/localtime', making the test fail with certain local timezones, such as 'Europe/Moscow' which doesn't have DST transitions since 2011. (cherry picked from commit f1b9ad3) Co-authored-by: Alexey Izbyshev <izbyshev@ispras.ru>
Add a new subsection to the doc. (cherry picked from commit 75d9d59) Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Commits on Nov 07, 2018
A program that runs indefinitely can overfill memory. (cherry picked from commit 76cd0c3) Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
(cherry picked from commit ea6a28c) Co-authored-by: Andrés Delfino <adelfino@gmail.com>
(cherry picked from commit ca03f3b) Co-authored-by: Andrés Delfino <adelfino@gmail.com>
(cherry picked from commit d649910) Co-authored-by: Andrés Delfino <adelfino@gmail.com>
(cherry picked from commit ae31e3f) Co-authored-by: Andrés Delfino <adelfino@gmail.com>
(cherry picked from commit bfe1839) Co-authored-by: Andrés Delfino <adelfino@gmail.com>
Allow configure --with-lto to apply to all builds, not just profile-opt builds. Whether this is actually useful or not must be determined by the person building CPython using their own toolchain. My own quick test on x86_64 Debian 9 (gcc 6.3, binutils 2.28) seemed to suggest that it wasn't, but I expect better toolchains can or will exist at some point. The point is to allow it at all.
Commits on Nov 08, 2018
(cherry picked from commit cdb96f4) Co-authored-by: Andrés Delfino <adelfino@gmail.com>
Pydoc now does not duplicate docstrings for aliases of inherited methods. (cherry picked from commit a44d34e) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Commits on Nov 09, 2018
… (GH-10422) Fix an off by one error in the peephole optimizer when checking for unreachable code beyond a return. Do a bounds check within find_op so it can return before going past the end as a safety measure. 7db3c48#diff-a33329ae6ae0bb295d742f0caf93c137 introduced this off by one error while fixing another one nearby. This bug was shipped in all Python 3.6 and 3.7 releases. The included unittest won't fail unless you do a clang msan build. (cherry picked from commit 49fa4a9)
This typo doesn't affect the result because wrong bits are discarded on implicit conversion to unsigned char, but it trips UBSan with -fsanitize=implicit-integer-truncation. https://bugs.python.org/issue35194 (cherry picked from commit 7a69cf4) Co-authored-by: Alexey Izbyshev <izbyshev@ispras.ru>
1) Convert weird field name "typ" to the more standard "type". 2) For the NUMBER type, convert the value to an int() or float(). 3) Simplify ``group(kind)`` to the shorter and faster ``group()`` call. 4) Simplify logic go a single if-elif chain to make this easier to extend. 5) Reorder the tests to match the order the tokens are specified. This isn't necessary for correctness but does make the example easier to follow. 6) Move the "column" calculation before the if-elif chain so that users have the option of using this value in error messages. (cherry picked from commit b83942c) Co-authored-by: Raymond Hettinger <rhettinger@users.noreply.github.com>
Co-Authored-By: maggyero <gery.ogam@gmail.com> (cherry picked from commit 009b2f0) Co-authored-by: Géry Ogam <gery.ogam@gmail.com>
Commits on Nov 10, 2018
(cherry picked from commit 43a74ab) Co-authored-by: Srinivas Thatiparthy (శ్రీనివాస్ తాటిపర్తి) <thatiparthysreenivas@gmail.com>
Commits on Nov 11, 2018
The System Preferences Dock "prefer tabs always" setting disables some IDLE features. Menus are a bit different than as described for Windows and Linux. (cherry picked from commit 50ff02b) Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
…GH-7252) https://bugs.python.org/issue33699 (cherry picked from commit b086c8a) Co-authored-by: Andrés Delfino <adelfino@gmail.com>
…_range(). (GH-10442) This function may access memory which is mapped but is considered free by libc allocator. It behaves so by design, therefore we need to suppress sanitizer reports. GCC doesn't support MSan, so disable only TSan for it. (cherry picked from commit fd3a91c) Co-authored-by: Alexey Izbyshev <izbyshev@ispras.ru>
Commits on Nov 12, 2018
The documentation was not covering multiple targets enclosed by parenthesis nor multiple targets enclosed by brackets, adding them all would be heavy, an else cover them all and is lighter to read. (cherry picked from commit 082875d) Co-authored-by: Julien Palard <julien@palard.fr>
Independently of -> Independent of (cherry picked from commit cd44980) Co-authored-by: Srinivas Thatiparthy (శ్రీనివాస్ తాటిపర్తి) <thatiparthysreenivas@gmail.com>
(cherry picked from commit 9404e77) Co-authored-by: Andrés Delfino <adelfino@gmail.com>
a asynchronous generator -> an asynchronous generator (cherry picked from commit a9655b7) Co-authored-by: Windson yang <wiwindson@outlook.com>
Commits on Nov 13, 2018
…-10493) Adds configure flags for msan and ubsan builds to make it easier to enable. These also encode the detail that address sanitizer and memory sanitizer should disable pymalloc. Define MEMORY_SANITIZER when appropriate at build time and adds workarounds to existing code to mark things as initialized where the sanitizer is otherwise unable to determine that. This lets our build succeed under the memory sanitizer. not all tests pass without sanitizer failures yet but we're in pretty good shape after this. (cherry picked from commit 1584a00) Contributed by Gregory P. Smith [Google LLC] Also includes a whitespace fix from make patchcheck to _posixsubprocess.c - unrelated to the main change that makes the CI happy so I'm just doing it now rather than creating a separate PR.
clang's MemorySanitizer understand getc() but does not understand getc_unlocked(). Workaround: Don't use it on msan builds. (cherry picked from commit e6c77d8) Co-authored-by: Gregory P. Smith <greg@krypto.org>
Rename our new MEMORY_SANITIZER define to _Py_MEMORY_SANITIZER. Project based C Preprocessor namespacing at its finest. :P (cherry picked from commit 3015fb8) Co-authored-by: Gregory P. Smith <greg@krypto.org>
Discovered using clang's MemorySanitizer when it ran python3's test_fstring test_misformed_unicode_character_name. An msan build will fail by simply executing: ./python -c 'u"\N"' (cherry picked from commit 746b2d3) Co-authored-by: Gregory P. Smith <greg@krypto.org>
Commits on Nov 14, 2018
(cherry picked from commit daeb3c4) Co-authored-by: l-n-s <supervillain@riseup.net>
(cherry picked from commit bf1355b) Co-authored-by: Andrés Delfino <adelfino@gmail.com>
(cherry picked from commit 8e0b05e) Co-authored-by: Andrés Delfino <adelfino@gmail.com>
(cherry picked from commit 6431347) Co-authored-by: Julien Palard <julien@palard.fr> https://bugs.python.org/issue32613
Commits on Nov 15, 2018
Remove an unnecessary "that": ... will execute that the body ... -> ... will execute the body ... (cherry picked from commit 25221b3) Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
"single" needs to be decrefed if PyList_Append() fails. (cherry picked from commit 4c596d5) Co-authored-by: Zackery Spytz <zspytz@gmail.com>
(cherry picked from commit b65413b) Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Commits on Nov 16, 2018
(cherry picked from commit c2ccac7) Co-authored-by: Andrés Delfino <adelfino@gmail.com>
This missed PyErr_NoMemory() could cause a SystemError when calling _symtable.symtable(). (cherry picked from commit ad65f15) Co-authored-by: Zackery Spytz <zspytz@gmail.com>
Commits on Nov 17, 2018
(cherry picked from commit 5a087d5) Co-authored-by: Srinivas Reddy Thatiparthy (శ్రీనివాస్ రెడ్డి తాటిపర్తి) <thatiparthysreenivas@gmail.com>
… char * as (GH-10580) (GH-10587) Source of T_STRING: https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Python/structmember.cGH-L51 Source of PyUnicode_FromString https://github.com/python/cpython/blob/master/Include/unicodeobject.hGH-L702 https://bugs.python.org/issue25438 (cherry picked from commit 689d555) Co-authored-by: Windson yang <wiwindson@outlook.com> https://bugs.python.org/issue25438
Commits on Nov 19, 2018
(cherry picked from commit 8b9c33e) Co-authored-by: Donald Stufft <donald@stufft.io>
Commits on Nov 20, 2018
Fixes assertion failures in _datetimemodule.c introduced in the previous fix (see bpo-31752). Rather of trying to handle an int subclass as exact int, let it to use overridden special methods, but check the result of divmod(). (cherry picked from commit 3ec0f49) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
…10619) (GH-10621) locale.localeconv() now sets temporarily the LC_CTYPE locale to the LC_MONETARY locale if the two locales are different and monetary strings are non-ASCII. This temporary change affects other threads. Changes: * locale.localeconv() can now set LC_CTYPE to LC_MONETARY to decode monetary fields. * Add LocaleInfo.grouping_buffer: copy localeconv() grouping string since it can be replaced anytime if a different thread calls localeconv(). (cherry picked from commit 02e6bf7) (cherry picked from commit 6eff6b8)
Commits on Nov 21, 2018
) I'll watch for 404 on the old URL and will setup an HTTP redirection if needed. (cherry picked from commit 361e868) Co-authored-by: Zhiming Wang <github@zmwang.pw>
Commits on Nov 22, 2018
os_read_impl() now also truncates the size to _PY_READ_MAX on macOS, to avoid to allocate a larger buffer even if _Py_read() is limited to _PY_READ_MAX bytes (ex: INT_MAX on macOS). (cherry picked from commit 9a0d7a7) Co-authored-by: Victor Stinner <vstinner@redhat.com>
…GH-10663) * bpo-9263: _PyObject_Dump() detects freed memory (GH-10061) _PyObject_Dump() now uses an heuristic to check if the object memory has been freed: log "<freed object>" in that case. The heuristic rely on the debug hooks on Python memory allocators which fills the memory with DEADBYTE (0xDB) when memory is deallocated. Use PYTHONMALLOC=debug to always enable these debug hooks. (cherry picked from commit 82af0b6) * bpo-9263: Fix _PyObject_Dump() for freed object (#10661) If _PyObject_Dump() detects that the object is freed, don't try to dump it (exit immediately). Enhance also _PyObject_IsFreed(): it now detects if the pointer itself looks like freed memory. (cherry picked from commit 2cf5d32) (cherry picked from commit 95036ea)
Commits on Nov 23, 2018
(cherry picked from commit ba57963) Co-authored-by: takey <taketakeyyy@gmail.com>
…H-4856) Importing ProcessPoolExecutor may hang or cause an error when the import accesses urandom on a low resource platform https://bugs.python.org/issue29877 (cherry picked from commit 1d817e4) Co-authored-by: Dustin Spicuzza <dustin@virtualroadside.com>
…-10685) * bpo-35189: Fix eintr_tester.py (GH-10637) Call setitimer() before each test method, instead of once per test case, to ensure that signals are sent in each test method. Previously, only the first method of a testcase class got signals. Changes: * Replace setUpClass() with setUp() and replace tearDownClass() with tearDown(). * tearDown() now ensures that at least one signal has been sent. * Replace support.run_unittest() with unittest.main() which has a nicer CLI and automatically discover test cases. (cherry picked from commit aac1f81) * bpo-35189: Retry fnctl calls on EINTR (GH-10413) Modify the following fnctl function to retry if interrupted by a signal (EINTR): flock, lockf, fnctl. (cherry picked from commit b409ffa) Co-Authored-By: nierob <nierob@users.noreply.github.com> (cherry picked from commit 56742f1)
…H-10675) (GH-10688) The "-I" command line option (run Python in isolated mode) and -X options (like -X faulthandler) are now also copied by the multiprocessing and distutils modules when spawning child processes. Previously, only -E and -s options (enabled by -I) were copied. subprocess._args_from_interpreter_flags() now copies the -I flag and options from sys._xoptions like -X dev. (cherry picked from commit 9de3632)
Commits on Nov 25, 2018
Commits on Nov 26, 2018
) (GH-10720) Fix str.format(), float.__format__() and complex.__format__() methods for non-ASCII decimal point when using the "n" formatter. Rewrite _PyUnicode_InsertThousandsGrouping(): it now requires a _PyUnicodeWriter object for the buffer and a Python str object for digits. (cherry picked from commit 59423e3) (cherry picked from commit 6f5fa1b)
… (GH-10725) (cherry picked from commit 5719f27) Co-authored-by: Mathieu Dupuy <deronnax@users.noreply.github.com> https://bugs.python.org/issue35255
Commits on Nov 27, 2018
Fix mktime() overflow error in test_email: run test_localtime_daylight_true_dst_true() and test_localtime_daylight_false_dst_true() with a specific timezone. (cherry picked from commit cfaafda) Co-authored-by: Victor Stinner <vstinner@redhat.com>
Commits on Nov 28, 2018
Fix WithThreadsTestPool.test_wrapped_exception() of test_multiprocessing_fork: join the pool. WithThreadsTestPool.test_del_pool() is now also decorated with @support.reap_threads. (cherry picked from commit b727873) Co-authored-by: Victor Stinner <vstinner@redhat.com>
…H-10487) (GH-10768) That section is a tip on how to kill process on Windows for Python prior to 2.7 and 3.2. 3.1 end of support was April 2012 and 2.6 was October 2013, so that hasn't been need for supported versions of Python for more than 5 years. Beside not being needed anymore for a long time, when I read it with the eyes of a Python profane, it makes Python looks bad, like a language from the parts with warts you need to circumvent. Let's delete that :). (cherry picked from commit a1c4001) Co-authored-by: Mathieu Dupuy <deronnax@users.noreply.github.com>
Commits on Nov 29, 2018
test_eintr no longer fails if the signal handler has not been called. (cherry picked from commit 2956bff) Co-authored-by: Victor Stinner <vstinner@redhat.com>
Fix ResourceWarning in platform.dist() and platform.linux_distribution() on SuSE and Caldera OpenLinux. Patch by Ville Skyttä. (cherry picked from commit 7eeab87) Co-authored-by: Victor Stinner <vstinner@redhat.com>
* bpo-34605, libregrtest: Rename --slaveargs to --worker-args (GH-9099) Rename also run_tests_slave() to run_tests_worker(). (cherry picked from commit 012f5b9) * bpo-34279, regrtest: Issue a warning if no tests have been executed (GH-10150) (cherry picked from commit 9724348) * test_regrtest: remove unused threading import (cherry picked from commit 8a73cac) Co-authored-by: Victor Stinner <vstinner@redhat.com>
Commits on Nov 30, 2018
(cherry picked from commit a2e3585) Co-authored-by: Zackery Spytz <zspytz@gmail.com>
testAccept() and testRecv() of test_socket.NonBlockingTCPTests have a race condition: time.sleep() is used as a weak synchronization primitive and the tests fail randomly on slow buildbots. Use a reliable threading.Event to fix these tests. Other changes: * Replace send() with sendall() * Expect specific BlockingIOError rather than generic OSError * Add a timeout to select() in testAccept() and testRecv() * Use addCleanup() to close sockets * Use assertRaises() (cherry picked from commit ebd5d6d) Co-authored-by: Victor Stinner <vstinner@redhat.com>
Commits on Dec 01, 2018
(cherry picked from commit edeca92) Co-authored-by: Xtreak <tirkarthi@users.noreply.github.com>
(cherry picked from commit 32bc11c) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Commits on Dec 03, 2018
(cherry picked from commit 4013c17) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
) Also refactor the call recording implementation and add some notes about its limitations. (cherry picked from commit 8ca0fa9) Co-authored-by: Chris Withers <chris@withers.org>
* bpo-35373: Fix PyInit_timezone() error handling PyInit_timezone() now returns -1 at exit if an exception is raised. Check also explicitly PyUnicode_DecodeLocale() and Py_BuildValue() errors. * bpo-35373: Fix PyInit_time() error handling (GH-10865) * PyInit_time() now returns NULL if an exception is raised. * Rename PyInit_timezone() to init_timezone(). "PyInit_" prefix is a special prefix for function initializing a module. init_timezone() doesn't initialize a module and the function is not exported. (cherry picked from commit 3bb150d) (cherry picked from commit 5eb78c7) Co-authored-by: Victor Stinner <vstinner@redhat.com>
Commits on Dec 04, 2018
Commits on Dec 05, 2018
…) (GH-10925) * posixpath.expanduser() now returns the input path unchanged if the HOME environment variable is not set and pwd.getpwuid() raises KeyError (the current user identifier doesn't exist in the password database). * Add test_no_home_directory() to test_site. (cherry picked from commit f2f4555)
(cherry picked from commit 1ce853f) Co-authored-by: Andre Delfino <adelfino@gmail.com>
…H-8537) (GH-10936) When running test_bdb.py as a script, `import test_module` would be importing the existing Lib/test/test_modules.py instead of the tempcwd/test_module.py module which was dynamically created by test_bdb.py itself. (cherry picked from commit 54fd455) Co-authored-by: Alex H <1884912+lajarre@users.noreply.github.com>
(cherry picked from commit 55f41e4) Co-authored-by: Andre Delfino <adelfino@gmail.com>
select() calls are retried on EINTR (per PEP 475). However, if a timeout was provided and the deadline has passed after running the signal handlers, rlist, wlist and xlist should be cleared since select(2) left them unmodified. (cherry picked from commit 7f52415) Co-authored-by: Oran Avraham <252748+oranav@users.noreply.github.com>
) Add a missing word `as` in `as well as an`. Linkify `threading.Thread`.. (cherry picked from commit 40a61da) Co-authored-by: Matt Wheeler <m@funkyhat.org>
Moreover, "python3 -m test test_eintr -v" now avoids redirecting stdout/stderr to a pipe, the child process inherits stdout/stderr from the parent. (cherry picked from commit aa8ae90) Co-authored-by: Victor Stinner <vstinner@redhat.com>
Commits on Dec 06, 2018
Cherry-picked from 6ea9d54.
Join 3 pools in these tests: * test.test_multiprocessing_spawn.WithProcessesTestPool.test_context * test.test_multiprocessing_spawn.WithProcessesTestPool.test_traceback (cherry picked from commit 388c8c2) Co-authored-by: Victor Stinner <vstinner@redhat.com>
(cherry picked from commit 0644b33) Co-authored-by: Victor Stinner <vstinner@redhat.com>
(cherry picked from commit c9566b8) Co-authored-by: Andre Delfino <adelfino@gmail.com>
Commits on Dec 07, 2018
Commits on Dec 08, 2018
…1034) * tests: Further validate `wraps` functionality in `unittest.mock.Mock` Add more tests to validate how `wraps` interacts with other features of mocks. * Don't call the wrapped object if `side_effect` is set When a object is wrapped using `Mock(wraps=...)`, if an user sets a `side_effect` in one of their methods, return the value of `side_effect` and don't call the original object. * Refactor what to be called on `mock_call` When a `Mock` is called, it should return looking up in the following order: `side_effect`, `return_value`, `wraps`. If any of the first two return `mock.DEFAULT`, lookup in the next option. It makes no sense to check for `wraps` returning default, as it is supposed to be the original implementation and there is nothing to fallback to. (cherry picked from commit f05df0a) Co-authored-by: Mario Corchero <mariocj89@gmail.com>
…H-11033) In _localemodule.c and selectmodule.c, remove dead code that would cause double decrefs if run. In addition, replace PyList_SetItem() with PyList_SET_ITEM() in cases where a new list is populated and there is no possibility of an error. In addition, check if the list changed size in the loop in array_array_fromlist(). (cherry picked from commit 99d56b5) Co-authored-by: Zackery Spytz <zspytz@gmail.com>
Commits on Dec 09, 2018
(cherry picked from commit 2db96ae) Co-authored-by: Julien Palard <julien@palard.fr>
(cherry picked from commit ac218bc) Co-authored-by: Ned Deily <nad@python.org>
.o generated by clang in LTO mode actually are LLVM bitcode files, which leads to a few errors during configure/build step: - add lto flags to the BASECFLAGS instead of CFLAGS, as CFLAGS are used to build autoconf test case, and some are not compatible with clang LTO (they assume binary in the .o, not bitcode) - force llvm-ar instead of ar, as ar is not aware of .o files generated by clang -flto (cherry picked from commit 5ad36f9) Co-authored-by: serge-sans-paille <serge.guelton@telecom-bretagne.eu>
When using link time optimizations, the -flto flag is passed to BASECFLAGS, which makes it propagate to distutils. Those flags should be reserved for the interpreter and the stdlib extension modules only, thus moving those flags to CFLAGS_NODIST. (cherry picked from commit f92c7aa) Co-authored-by: stratakis <cstratak@redhat.com>
Commits on Dec 10, 2018
…11067) Fix xml.dom.minidom cloneNode() on a document with an entity: pass the correct arguments to the user data handler of an entity (fix an old copy/paste mistake). Bug spotted and fix proposed by Charalampos Stratakis, initial reproducer written by Petr Viktorin. Co-Authored-By: Charalampos Stratakis <cstratak@redhat.com> Co-Authored-By: Petr Viktorin <encukou@gmail.com> (cherry picked from commit 8e04186)
The length check for AF_ALG salg_name and salg_type had a off-by-one error. The code assumed that both values are not necessarily NULL terminated. However the Kernel code for alg_bind() ensures that the last byte of both strings are NULL terminated. Signed-off-by: Christian Heimes <christian@python.org> (cherry picked from commit 2eb6ad8)
Include <pyconfig.h> ealier in Modules/expat/xmltok.c to define properly _POSIX_C_SOURCE. Python defines _POSIX_C_SOURCE as 200809L, whereas <features.h> (included indirectly by <string.h>) defines _POSIX_C_SOURCE as 199506L. (cherry picked from commit cf24735) Co-authored-by: Victor Stinner <vstinner@redhat.com>
(cherry picked from commit b6ef6f6) Co-authored-by: Victor Stinner <vstinner@redhat.com>
(cherry picked from commit de9e9b4) Co-authored-by: Andre Delfino <adelfino@gmail.com>
Commits on Dec 11, 2018
…st.mock tests (GH-8520) (GH-11032) (cherry picked from commit 3cf7438) Co-authored-by: Anirudha Bose <ani07nov@gmail.com> https://bugs.python.org/issue33747
Commits on Dec 14, 2018
Commits on Dec 20, 2018
(cherry picked from commit 0854b92)
) (GH-11265) When compiling 3rd party C extensions, the linker flags used by the compiler for the interpreter and the stdlib modules, will get leaked into distutils. In order to avoid that, the PY_CORE_LDFLAGS and PY_LDFLAGS_NODIST are introduced to keep those flags separated. (cherry picked from commit cf10a75)
Commits on Dec 23, 2018
) `BLDSHARED` needs to have both `LDFLAGS` and `LDFLAGS_NODIST`, not just `LDFLAGS_NODIST`; `PY_CORE_LDFLAGS` provides both. For example, as it stands now with just `LDFLAGS_NODIST`, macOS universal builds are broken as the necessary `-arch` flags are no longer passed to the standard library extension module link step from `setup.py` resulting in extension modules being single architecture only. https://bugs.python.org/issue35257 (cherry picked from commit 44a3ee0) Co-authored-by: Ned Deily <nad@python.org>
Commits on Dec 24, 2018
Commits on Jan 02, 2019
Commits on Jan 07, 2019
Commits on Jan 09, 2019
Commits on Jan 10, 2019
Commits on Jan 16, 2019
Fix a NULL pointer deref in ssl module. The cert parser did not handle CRL distribution points with empty DP or URI correctly. A malicious or buggy certificate can result into segfault. Signed-off-by: Christian Heimes <christian@python.org> https://bugs.python.org/issue35746 (cherry picked from commit a37f524) Co-authored-by: Christian Heimes <christian@python.org>
Commits on Jan 18, 2019
…asyncio (GH-11337) (GH-11348) There is a race condition regarding signal delivery in test_signal_handling_args for test_asyncio.test_events.KqueueEventLoopTests. The signal can be received at any moment outside the time window provided in the test. The fix is to wait for the signal to be received instead with a bigger timeout. (cherry picked from commit 5471420) Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
…GH-11588) While the introduction of ModuleNotFoundError was fully backwards compatible on the import API consumer side, folks providing alternative implementations of `__import__` need to make an update to be forward compatible with clients that start relying on the new subclass. https://bugs.python.org/issue35486 (cherry picked from commit cee29b4) Co-authored-by: Nick Coghlan <ncoghlan@gmail.com>
Commits on Feb 10, 2019
Commits on Feb 16, 2019
Commits on Feb 24, 2019
Commits on Feb 27, 2019
Commits on Mar 10, 2019
…0258) (GH-12260) Don't send cookies of domain A without Domain attribute to domain B when domain A is a suffix match of domain B while using a cookiejar with `http.cookiejar.DefaultCookiePolicy` policy. Patch by Karthikeyan Singaravelan. (cherry picked from commit ca7fe50) Co-authored-by: Xtreak <tir.karthi@gmail.com>
Commits on Mar 12, 2019
Commits on Mar 18, 2019
Commits on Mar 20, 2019
Commits on Apr 29, 2019
… (GH-13014) Under some conditions the earlier fix for bpo-18075, "Infinite recursion tests triggering a segfault on Mac OS X", now causes failures on macOS when attempting to change stack limit with resource.setrlimit resource.RLIMIT_STACK, like regrtest does when running the test suite. The reverted change had specified a non-default stack size when linking the python executable on macOS. As of macOS 10.14.4, the previous code causes a hard failure when running tests, although similar failures had been seen under some conditions under some earlier systems. For now, revert the original change and resume using the default stack size when linking the interpreter. (cherry picked from commit 883dfc6) Co-authored-by: Ned Deily <nad@python.org>
Commits on May 02, 2019
Commits on May 08, 2019
Disallow control chars in http URLs in urllib.urlopen. This addresses a potential security problem for applications that do not sanity check their URLs where http request headers could be injected. Disable https related urllib tests on a build without ssl (GH-13032) These tests require an SSL enabled build. Skip these tests when python is built without SSL to fix test failures. Use http.client.InvalidURL instead of ValueError as the new error case's exception. (GH-13044) Co-Authored-By: Miro Hrončok <miro@hroncok.cz>
Commits on May 29, 2019
…or old TLS (GH-13124) (GH-13252) * [3.6] bpo-35925: Skip SSL tests that fail due to weak external certs. (GH-13124) Modern Linux distros such as Debian Buster have default OpenSSL system configurations that reject connections to servers with weak certificates by default. This causes our test suite run with external networking resources enabled to skip these tests when they encounter such a failure. Fixing the network servers is a separate issue.. (cherry picked from commit 2cc0223) Co-authored-by: Gregory P. Smith <greg@krypto.org> * Also skip ssl tests that fail when the system rejects TLSv1. * Remove the test_httplib change; server was updated. self-signed.pythontest.net was updated so the test_httplib change is no longer necessary.
Commits on Jun 04, 2019
Commits on Jun 09, 2019
Commits on Jun 15, 2019
(cherry picked from commit 46ed90d) Co-authored-by: Julien Palard <julien@palard.fr>
Commits on Jun 16, 2019
Commits on Jun 18, 2019
Commits on Jun 28, 2019
(cherry picked from commit 3b03b09) Co-authored-by: Benjamin Peterson <benjamin@python.org>
Commits on Jun 30, 2019
Commits on Jul 02, 2019
(cherry picked from commit 2cd0792) Co-authored-by: Benjamin Peterson <benjamin@python.org>
… (GH-14549) Under some conditions the earlier fix for bpo-18075, "Infinite recursion tests triggering a segfault on Mac OS X", now causes failures on macOS when attempting to change stack limit with resource.setrlimit resource.RLIMIT_STACK, like regrtest does when running the test suite. The reverted change had specified a non-default stack size when linking the python executable on macOS. As of macOS 10.14.4, the previous code causes a hard failure when running tests, although similar failures had been seen under some conditions under some earlier systems. Reverting the change to the interpreter stack size at link time helped for release builds but caused some tests to fail when built --with-pydebug. Try the opposite approach: continue to build the interpreter with an increased stack size on macOS and remove the failing setrlimit call in regrtest initialization. This will definitely avoid the resource.RLIMIT_STACK error and should have no, or fewer, side effects. (cherry picked from commit 5bbbc73) Co-authored-by: Ned Deily <nad@python.org>
Commits on Jul 08, 2019
Also fix a name misspelling. Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Commits on Jul 21, 2019
As far as I can tell, this infinite loop would be triggered if: 1. The value being folded contains a single word (no spaces) longer than max_line_length 2. The max_line_length is shorter than the encoding's name + 9 characters. bpo-36564: https://bugs.python.org/issue36564 (cherry picked from commit f69d5c6) Co-authored-by: Paul Ganssle <pganssle@users.noreply.github.com>
Commits on Aug 01, 2019
…aders (GH-14794) (GH-14817) Some crafted email header would cause the get_parameter method to run in an infinite loop causing a DoS attack surface when parsing those headers. This patch fixes that by making sure the DQUOTE character is handled to prevent going into an infinite loop. (cherry picked from commit a4a994b) Co-authored-by: Abhilash Raj <maxking@users.noreply.github.com>
Commits on Aug 09, 2019
Before: >>> email.message_from_string('From: a@malicious.org@important.com', policy=email.policy.default)['from'].addresses (Address(display_name='', username='a', domain='malicious.org'),) >>> parseaddr('a@malicious.org@important.com') ('', 'a@malicious.org') After: >>> email.message_from_string('From: a@malicious.org@important.com', policy=email.policy.default)['from'].addresses (Address(display_name='', username='', domain=''),) >>> parseaddr('a@malicious.org@important.com') ('', 'a@') https://bugs.python.org/issue34155 (cherry picked from commit 8cb65d1) Co-authored-by: jpic <jpic@users.noreply.github.com>
Commits on Aug 24, 2019
Commits on Sep 26, 2019
…6410) Fixes CVE-2019-15903. See full changelog at https://github.com/libexpat/libexpat/blob/R_2_2_8/expat/Changes.. (cherry picked from commit 52b9408)
Commits on Sep 28, 2019
Commits on Oct 14, 2019
Commits on Oct 15, 2019
(cherry picked from commit 3f36043) Co-authored-by: Ned Deily <nad@python.org>
Commits on Oct 23, 2019
(cherry picked from commit 01659ca) Co-authored-by: Ned Deily <nad@python.org>
Commits on Nov 22, 2019
The regex http.cookiejar.LOOSE_HTTP_DATE_RE was vulnerable to regular expression denial of service (REDoS). LOOSE_HTTP_DATE_RE.match is called when using http.cookiejar.CookieJar to parse Set-Cookie headers returned by a server. Processing a response from a malicious HTTP server can lead to extreme CPU usage and execution will be blocked for a long time. The regex contained multiple overlapping \s* capture groups. Ignoring the ?-optional capture groups the regex could be simplified to \d+-\w+-\d+(\s*\s*\s*)$ Therefore, a long sequence of spaces can trigger bad performance. Matching a malicious string such as LOOSE_HTTP_DATE_RE.match("1-c-1" + (" " * 2000) + "!") caused catastrophic backtracking. The fix removes ambiguity about which \s* should match a particular space. You can create a malicious server which responds with Set-Cookie headers to attack all python programs which access it e.g. from http.server import BaseHTTPRequestHandler, HTTPServer def make_set_cookie_value(n_spaces): spaces = " " * n_spaces expiry = f"1-c-1{spaces}!" return f"b;Expires={expiry}" class Handler(BaseHTTPRequestHandler): def do_GET(self): self.log_request(204) self.send_response_only(204) GH- Don't bother sending Server and Date n_spaces = ( int(self.path[1:]) GH- Can GET e.g. /100 to test shorter sequences if len(self.path) > 1 else 65506 GH- Max header line length 65536 ) value = make_set_cookie_value(n_spaces) for i in range(99): GH- Not necessary, but we can have up to 100 header lines self.send_header("Set-Cookie", value) self.end_headers() if __name__ == "__main__": HTTPServer(("", 44020), Handler).serve_forever() This server returns 99 Set-Cookie headers. Each has 65506 spaces. Extracting the cookies will pretty much never complete. Vulnerable client using the example at the bottom of https://docs.python.org/3/library/http.cookiejar.html : import http.cookiejar, urllib.request cj = http.cookiejar.CookieJar() opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) r = opener.open("http://localhost:44020/") The popular requests library was also vulnerable without any additional options (as it uses http.cookiejar by default): import requests requests.get("http://localhost:44020/") * Regression test for http.cookiejar REDoS If we regress, this test will take a very long time. * Improve performance of http.cookiejar.ISO_DATE_RE A string like "444444" + (" " * 2000) + "A" could cause poor performance due to the 2 overlapping \s* groups, although this is not as serious as the REDoS in LOOSE_HTTP_DATE_RE was. (cherry picked from commit 1b779bf) Co-authored-by: bcaller <bcaller@users.noreply.github.com>
Commits on Dec 02, 2019
Commits on Dec 11, 2019
Commits on Dec 12, 2019
Commits on Dec 16, 2019
Commits on Dec 17, 2019
Commits on Jan 03, 2020
Commits on Jan 07, 2020
Commits on Jan 23, 2020
Unified
Split
Showing
1,425 changed files
with
102,618 additions
and 41,635 deletions.
@@ -0,0 +1,136 @@ | ||
variables: | ||
manylinux: false | ||
coverage: false | ||
|
||
jobs: | ||
- job: Prebuild | ||
displayName: Pre-build checks | ||
|
||
pool: | ||
vmImage: ubuntu-16.04 | ||
|
||
steps: | ||
- template: ./prebuild-checks.yml | ||
|
||
|
||
- job: Docs_PR | ||
displayName: Docs PR | ||
dependsOn: Prebuild | ||
condition: and(succeeded(), eq(dependencies.Prebuild.outputs['docs.run'], 'true')) | ||
|
||
pool: | ||
vmImage: ubuntu-16.04 | ||
|
||
steps: | ||
- template: ./docs-steps.yml | ||
parameters: | ||
upload: true | ||
|
||
|
||
- job: macOS_CI_Tests | ||
displayName: macOS CI Tests | ||
dependsOn: Prebuild | ||
condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true')) | ||
|
||
variables: | ||
testRunTitle: '$(build.sourceBranchName)-macos' | ||
testRunPlatform: macos | ||
|
||
pool: | ||
vmImage: xcode9-macos10.13 | ||
|
||
steps: | ||
- template: ./macos-steps.yml | ||
|
||
|
||
- job: Ubuntu_CI_Tests | ||
displayName: Ubuntu CI Tests | ||
dependsOn: Prebuild | ||
condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true')) | ||
|
||
pool: | ||
vmImage: ubuntu-16.04 | ||
|
||
variables: | ||
testRunTitle: '$(build.sourceBranchName)-linux' | ||
testRunPlatform: linux | ||
openssl_version: 1.1.0g | ||
|
||
steps: | ||
- template: ./posix-steps.yml | ||
|
||
|
||
- job: ManyLinux1_CI_Tests | ||
displayName: ManyLinux1 CI Tests | ||
dependsOn: Prebuild | ||
condition: | | ||
and( | ||
and( | ||
succeeded(), | ||
eq(variables['manylinux'], 'true') | ||
), | ||
eq(dependencies.Prebuild.outputs['tests.run'], 'true') | ||
) | ||
pool: | ||
vmImage: ubuntu-16.04 | ||
|
||
variables: | ||
testRunTitle: '$(build.sourceBranchName)-manylinux1' | ||
testRunPlatform: manylinux1 | ||
imageName: 'dockcross/manylinux-x64' | ||
|
||
steps: | ||
- template: ./docker-steps.yml | ||
|
||
|
||
- job: Ubuntu_Coverage_CI_Tests | ||
displayName: Ubuntu CI Tests (coverage) | ||
dependsOn: Prebuild | ||
condition: | | ||
and( | ||
and( | ||
succeeded(), | ||
eq(variables['coverage'], 'true') | ||
), | ||
eq(dependencies.Prebuild.outputs['tests.run'], 'true') | ||
) | ||
pool: | ||
vmImage: ubuntu-16.04 | ||
|
||
variables: | ||
testRunTitle: '$(Build.SourceBranchName)-linux-coverage' | ||
testRunPlatform: linux-coverage | ||
openssl_version: 1.1.0g | ||
|
||
steps: | ||
- template: ./posix-steps.yml | ||
parameters: | ||
coverage: true | ||
|
||
|
||
- job: Windows_CI_Tests | ||
displayName: Windows CI Tests | ||
dependsOn: Prebuild | ||
condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true')) | ||
|
||
pool: | ||
vmImage: vs2017-win2016 | ||
|
||
strategy: | ||
matrix: | ||
win32: | ||
arch: win32 | ||
buildOpt: | ||
testRunTitle: '$(Build.SourceBranchName)-win32' | ||
testRunPlatform: win32 | ||
win64: | ||
arch: amd64 | ||
buildOpt: '-p x64' | ||
testRunTitle: '$(Build.SourceBranchName)-win64' | ||
testRunPlatform: win64 | ||
maxParallel: 2 | ||
|
||
steps: | ||
- template: ./windows-steps.yml |
@@ -0,0 +1,76 @@ | ||
steps: | ||
- checkout: self | ||
clean: true | ||
fetchDepth: 5 | ||
|
||
- ${{ if ne(parameters.targetBranch, '') }}: | ||
- script: | | ||
git fetch -q origin ${{ parameters.targetbranch }} | ||
if ! git diff --name-only HEAD $(git merge-base HEAD FETCH_HEAD) | grep -qvE '(\.rst$|^Doc|^Misc)' | ||
then | ||
echo "Only docs were updated, stopping build process." | ||
echo "##vso[task.setvariable variable=DocOnly]true" | ||
exit | ||
fi | ||
displayName: Detect doc-only changes | ||
- task: docker@0 | ||
displayName: 'Configure CPython (debug)' | ||
inputs: | ||
action: 'Run an image' | ||
imageName: $(imageName) | ||
volumes: | | ||
$(build.sourcesDirectory):/src | ||
$(build.binariesDirectory):/build | ||
workDir: '/src' | ||
containerCommand: './configure --with-pydebug' | ||
detached: false | ||
condition: and(succeeded(), ne(variables['DocOnly'], 'true')) | ||
|
||
- task: docker@0 | ||
displayName: 'Build CPython' | ||
inputs: | ||
action: 'Run an image' | ||
imageName: $(imageName) | ||
volumes: | | ||
$(build.sourcesDirectory):/src | ||
$(build.binariesDirectory):/build | ||
workDir: '/src' | ||
containerCommand: 'make -s -j4' | ||
detached: false | ||
condition: and(succeeded(), ne(variables['DocOnly'], 'true')) | ||
|
||
- task: docker@0 | ||
displayName: 'Display build info' | ||
inputs: | ||
action: 'Run an image' | ||
imageName: $(imageName) | ||
volumes: | | ||
$(build.sourcesDirectory):/src | ||
$(build.binariesDirectory):/build | ||
workDir: '/src' | ||
containerCommand: 'make pythoninfo' | ||
detached: false | ||
condition: and(succeeded(), ne(variables['DocOnly'], 'true')) | ||
|
||
- task: docker@0 | ||
displayName: 'Tests' | ||
inputs: | ||
action: 'Run an image' | ||
imageName: $(imageName) | ||
volumes: | | ||
$(build.sourcesDirectory):/src | ||
$(build.binariesDirectory):/build | ||
workDir: '/src' | ||
containerCommand: 'make buildbottest TESTOPTS="-j4 -uall,-cpu --junit-xml=/build/test-results.xml"' | ||
detached: false | ||
condition: and(succeeded(), ne(variables['DocOnly'], 'true')) | ||
|
||
- task: PublishTestResults@2 | ||
displayName: 'Publish Test Results' | ||
inputs: | ||
testResultsFiles: '$(build.binariesDirectory)/test-results.xml' | ||
mergeTestResults: true | ||
testRunTitle: $(testRunTitle) | ||
platform: $(testRunPlatform) | ||
condition: and(succeededOrFailed(), ne(variables['DocOnly'], 'true')) |
@@ -0,0 +1,46 @@ | ||
parameters: | ||
latex: false | ||
upload: false | ||
|
||
steps: | ||
- checkout: self | ||
clean: true | ||
fetchDepth: 5 | ||
|
||
- task: UsePythonVersion@0 | ||
displayName: 'Use Python 3.6 or later' | ||
inputs: | ||
versionSpec: '>=3.6' | ||
|
||
- script: python -m pip install sphinx==1.8.2 blurb python-docs-theme | ||
displayName: 'Install build dependencies' | ||
|
||
- ${{ if ne(parameters.latex, 'true') }}: | ||
- script: make check suspicious html PYTHON=python | ||
workingDirectory: '$(build.sourcesDirectory)/Doc' | ||
displayName: 'Build documentation' | ||
|
||
- ${{ if eq(parameters.latex, 'true') }}: | ||
- script: sudo apt-get update && sudo apt-get install -qy --force-yes texlive-full | ||
displayName: 'Install LaTeX' | ||
|
||
- script: make dist PYTHON=python SPHINXBUILD='python -m sphinx' BLURB='python -m blurb' | ||
workingDirectory: '$(build.sourcesDirectory)/Doc' | ||
displayName: 'Build documentation' | ||
|
||
- ${{ if eq(parameters.upload, 'true') }}: | ||
- task: PublishBuildArtifacts@1 | ||
displayName: 'Publish docs' | ||
|
||
inputs: | ||
PathToPublish: '$(build.sourcesDirectory)/Doc/build' | ||
ArtifactName: docs | ||
publishLocation: Container | ||
|
||
- ${{ if eq(parameters.latex, 'true') }}: | ||
- task: PublishBuildArtifacts@1 | ||
displayName: 'Publish dist' | ||
inputs: | ||
PathToPublish: '$(build.sourcesDirectory)/Doc/dist' | ||
ArtifactName: docs_dist | ||
publishLocation: Container |
@@ -0,0 +1,25 @@ | ||
steps: | ||
- checkout: self | ||
clean: true | ||
fetchDepth: 5 | ||
|
||
- script: ./configure --with-pydebug --with-openssl=/usr/local/opt/openssl --prefix=/opt/python-azdev | ||
displayName: 'Configure CPython (debug)' | ||
|
||
- script: make -s -j4 | ||
displayName: 'Build CPython' | ||
|
||
- script: make pythoninfo | ||
displayName: 'Display build info' | ||
|
||
- script: make buildbottest TESTOPTS="-j4 -uall,-cpu --junit-xml=$(build.binariesDirectory)/test-results.xml" | ||
displayName: 'Tests' | ||
|
||
- task: PublishTestResults@2 | ||
displayName: 'Publish Test Results' | ||
inputs: | ||
testResultsFiles: '$(build.binariesDirectory)/test-results.xml' | ||
mergeTestResults: true | ||
testRunTitle: $(testRunTitle) | ||
platform: $(testRunPlatform) | ||
condition: succeededOrFailed() |
@@ -0,0 +1,26 @@ | ||
sudo apt-get update | ||
|
||
sudo apt-get -yq install \ | ||
build-essential \ | ||
zlib1g-dev \ | ||
libbz2-dev \ | ||
liblzma-dev \ | ||
libncurses5-dev \ | ||
libreadline6-dev \ | ||
libsqlite3-dev \ | ||
libssl-dev \ | ||
libgdbm-dev \ | ||
tk-dev \ | ||
lzma \ | ||
lzma-dev \ | ||
liblzma-dev \ | ||
libffi-dev \ | ||
uuid-dev \ | ||
xvfb | ||
|
||
if [ ! -z "$1" ] | ||
then | ||
echo ##vso[task.prependpath]$PWD/multissl/openssl/$1 | ||
echo ##vso[task.setvariable variable=OPENSSL_DIR]$PWD/multissl/openssl/$1 | ||
python3 Tools/ssl/multissltests.py --steps=library --base-directory $PWD/multissl --openssl $1 --system Linux | ||
fi |
@@ -0,0 +1,63 @@ | ||
parameters: | ||
coverage: false | ||
|
||
steps: | ||
- checkout: self | ||
clean: true | ||
fetchDepth: 5 | ||
|
||
- script: ./.azure-pipelines/posix-deps.sh $(openssl_version) | ||
displayName: 'Install dependencies' | ||
|
||
- script: ./configure --with-pydebug | ||
displayName: 'Configure CPython (debug)' | ||
|
||
- script: make -s -j4 | ||
displayName: 'Build CPython' | ||
|
||
- ${{ if eq(parameters.coverage, 'true') }}: | ||
- script: ./python -m venv venv && ./venv/bin/python -m pip install -U coverage | ||
displayName: 'Set up virtual environment' | ||
|
||
- script: ./venv/bin/python -m test.pythoninfo | ||
displayName: 'Display build info' | ||
|
||
- script: | | ||
xvfb-run ./venv/bin/python -m coverage run --pylib -m test \ | ||
--fail-env-changed \ | ||
-uall,-cpu \ | ||
--junit-xml=$(build.binariesDirectory)/test-results.xml" \ | ||
-x test_multiprocessing_fork \ | ||
-x test_multiprocessing_forkserver \ | ||
-x test_multiprocessing_spawn \ | ||
-x test_concurrent_futures | ||
displayName: 'Tests with coverage' | ||
- script: ./venv/bin/python -m coverage xml | ||
displayName: 'Generate coverage.xml' | ||
|
||
- script: source ./venv/bin/activate && bash <(curl -s https://codecov.io/bash) | ||
displayName: 'Publish code coverage results' | ||
|
||
|
||
- ${{ if ne(parameters.coverage, 'true') }}: | ||
- script: make pythoninfo | ||
displayName: 'Display build info' | ||
|
||
- script: xvfb-run make buildbottest TESTOPTS="-j4 -uall,-cpu --junit-xml=$(build.binariesDirectory)/test-results.xml" | ||
displayName: 'Tests' | ||
|
||
|
||
- script: ./python Tools/scripts/patchcheck.py --travis true | ||
displayName: 'Run patchcheck.py' | ||
condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest')) | ||
|
||
|
||
- task: PublishTestResults@2 | ||
displayName: 'Publish Test Results' | ||
inputs: | ||
testResultsFiles: '$(build.binariesDirectory)/test-results.xml' | ||
mergeTestResults: true | ||
testRunTitle: $(testRunTitle) | ||
platform: $(testRunPlatform) | ||
condition: succeededOrFailed() |

Oops, something went wrong.