Mercurial > hg
view tests/hypothesishelpers.py @ 28796:08a686a4a0a2
hghave: add cvsnt
cvsnt is a maintained commercial fork of cvs
https://en.wikipedia.org/wiki/CVSNT
It is possible to build a version of it from sources (github),
it requires libpcre and libltdl (libtool).
We already have a test that relates to cvsnt:
test-convert-cvsnt-mergepoints.t
cvsnt installs: cvs, cvslockd, cvsnt, cvsscript
I think we should definitely have a check for cvsnt because it makes
the version checks for cvs make a lot more sense.
When I use the version I built, cvs --version says:
"""
Concurrent Versions System (CVSNT) 2.5.05 (Gan) Build 3744 (Suite) (client/server)
CVSNT 2.5.05 (Apr 4 2016) Copyright (c) 2008 March Hare Software Ltd.
see http://www.march-hare.com/cvspro
CVS Copyright (c) 1989-2001 Brian Berliner, david d `zoo' zuhn,
Jeff Polk, and other authors
CVSNT Copyright (c) 1999-2008 Tony Hoyle and others
see http://www.cvsnt.org
Commercial support and training provided by March Hare Software Ltd.
see http://www.march-hare.com/cvspro
CVSNT may be copied only under the terms of the GNU General Public License v2,
a copy of which can be found with the CVS distribution.
The CVSNT Application API is licensed under the terms of the
GNU Library (or Lesser) General Public License.
Specify the --help option for further information about CVS
"""
author | timeless <timeless@mozdev.org> |
---|---|
date | Mon, 04 Apr 2016 06:27:12 +0000 |
parents | 8699c89f3ae9 |
children | 2372284d9457 |
line wrap: on
line source
# Helper module to use the Hypothesis tool in tests # # Copyright 2015 David R. MacIver # # For details see http://hypothesis.readthedocs.org from __future__ import absolute_import, print_function import os import sys import traceback try: # hypothesis 2.x from hypothesis.configuration import set_hypothesis_home_dir from hypothesis import settings except ImportError: # hypothesis 1.x from hypothesis.settings import set_hypothesis_home_dir from hypothesis import Settings as settings import hypothesis.strategies as st from hypothesis import given # hypothesis store data regarding generate example and code set_hypothesis_home_dir(os.path.join( os.getenv('TESTTMP'), ".hypothesis" )) def check(*args, **kwargs): """decorator to make a function a hypothesis test Decorated function are run immediately (to be used doctest style)""" def accept(f): # Workaround for https://github.com/DRMacIver/hypothesis/issues/206 # Fixed in version 1.13 (released 2015 october 29th) f.__module__ = '__anon__' try: with settings(max_examples=2000): given(*args, **kwargs)(f)() except Exception: traceback.print_exc(file=sys.stdout) sys.exit(1) return accept def roundtrips(data, decode, encode): """helper to tests function that must do proper encode/decode roundtripping """ @given(data) def testroundtrips(value): encoded = encode(value) decoded = decode(encoded) if decoded != value: raise ValueError( "Round trip failed: %s(%r) -> %s(%r) -> %r" % ( encode.__name__, value, decode.__name__, encoded, decoded )) try: testroundtrips() except Exception: # heredoc swallow traceback, we work around it traceback.print_exc(file=sys.stdout) raise print("Round trip OK") # strategy for generating bytestring that might be an issue for Mercurial bytestrings = ( st.builds(lambda s, e: s.encode(e), st.text(), st.sampled_from([ 'utf-8', 'utf-16', ]))) | st.binary()