Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions CONTRIBUTING.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
Contributing
------------

If you find bugs, errors, omissions or other things that need improvement,
please create an issue or a pull request at
https://github.com/bastibe/PySoundFile/.
Contributions are always welcome!

Testing
^^^^^^^

If you fix a bug, you should add a test that exposes the bug (to avoid future
regressions), if you add a feature, you should add tests for it as well.

To run the tests, use::

python setup.py test

This uses py.test_; if you haven't installed it already, it will be downloaded
and installed for you.

.. _py.test: http://pytest.org/

.. note:: There is a `known problem`_ that prohibits the use of file
descriptors on Windows if the libsndfile DLL was compiled with a different
compiler than the Python interpreter.
Unfortunately, this is typically the case if the packaged DLLs are used.
To skip the tests which utilize file descriptors, use::

python setup.py test --pytest-args="-knot\ fd"

.. _known problem: http://www.mega-nerd.com/libsndfile/api.html#open_fd

Coverage
^^^^^^^^

If you want to measure code coverage, you can use coverage.py_.
Just install it with::

pip install coverage --user

... and run it with::

coverage run --source soundfile.py -m py.test
coverage html

The resulting HTML files will be written to the ``htmlcov/`` directory.

You can even check `branch coverage`_::

coverage run --branch --source soundfile.py -m py.test
coverage html

.. _coverage.py: http://nedbatchelder.com/code/coverage/
.. _branch coverage: http://nedbatchelder.com/code/coverage/branch.html

Documentation
^^^^^^^^^^^^^

If you make changes to the documentation, you can re-create the HTML pages
on your local system using Sphinx_.

.. _Sphinx: http://sphinx-doc.org/

You can install it and a few other necessary packages with::

pip install -r doc/requirements.txt --user

To create the HTML pages, use::

python setup.py build_sphinx

The generated files will be available in the directory ``build/sphinx/html/``.
2 changes: 2 additions & 0 deletions doc/index.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
.. include:: ../README.rst

.. include:: ../CONTRIBUTING.rst

API Documentation
=================

Expand Down
9 changes: 7 additions & 2 deletions tests/test_pysoundfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,11 @@ def file_obj_stereo_rplus(request):
return _file_copy(request, filename_stereo, os.O_RDWR, 'r+b')


@pytest.fixture(params=['obj'])
def file_obj_w(request):
return _file_new(request, os.O_CREAT | os.O_WRONLY, 'wb')


@pytest.fixture(params=open_variants)
def file_wplus(request):
return _file_new(request, os.O_CREAT | os.O_RDWR, 'w+b')
Expand Down Expand Up @@ -484,8 +489,8 @@ def test_virtual_io_readonly(file_obj_stereo_rplus, readmethod):
assert np.all(data == data_stereo)


def test_virtual_io_writeonly(file_obj_stereo_rplus):
limitedfile = LimitedFile(file_obj_stereo_rplus, ['seek', 'tell', 'write'])
def test_virtual_io_writeonly(file_obj_w):
limitedfile = LimitedFile(file_obj_w, ['seek', 'tell', 'write'])
sf.write([0.5], limitedfile, 48000, format='WAV')
data, fs = sf.read(filename_new)
assert fs == 48000
Expand Down