Merge pull request #21 from radiorabe/feature/analyzer-on-travis
mostly run analyzer tests on travis
This commit is contained in:
commit
9bac8354b6
62
.travis.yml
62
.travis.yml
|
@ -1,7 +1,14 @@
|
|||
dist: trusty
|
||||
language: php
|
||||
php:
|
||||
- '5.5'
|
||||
- '5.4'
|
||||
# the latest and greatest, has some issues that are excluded below in matrix.allow_failures
|
||||
- 7.1
|
||||
# the 7.0 build demonstrates that everything is basically ok for 7.0, users might want to wait for 7.1 to run it
|
||||
- 7.0
|
||||
# folks who prefer running on 5.x should be using 5.6 in most cases, 5.4 is no in the matrix since noone should use it
|
||||
- 5.6
|
||||
# this is in for centos support, it's still the default on CentOS 7.3 and there were some lang changes after 5.4
|
||||
- 5.4
|
||||
services:
|
||||
- postgresql
|
||||
- rabbitmq
|
||||
|
@ -9,18 +16,60 @@ env:
|
|||
global:
|
||||
- ENVIRONMENT=testing
|
||||
- LIBRETIME_LOG_DIR=/tmp/log/libretime
|
||||
matrix:
|
||||
- PYTHON=false
|
||||
- PYTHON=true
|
||||
matrix:
|
||||
allow_failures:
|
||||
# there are currently some testing issues with DateTime precision on 7.1
|
||||
- env: PYTHON=false
|
||||
php: 7.1
|
||||
exclude:
|
||||
# by excluding all of python we make way to just runu python tests in one seperate instance
|
||||
- env: PYTHON=true
|
||||
include:
|
||||
# using latest to run python on since it will last the longest
|
||||
- php: 7.1
|
||||
env: PYTHON=true
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- silan
|
||||
- liquidsoap
|
||||
- liquidsoap-plugin-mad
|
||||
- liquidsoap-plugin-taglib
|
||||
- liquidsoap-plugin-flac
|
||||
- liquidsoap-plugin-ogg
|
||||
- liquidsoap-plugin-lame
|
||||
- liquidsoap-plugin-faad
|
||||
- liquidsoap-plugin-vorbis
|
||||
- liquidsoap-plugin-opus
|
||||
- python-nose
|
||||
- python-rgain
|
||||
- python-gst-1.0
|
||||
- mp3gain
|
||||
install:
|
||||
- composer install
|
||||
- pip install --user mkdocs
|
||||
- >
|
||||
if [[ "$PYTHON" == false ]]; then
|
||||
composer install
|
||||
fi
|
||||
- >
|
||||
if [[ "$PYTHON" == true ]]; then
|
||||
pip install --user mkdocs
|
||||
pushd python_apps/airtime_analyzer
|
||||
python setup.py install --dry-run --no-init-script
|
||||
popd
|
||||
fi
|
||||
before_script:
|
||||
# prepare the database as per docs/testing.md
|
||||
- psql -c 'CREATE DATABASE libretime;' -U postgres
|
||||
- psql -c "CREATE USER libretime WITH PASSWORD 'libretime';" -U postgres
|
||||
- psql -c 'GRANT CONNECT ON DATABASE libretime TO libretime;' -U postgres
|
||||
- psql -c 'ALTER USER libretime CREATEDB;' -U postgres
|
||||
- mkdir -p /tmp/log/libretime
|
||||
script:
|
||||
- pushd airtime_mvc/tests && ../../vendor/bin/phpunit && popd
|
||||
- mkdocs build --clean -q > /dev/null
|
||||
- ./travis/php.sh
|
||||
- ./travis/python.sh
|
||||
deploy:
|
||||
provider: pages
|
||||
skip_cleanup: true
|
||||
|
@ -33,3 +82,4 @@ deploy:
|
|||
name: R. LibreTime DocBot
|
||||
on:
|
||||
branch: master
|
||||
env: PYTHON=true
|
||||
|
|
|
@ -50,3 +50,25 @@ cd airtime_mvc/tests
|
|||
# run a subset of tests
|
||||
../../vendor/bin/phpunit --filter testEditReatingShowInstance
|
||||
```
|
||||
|
||||
## Python
|
||||
|
||||
The python tests are run through nosetest. To prepare your env you should install
|
||||
it.
|
||||
|
||||
```bash
|
||||
# Debian/Ubuntu
|
||||
apt-get install python-nose
|
||||
|
||||
# CentOS
|
||||
yum install -y python-nose
|
||||
```
|
||||
|
||||
In most cases you need to install deps before the tets can be run.
|
||||
|
||||
### Airtime Analyzer
|
||||
|
||||
```bash
|
||||
cd python_apps/airtime_analyzer
|
||||
nosetests
|
||||
```
|
||||
|
|
1
install
1
install
|
@ -485,6 +485,7 @@ verbose "...Done"
|
|||
|
||||
verbose "\n * Installing airtime_analyzer..."
|
||||
loudCmd "python ${AIRTIMEROOT}/python_apps/airtime_analyzer/setup.py install --install-scripts=/usr/bin"
|
||||
loudCmd "initctl reload-configuration"
|
||||
verbose "...Done"
|
||||
|
||||
for i in /etc/init/airtime*.template; do
|
||||
|
|
|
@ -48,11 +48,7 @@ setup(name='airtime_analyzer',
|
|||
zip_safe=False,
|
||||
data_files=data_files)
|
||||
|
||||
# Reload the initctl config so that "service start airtime_analyzer" works
|
||||
# Remind users to reload the initctl config so that "service start airtime_analyzer" works
|
||||
if data_files:
|
||||
print "Reloading initctl configuration"
|
||||
call(['initctl', 'reload-configuration'])
|
||||
print "Run \"sudo service airtime_analyzer restart\" now."
|
||||
|
||||
|
||||
# TODO: Should we start the analyzer here or not?
|
||||
print "Remember to reload the initctl configuration"
|
||||
print "Run \"sudo initctl reload-configuration; sudo service airtime_analyzer restart\" now."
|
||||
|
|
|
@ -1,6 +1,21 @@
|
|||
from nose.tools import *
|
||||
from airtime_analyzer.replaygain_analyzer import ReplayGainAnalyzer
|
||||
|
||||
'''
|
||||
The tests in here were all tagged with the 'rgain' tag so the can be exluded from being run
|
||||
with nosetest -a '!rgain'. This was needed due to the fact that it is not readily possible
|
||||
to install replaygain on a containerized travis instance.
|
||||
|
||||
We can either give running replaygain test on travis another shot after ubuntu getsan updated
|
||||
gi instrospection allowing us to install gi and gobject into the virtualenv, or we can switch
|
||||
to a full machine and stop using 'sudo: false' on travis.
|
||||
|
||||
Deactivating these tests is a bad fix for now and I plan on looking into it again after
|
||||
most everything else is up and running. For those interesed the tests seem to work locally
|
||||
albeit my results not being up to the given tolerance of 0.30 (which I'm assuming is my rig's
|
||||
problem and would work on travis if replaygain was available).
|
||||
'''
|
||||
|
||||
def check_default_metadata(metadata):
|
||||
''' Check that the values extract by Silan/CuePointAnalyzer on our test audio files match what we expect.
|
||||
:param metadata: a metadata dictionary
|
||||
|
@ -29,43 +44,54 @@ def test_invalid_filepath():
|
|||
def test_mp3_utf8():
|
||||
metadata = ReplayGainAnalyzer.analyze(u'tests/test_data/44100Hz-16bit-stereo-utf8.mp3', dict())
|
||||
check_default_metadata(metadata)
|
||||
test_mp3_utf8.rgain = True
|
||||
|
||||
def test_mp3_dualmono():
|
||||
metadata = ReplayGainAnalyzer.analyze(u'tests/test_data/44100Hz-16bit-dualmono.mp3', dict())
|
||||
check_default_metadata(metadata)
|
||||
test_mp3_dualmono.rgain = True
|
||||
|
||||
def test_mp3_jointstereo():
|
||||
metadata = ReplayGainAnalyzer.analyze(u'tests/test_data/44100Hz-16bit-jointstereo.mp3', dict())
|
||||
check_default_metadata(metadata)
|
||||
test_mp3_jointstereo.rgain = True
|
||||
|
||||
def test_mp3_simplestereo():
|
||||
metadata = ReplayGainAnalyzer.analyze(u'tests/test_data/44100Hz-16bit-simplestereo.mp3', dict())
|
||||
check_default_metadata(metadata)
|
||||
test_mp3_simplestereo.rgain = True
|
||||
|
||||
def test_mp3_stereo():
|
||||
metadata = ReplayGainAnalyzer.analyze(u'tests/test_data/44100Hz-16bit-stereo.mp3', dict())
|
||||
check_default_metadata(metadata)
|
||||
test_mp3_stereo.rgain = True
|
||||
|
||||
def test_mp3_mono():
|
||||
metadata = ReplayGainAnalyzer.analyze(u'tests/test_data/44100Hz-16bit-mono.mp3', dict())
|
||||
check_default_metadata(metadata)
|
||||
test_mp3_mono.rgain = True
|
||||
|
||||
def test_ogg_stereo():
|
||||
metadata = ReplayGainAnalyzer.analyze(u'tests/test_data/44100Hz-16bit-stereo.ogg', dict())
|
||||
check_default_metadata(metadata)
|
||||
test_ogg_stereo = True
|
||||
|
||||
def test_invalid_wma():
|
||||
metadata = ReplayGainAnalyzer.analyze(u'tests/test_data/44100Hz-16bit-stereo-invalid.wma', dict())
|
||||
test_invalid_wma.rgain = True
|
||||
|
||||
def test_mp3_missing_id3_header():
|
||||
metadata = ReplayGainAnalyzer.analyze(u'tests/test_data/44100Hz-16bit-mp3-missingid3header.mp3', dict())
|
||||
test_mp3_missing_id3_header.rgain = True
|
||||
|
||||
def test_m4a_stereo():
|
||||
metadata = ReplayGainAnalyzer.analyze(u'tests/test_data/44100Hz-16bit-stereo.m4a', dict())
|
||||
check_default_metadata(metadata)
|
||||
test_m4a_stereo.rgain = True
|
||||
|
||||
''' WAVE is not supported by python-rgain yet
|
||||
def test_wav_stereo():
|
||||
metadata = ReplayGainAnalyzer.analyze(u'tests/test_data/44100Hz-16bit-stereo.wav', dict())
|
||||
check_default_metadata(metadata)
|
||||
'''
|
||||
test_wav_stereo.rgain = True
|
||||
'''
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -xe
|
||||
|
||||
[[ "$PYTHON" == true ]] && exit 0
|
||||
|
||||
pushd airtime_mvc/tests
|
||||
../../vendor/bin/phpunit
|
||||
popd
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -xe
|
||||
|
||||
[[ "$PYTHON" == false ]] && exit 0
|
||||
|
||||
pushd python_apps/airtime_analyzer
|
||||
nosetests -a '!rgain'
|
||||
echo "replaygain tests where skipped due to not having a reliable replaygain install on travis."
|
||||
popd
|
||||
|
||||
echo "Building docs..."
|
||||
mkdocs build --clean -q > /dev/null
|
||||
echo -n "done"
|
Loading…
Reference in New Issue