* Issues #23808, #25911: Trying to fix walk tests on Windows.
On Windows a symlink can has the FILE_ATTRIBUTE_DIRECTORY flag.
(cherry picked from commit
388b90f28e029daaf06aae8026b596e2f20a1cd3)
* bpo-30231: Remove skipped test_imaplib tests (#1419) (#2193)
The public cyrus.andrew.cmu.edu IMAP server (port 993) doesn't accept
TLS connection using our self-signed x509 certificate. Remove the two
tests which are already skipped.
(cherry picked from commit
7895a0585b4b6a1c8082d17227307c6ce2c8bb8b)
* Backport CI config from master
* Add .travis.yml for Travis CI
* Add .github/ for AppVeyor and CodeCov.
* Travis CI: remove "make regen-all" check
The regen-all Makefile rule doesn't exist in Python 3.4, only since
Python 3.5 and newer (and 2.7).
* appveyor: replace --slowest with --slow
* Travis CI: remove the GCC coverage job
* Travis CI: remove tzdata resource from regrtest
tzdata resource doesn't exist in Python 3.4.
* Travis CI: remove the doc job
Fixing Sphinx warnings requires to backport huge intrusive changes
like:
- commit
d97b7dc94b19063f0589d401bdc4aaadc7030762
- commit
5c6793394066b012b9674681b0815667938ce4d9
* appveyor: set version to 3.4.6+
* bpo-30730: Fix test_os tests.
Fix test_invalid_cmd() and test_invalid_env(), TypeError is raised on
Python 3.4.
(cherry picked from commit
5e22721e586344b547194f0f7ea67fd425f94e72)
--- /dev/null
+Contributing to Python
+======================
+
+Build Status
+------------
+
+- master
+
+ + `Stable buildbots <http://buildbot.python.org/3.x.stable/>`_
+
+- 3.6
+
+ + `Stable buildbots <http://buildbot.python.org/3.6.stable/>`_
+
+- 3.5
+
+ + `Stable buildbots <http://buildbot.python.org/3.5.stable/>`_
+
+- 2.7
+
+ + `Stable buildbots <http://buildbot.python.org/2.7.stable/>`_
+
+
+Contribution Guidelines
+-----------------------
+Please read the `devguide <https://cpython-devguide.readthedocs.io/>`_ for
+guidance on how to contribute to this project. The documentation covers
+everything from how to build the code to submitting a pull request. There are
+also suggestions on how you can most effectively help the project.
+
+Please be aware that our workflow does deviate slightly from the typical GitHub
+project. Details on how to properly submit a pull request are covered in
+`Lifecycle of a Pull Request <https://cpython-devguide.readthedocs.io/pullrequest.html>`_.
+One key point is to keep comments on GitHub to only those related to the reviewing
+the code in the pull request. All other discussions -- e.g. about the issue being
+fixed -- should happen on bugs.python.org.
+
+If you are making a code contribution or large documentation contribution,
+please feel free to add yourself to the ``Misc/ACKS`` file alphabetically.
+
+
+Code of Conduct
+---------------
+All interactions for this project are covered by the
+`PSF Code of Conduct <https://www.python.org/psf/codeofconduct/>`_. Everyone is
+expected to be open, considerate, and respectful of others no matter their
+position within the project.
--- /dev/null
+version: 3.4.6+.{build}
+clone_depth: 5
+branches:
+ only:
+ - master
+ - /\d\.\d/
+ - buildbot-custom
+build_script:
+- cmd: PCbuild\build.bat -e
+test_script:
+- cmd: PCbuild\rt.bat -q -uall -u-cpu -rwW --slow --timeout=1200 -j0
+
+# Only trigger AppVeyor if actual code or its configuration changes
+only_commits:
+ files:
+ - .github/appveyor.yml
+ - .gitattributes
+ - Grammar/
+ - Include/
+ - Lib/
+ - Modules/
+ - Objects/
+ - PC/
+ - PCBuild/
+ - Parser/
+ - Programs/
+ - Python/
+ - Tools/
--- /dev/null
+language: c
+dist: trusty
+sudo: false
+group: beta
+
+# To cache doc-building dependencies.
+cache: pip
+
+branches:
+ only:
+ - master
+ - /^\d\.\d$/
+
+matrix:
+ fast_finish: true
+ allow_failures:
+ - env: OPTIONAL=true
+ include:
+ - os: linux
+ language: c
+ compiler: clang
+ # gcc also works, but to keep the # of concurrent builds down, we use one C
+ # compiler here and the other to run the coverage build. Clang is preferred
+ # in this instance for its better error messages.
+ env: TESTING=cpython
+ - os: osx
+ language: c
+ compiler: clang
+ # Testing under macOS is optional until testing stability has been demonstrated.
+ env: OPTIONAL=true
+ before_install:
+ - brew install openssl xz
+ - export CPPFLAGS="-I$(brew --prefix openssl)/include"
+ - export LDFLAGS="-L$(brew --prefix openssl)/lib"
+
+# Travis provides only 2 cores, so don't overdo the parallelism and waste memory.
+before_script:
+ - |
+ set -e
+ if ! git diff --name-only $TRAVIS_COMMIT_RANGE | grep -qvE '(\.rst$)|(^Doc)|(^Misc)'
+ then
+ echo "Only docs were updated, stopping build process."
+ exit
+ fi
+ ./configure --with-pydebug
+ make -j4
+
+script:
+ # Using the built Python as patchcheck.py is built around the idea of using
+ # a checkout-build of CPython to know things like what base branch the changes
+ # should be compared against.
+ # Only run on Linux as the check only needs to be run once.
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ./python Tools/scripts/patchcheck.py --travis $TRAVIS_PULL_REQUEST; fi
+ # `-r -w` implicitly provided through `make buildbottest`.
+ - make buildbottest TESTOPTS="-j4 -uall,-cpu"
+
+notifications:
+ email: false
+ irc:
+ channels:
+ # This is set to a secure variable to prevent forks from notifying the
+ # IRC channel whenever they fail a build. This can be removed when travis
+ # implements https://github.com/travis-ci/travis-ci/issues/1094.
+ # The actual value here is: irc.freenode.net#python-dev
+ - secure: "s7kAkpcom2yUJ8XqyjFI0obJmhAGrn1xmoivdaPdgBIA++X47TBp1x4pgDsbEsoalef7bEwa4l07KdT4qa+DOd/c4QxaWom7fbN3BuLVsZuVfODnl79+gYq/TAbGfyH+yDs18DXrUfPgwD7C5aW32ugsqAOd4iWzfGJQ5OrOZzqzGjYdYQUEkJFXgxDEIb4aHvxNDWGO3Po9uKISrhb5saQ0l776yLo1Ur7M4oxl8RTbCdgX0vf5TzPg52BgvZpOgt3DHOUYPeiJLKNjAE6ibg0U95sEvMfHX77nz4aFY4/3UI6FFaRla34rZ+mYKrn0TdxOhera1QOgPmM6HzdO4K44FpfK1DS0Xxk9U9/uApq+cG0bU3W+cVUHDBe5+90lpRBAXHeHCgT7TI8gec614aiT8lEr3+yH8OBRYGzkjNK8E2LJZ/SxnVxDe7aLF6AWcoWLfS6/ziAIBFQ5Nc4U72CT8fGVSkl8ywPiRlvixKdvTODMSZo0jMqlfZSNaAPTsNRx4wu5Uis4qekwe32Fz4aB6KGpsuuVjBi+H6v0RKxNJNGY3JKDiEH2TK0UE2auJ5GvLW48aUVFcQMB7euCWYXlSWVRHh3WLU8QXF29Dw4JduRZqUpOdRgMHU79UHRq+mkE0jAS/nBcS6CvsmxCpTSrfVYuMOu32yt18QQoTyU="
+ on_success: change
+ on_failure: always
+ skip_join: true
_server = self.imap_class(self.host, self.port)
self.check_logincapa(_server)
- def test_logincapa_with_client_certfile(self):
- with transient_internet(self.host):
- _server = self.imap_class(self.host, self.port, certfile=CERTFILE)
- self.check_logincapa(_server)
-
- def test_logincapa_with_client_ssl_context(self):
- with transient_internet(self.host):
- _server = self.imap_class(self.host, self.port, ssl_context=self.create_ssl_context())
- self.check_logincapa(_server)
-
def test_logout(self):
with transient_internet(self.host):
_server = self.imap_class(self.host, self.port)
if support.can_symlink():
os.symlink(os.path.abspath(t2_path), self.link_path)
os.symlink('broken', broken_link_path, True)
- self.sub2_tree = (sub2_path, ["link"], ["broken_link", "tmp3"])
+ if os.path.isdir(broken_link_path):
+ # On Windows a symlink can has the FILE_ATTRIBUTE_DIRECTORY flag.
+ self.sub2_tree = (sub2_path, ["broken_link", "link"], ["tmp3"])
+ else:
+ self.sub2_tree = (sub2_path, ["link"], ["broken_link", "tmp3"])
else:
self.sub2_tree = (sub2_path, [], ["tmp3"])
def test_invalid_cmd(self):
# null character in the command name
cmd = sys.executable + '\0'
- with self.assertRaises(ValueError):
+ with self.assertRaises((ValueError, TypeError)):
subprocess.Popen([cmd, "-c", "pass"])
# null character in the command argument
- with self.assertRaises(ValueError):
+ with self.assertRaises((ValueError, TypeError)):
subprocess.Popen([sys.executable, "-c", "pass#\0"])
def test_invalid_env(self):
# null character in the enviroment variable name
newenv = os.environ.copy()
newenv["FRUIT\0VEGETABLE"] = "cabbage"
- with self.assertRaises(ValueError):
+ with self.assertRaises((ValueError, TypeError)):
subprocess.Popen([sys.executable, "-c", "pass"], env=newenv)
# null character in the enviroment variable value
newenv = os.environ.copy()
newenv["FRUIT"] = "orange\0VEGETABLE=cabbage"
- with self.assertRaises(ValueError):
+ with self.assertRaises((ValueError, TypeError)):
subprocess.Popen([sys.executable, "-c", "pass"], env=newenv)
# equal character in the enviroment variable name