Adds better support to run commands via `docker exec ...` by setting the working directory to be ytdl-sub's working directory.
Thanks @rpatterson for the contribution 😊
98 lines
2.2 KiB
ReStructuredText
98 lines
2.2 KiB
ReStructuredText
Development and Contributing
|
|
============================
|
|
|
|
|
|
Requirements
|
|
------------
|
|
|
|
- python >= 3.10
|
|
- ffmpeg/ffprobe 4.4.5 (test checksums rely on this version)
|
|
- make
|
|
|
|
|
|
Local Install
|
|
-------------
|
|
.. tab-set-code::
|
|
|
|
.. code-block:: shell
|
|
|
|
pip install -e .[test,lint,docs]
|
|
|
|
.. code-block:: zsh
|
|
|
|
pip install -e .\[test,lint,docs\]
|
|
|
|
|
|
Linter
|
|
------
|
|
|
|
All source code contributed must be formatted to our linter specification. Run the
|
|
following to auto-format and check for any issues with your code:
|
|
|
|
.. code-block:: shell
|
|
|
|
make lint
|
|
|
|
|
|
Adding Documentation
|
|
--------------------
|
|
|
|
Docs can be found in ``ytdl-sub/docs/source/``, and are built using the command:
|
|
|
|
|
|
.. code-block:: shell
|
|
:caption:
|
|
Viewable at http://localhost:63342/ytdl-sub/docs/build/html/index.html once built
|
|
|
|
make docs
|
|
|
|
Some of the documentation is built using doc-strings from the python source code. The
|
|
above command will rebuild those as well.
|
|
|
|
|
|
Testing
|
|
-------
|
|
|
|
Tests are written using pytest. Many of them evaluate checksums of output files to
|
|
ensure no unintended changes are introduced to the way ``ytdl-sub`` produces files. This
|
|
checksum can be inaccurate for end-to-end tests, but are reliable for integration tests.
|
|
|
|
If integration tests are failing, ensure...
|
|
|
|
- you're using the correct ffmpeg version
|
|
- you are developing on Linux or Mac (have not tested windows yet)
|
|
- your local ``ytdl-sub`` dependencies are up-to-date
|
|
|
|
|
|
Docker
|
|
------
|
|
|
|
Test changes to the Docker image variants locally:
|
|
|
|
.. code-block:: shell
|
|
|
|
cd ./docker/testing/
|
|
make -j run
|
|
|
|
See ``./docker/testing/docker-compose.yml`` for the Compose services for each image
|
|
variant.
|
|
|
|
|
|
IDE Setup
|
|
---------
|
|
|
|
PyCharm is our preferred IDE. The codebase is simple enough to where it's not required,
|
|
but is highly recommended.
|
|
|
|
TODO: screenshots of configuration
|
|
|
|
|
|
Reproducing a Failing Subscription
|
|
----------------------------------
|
|
|
|
Subscriptions will dump their entire *compiled* yaml at the beginning of exeuction
|
|
:doc:`when using '--log-level debug' <../../debugging>`. This can be copy-pasted into
|
|
the file ``resources/file_fixtures/repro.yaml``.
|
|
|
|
Running the test ``e2e.test_debug_repro.TestReproduce.test_debug_log_repro`` will fully
|
|
reproduce that subscription in order to debug it.
|