aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Healy <lmiphay@gmail.com>2018-07-13 22:24:59 +0100
committerPaul Healy <lmiphay@gmail.com>2018-07-13 22:24:59 +0100
commit3cfec0912c3e8b9b47d80407eeb4f1726a097348 (patch)
tree399afc1fb9f6c3f8df80ba361ed2c7e6168acabf /dev-python
parentadd ebuild for preview fs (diff)
downloadlmiphay-3cfec0912c3e8b9b47d80407eeb4f1726a097348.tar.gz
lmiphay-3cfec0912c3e8b9b47d80407eeb4f1726a097348.tar.bz2
lmiphay-3cfec0912c3e8b9b47d80407eeb4f1726a097348.zip
revbump invoke
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/invoke/Manifest3
-rw-r--r--dev-python/invoke/files/capture-buffer-size.1.1.0.patch105
-rw-r--r--dev-python/invoke/invoke-1.1.0.ebuild49
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
+}