diff options
author | Paul Healy <lmiphay@gmail.com> | 2018-07-13 22:24:59 +0100 |
---|---|---|
committer | Paul Healy <lmiphay@gmail.com> | 2018-07-13 22:24:59 +0100 |
commit | 3cfec0912c3e8b9b47d80407eeb4f1726a097348 (patch) | |
tree | 399afc1fb9f6c3f8df80ba361ed2c7e6168acabf /dev-python | |
parent | add ebuild for preview fs (diff) | |
download | lmiphay-3cfec0912c3e8b9b47d80407eeb4f1726a097348.tar.gz lmiphay-3cfec0912c3e8b9b47d80407eeb4f1726a097348.tar.bz2 lmiphay-3cfec0912c3e8b9b47d80407eeb4f1726a097348.zip |
revbump invoke
Diffstat (limited to 'dev-python')
-rw-r--r-- | dev-python/invoke/Manifest | 3 | ||||
-rw-r--r-- | dev-python/invoke/files/capture-buffer-size.1.1.0.patch | 105 | ||||
-rw-r--r-- | dev-python/invoke/invoke-1.1.0.ebuild | 49 |
3 files changed, 157 insertions, 0 deletions
diff --git a/dev-python/invoke/Manifest b/dev-python/invoke/Manifest index ad1ae87..edb51ef 100644 --- a/dev-python/invoke/Manifest +++ b/dev-python/invoke/Manifest @@ -1,3 +1,4 @@ +AUX capture-buffer-size.1.1.0.patch 4020 BLAKE2B d25c10474c015f8f3c8929621437e6885366ee6b5c1fa061b800a70086a8e44a9d12aea3e2ec2bd2dd0db89bf426380adf9b935a3a282945704711941f8897d2 SHA512 fb53a0f5f5e209b813e48dd5a5f8d46ffaa2979d2dece2022eab094a5a2878983bf80b971aebf10851fed89e7372618632a9f1de244f0096dcbad636e70a227b AUX capture-buffer-size.patch 3076 BLAKE2B e5eec1c146553a10b1db16047b6d97b036cbdb4717d04ef8d49850a24013b8acdfd8d2c07a6efed9a3bcf5370c5aedeef1b33c17af368751adf7bb4bf406d4af SHA512 1da931df37a9b7d99d203946b73e8e96c1c41c7e762352ac9e3b589cc3740f4f07466ce59f811b489c79123f4eca82ed4ce8a9aa3aa057aaf4c1caad1ca1ba88 AUX encode-fallback.0.20.1.patch 599 BLAKE2B dd3978902c7ad59af22fa6de9cbd6f21e249de3fa8d9ba773199fb43ef3c2e48691cc50ba7985a77c82cf3961f1e82ade634e84378c13183d25c7c851e8033dc SHA512 25001cf1e6b53bcf12719d001f1347050d759caf32ed8b7991f51e1fe8f9baee15c64252e0e90870eaddab2c8db8ffa45ad42afc135fc0245348f03b20b3daea AUX encode-fallback.patch 571 BLAKE2B de83a858ee92628d9e89b9bd20407c38a65f97eb420e5442b1ecf176521660731aa854b860a656e68e87612cd38e981d16ab80f7c95afe59a0cd99980a31f34d SHA512 1db66877a10b97156f751e65f89881988ef09b04ef6634da3748e2d9cbabeaf2ee5404676d17905635a93574cf66c2645835d94218a08fa84b599dfcdf746ea4 @@ -9,8 +10,10 @@ DIST invoke-0.22.0.tar.gz 304039 BLAKE2B bfb1bf8b7bb772049f6636ff7126441b4580155 DIST invoke-0.22.1.tar.gz 304850 BLAKE2B ec5b92ba790305fbbe80bd86d45d387c97ed9142dce30f38dee86a910952871105e2fbf2703ec2b1b45e16e4b8d923ae6757f50709875afbe3c5f8e095891f8e SHA512 52854cc74443919c3bd12966d3ea6b6e10846b84f037caf6768faa1bc7bdb9a905df2bf0567b096632d124bed24499e0dffa12872c7060c7615009731eb6241f DIST invoke-0.23.0.tar.gz 319077 BLAKE2B baf161f18dc4da84708070c31642f9e37288697c7ea66f68a36c8d6ae202ac474f5583140b5e210196677b57e93e40ea406c36c4a24d954e723bb487b8be3801 SHA512 38960c390407ccbb5d6546a757127ed70cde1960e60c9af1ed447bb09999a484933453fc9c5d54886a115927125dadea7c20a0f28c0a51a0b50180c2e16adce4 DIST invoke-1.0.0.tar.gz 318080 BLAKE2B 86b0bcb2d6a23f2172b6663cf6677768bdcbc756e1094124f6a7782bf79326aa97be092cb72c3d00de811a0ab38a67136b4ffe959417c879f4290e2d5b663cbd SHA512 90fc066e53e215f4640b22acf58987bc4b7d9b46efb54bae805738881f93e283a1be44cbbb8aa8edf0552a399be3162ea46ba8c2b96a4158c3fbc3b456bd9519 +DIST invoke-1.1.0.tar.gz 321183 BLAKE2B 5975684c337016e0f90d0d4df629e29afdda98f265415ca26c7fb1799dd5951540ce2ec5ebbb14f8d5a7bd3cb0be018adac306622958f2802e6095e75902e9a7 SHA512 1859138d488f3971a017d16651c5ebd849c0b421633cd8e08f81dcf5c6bcedc13238aad71bb1a00e40a04baea320e56f48ff9f3a272de403cc212dc2503a0536 EBUILD invoke-0.22.0.ebuild 1099 BLAKE2B 536f11db2c29aeac4b9306ca3e24f6944632a21ab8348162e3e85d0440b9ffc95aa81f356ae4b607fa076b37d745969a68df595546248e3b5087a81f36871c5d SHA512 f63236a935a7e5785839b02b459c15430e43212e8aa15219f9228bd66ef1edc4c48aaabbe74d7e515319779b2ead04723e960ff14bb040e6bd31b8902e03ce0c EBUILD invoke-0.22.1.ebuild 1056 BLAKE2B ee1b569a205e40708f14deac94dc76a4a320f2ff39072d14c305555b53da2c8fdf8b884b89c3dc017ced6c22a33ae8097a4df06246d808a4e05693bb2ddf1fd8 SHA512 2f3aa153ca5506e0aa9f8ed60dc37946b880925b94d7a6ed52dd6e367194129dfd9c4a300f6ad98e99c69131df6131a02fd3982c174a5efe341751832f808006 EBUILD invoke-0.23.0.ebuild 1056 BLAKE2B ee1b569a205e40708f14deac94dc76a4a320f2ff39072d14c305555b53da2c8fdf8b884b89c3dc017ced6c22a33ae8097a4df06246d808a4e05693bb2ddf1fd8 SHA512 2f3aa153ca5506e0aa9f8ed60dc37946b880925b94d7a6ed52dd6e367194129dfd9c4a300f6ad98e99c69131df6131a02fd3982c174a5efe341751832f808006 EBUILD invoke-1.0.0.ebuild 1056 BLAKE2B ee1b569a205e40708f14deac94dc76a4a320f2ff39072d14c305555b53da2c8fdf8b884b89c3dc017ced6c22a33ae8097a4df06246d808a4e05693bb2ddf1fd8 SHA512 2f3aa153ca5506e0aa9f8ed60dc37946b880925b94d7a6ed52dd6e367194129dfd9c4a300f6ad98e99c69131df6131a02fd3982c174a5efe341751832f808006 +EBUILD invoke-1.1.0.ebuild 1062 BLAKE2B f2693574274e8d2bd161282302c5c1db1e2ae9c9e9161f5365c7c976e22357e9829118742deaf6a47f50cd7be4ef7b841da694f6c12c06322db2ba960f544da1 SHA512 aa1ed88a582b7a046886a1fe8a32d6673366db4130fad47f787172e33255834d351b5570a059a2f4abe2351968b03d35213f668aaa734132eea47a5a07618102 EBUILD invoke-9999.ebuild 1023 BLAKE2B 551feb35c1d5c025c4b368da85d3ede32b1131a76c79b0f06ff7f52f09e77c5b768996de370c87cf92714441c94ccee42bbc2dd069c593346e269bc1e237b397 SHA512 0d25c0de933081f9e46f46e93a660071431f3b88a57ceb9ba03966af5588eeaf3b6978e0cda914955a95e209aa5e5b604563bc9ed7e5b121349ded87f86884c4 diff --git a/dev-python/invoke/files/capture-buffer-size.1.1.0.patch b/dev-python/invoke/files/capture-buffer-size.1.1.0.patch new file mode 100644 index 0000000..e4b85ee --- /dev/null +++ b/dev-python/invoke/files/capture-buffer-size.1.1.0.patch @@ -0,0 +1,105 @@ +diff --git a/invoke/config.py b/invoke/config.py +index e32d27a1..0f365464 100644 +--- a/invoke/config.py ++++ b/invoke/config.py +@@ -482,6 +482,7 @@ class Config(DataProxy): + "out_stream": None, + "err_stream": None, + "in_stream": None, ++ 'capture_buffer_size': None, + "watchers": [], + "echo_stdin": None, + }, +diff --git a/invoke/runners.py b/invoke/runners.py +index d565b523..7ffc988e 100644 +--- a/invoke/runners.py ++++ b/invoke/runners.py +@@ -7,6 +7,7 @@ from subprocess import Popen, PIPE + import sys + import threading + import time ++from collections import deque + + from .util import six + +@@ -250,6 +251,14 @@ class Runner(object): + When not ``None``, this parameter will override that auto-detection + and force, or disable, echoing. + ++ :param int capture_buffer_size: ++ If set, captured stdout/stderr will be limited to the specified ++ number of characters. The last characters of stdout/stderr ++ will be returned via the ``Result`` object. ++ ++ By default (when ``None``), there is no limit on the captured ++ stdout/stderr. ++ + :returns: + `Result`, or a subclass thereof. + +@@ -286,7 +295,7 @@ class Runner(object): + # Arrive at final encoding if neither config nor kwargs had one + self.encoding = opts["encoding"] or self.default_encoding() + # Set up IO thread parameters (format - body_func: {kwargs}) +- stdout, stderr = [], [] ++ stdout, stderr = deque(maxlen=opts['capture_buffer_size']), deque(maxlen=opts['capture_buffer_size']) + thread_args = { + self.handle_stdout: { + "buffer_": stdout, +@@ -437,6 +446,9 @@ class Runner(object): + in_stream = opts["in_stream"] + if in_stream is None: + in_stream = sys.stdin ++ if opts['capture_buffer_size']: ++ if opts['capture_buffer_size'] < len(self.context.config.sudo.prompt): ++ raise ValueError('capture_buffer_size is too short to match prompt') + # Determine pty or no + self.using_pty = self.should_use_pty(opts["pty"], opts["fallback"]) + if opts["watchers"]: +@@ -539,7 +551,7 @@ class Runner(object): + # result after execution completes. + # NOTE: this is threadsafe insofar as no reading occurs until after + # the thread is join()'d. +- buffer_.append(data) ++ buffer_.extend(data) + # Run our specific buffer through the autoresponder framework + self.respond(buffer_) + +diff --git a/sites/www/changelog.rst b/sites/www/changelog.rst +index c07ceff0..4c55612d 100644 +--- a/sites/www/changelog.rst ++++ b/sites/www/changelog.rst +@@ -2,6 +2,7 @@ + Changelog + ========= + ++* :feature:`344` Implement stdout/stderr capture limiting. Credit: Paul Healy. + - :release:`1.1.0 <2018-07-12>` + - :release:`1.0.1 <2018-07-12>` + - :feature:`-` Enhance `~invoke.tasks.Call` with a new method +diff --git a/tests/runners.py b/tests/runners.py +index 2ac8ec22..a192cb89 100644 +--- a/tests/runners.py ++++ b/tests/runners.py +@@ -145,6 +145,21 @@ class Runner_: + assert r.stdout == "stuff" + assert sys.stdout.getvalue() == "" + ++ class capture_buffer_size: ++ @trap ++ def limits_capture(self): ++ runner = self._runner(out='x'*99 + 'y'*40, run={'capture_buffer_size': 40}) ++ eq_(runner.run(_).stdout, 'y'*40) ++ ++ @trap ++ def fails_when_too_small(self): ++ try: ++ self._runner(out='abc', run={'capture_buffer_size': 3}).run(_) ++ except ValueError as e: ++ eq_(str(e), 'capture_buffer_size is too short to match prompt') ++ else: ++ assert False, "Did not raise ValueError too small a buffer" ++ + class pty: + def pty_defaults_to_off(self): + assert self._run(_).pty is False diff --git a/dev-python/invoke/invoke-1.1.0.ebuild b/dev-python/invoke/invoke-1.1.0.ebuild new file mode 100644 index 0000000..2f86817 --- /dev/null +++ b/dev-python/invoke/invoke-1.1.0.ebuild @@ -0,0 +1,49 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +PYTHON_COMPAT=(python2_7 python3_{4,5,6}) + +inherit eutils bash-completion-r1 distutils-r1 + +DESCRIPTION="Pythonic task management & command execution" +HOMEPAGE="http://pyinvoke.org" +SRC_URI="https://github.com/pyinvoke/invoke/archive/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="BSD-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="test" + +RDEPEND=" + ${PYTHON_DEPS} +" +DEPEND=" + test? ( + dev-python/spec[${PYTHON_USEDEP}] + dev-python/mock[${PYTHON_USEDEP}] + dev-python/flake8[${PYTHON_USEDEP}] + ) + dev-python/setuptools[${PYTHON_USEDEP}] + ${RDEPEND} +" + +DOCS="README.rst" +PATCHES=( \ + "${FILESDIR}/loader-sys-path.0.22.0.patch" \ + "${FILESDIR}/encode-fallback.0.20.1.patch" \ + "${FILESDIR}/capture-buffer-size.1.1.0.patch" \ +) + +src_install() { + dodoc ${DOCS} + distutils-r1_src_install + newbashcomp completion/bash "${PN}" + newbashcomp completion/bash inv +} + +src_test() { + flake8 --verbose --config="${S}"/setup.cfg "${S}"/invoke + spec --where="${S}"/tests +} |