From 9569db373c5139dab577cc88eeb47f734edda5c0 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Mon, 4 Mar 2019 20:54:21 +0200 Subject: gnu: Add python-vcrpy. * gnu/packages/python-check.scm (python-vcrpy): New variable. --- gnu/packages/python-check.scm | 48 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'gnu/packages/python-check.scm') diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm index 2686425b51..58a1022bc2 100644 --- a/gnu/packages/python-check.scm +++ b/gnu/packages/python-check.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019 Ricardo Wurmus ;;; Copyright © 2019 Tobias Geerinckx-Rice +;;; Copyright © 2019 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,6 +23,7 @@ #:use-module (gnu packages check) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) + #:use-module (gnu packages web) #:use-module (guix utils) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) @@ -57,3 +59,49 @@ This package provides seamless integration with coverage.py (and thus pytest, nosetests, etc...) in Python projects.") (license license:expat))) + +(define-public python-vcrpy + (package + (name "python-vcrpy") + (version "2.0.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "vcrpy" version)) + (sha256 + (base32 + "0kws7l3hci1dvjv01nxw3805q9v2mwldw58bgl8s90wqism69gjp")))) + (build-system python-build-system) + (arguments `(#:tests? #f)) ; tests require more packages for python-pytest-httpbin + (propagated-inputs + `(("python-pyyaml" ,python-pyyaml) + ("python-six" ,python-six) + ("python-wrapt" ,python-wrapt) + ("python-yarl" ,python-yarl))) + (native-inputs + `(("python-mock" ,python-mock) + ("python-pytest" ,python-pytest) + ("python-pytest-httpbin" ,python-pytest-httpbin))) + (home-page "https://github.com/kevin1024/vcrpy") + (synopsis "Automatically mock your HTTP interactions") + (description + "VCR.py simplifies and speeds up tests that make HTTP requests. The first +time you run code that is inside a VCR.py context manager or decorated function, +VCR.py records all HTTP interactions that take place through the libraries it +supports and serializes and writes them to a flat file (in yaml format by +default). This flat file is called a cassette. When the relevant piece of code +is executed again, VCR.py will read the serialized requests and responses from +the aforementioned cassette file, and intercept any HTTP requests that it +recognizes from the original test run and return the responses that corresponded +to those requests. This means that the requests will not actually result in +HTTP traffic, which confers several benefits including: +@enumerate +@item The ability to work offline +@item Completely deterministic tests +@item Increased test execution speed +@end enumerate +If the server you are testing against ever changes its API, all you need to do +is delete your existing cassette files, and run your tests again. VCR.py will +detect the absence of a cassette file and once again record all HTTP +interactions, which will update them to correspond to the new API.") + (license license:expat))) -- cgit v1.2.3