Merge pull request #21 from radiorabe/feature/analyzer-on-travis

mostly run analyzer tests on travis
This commit is contained in:
Robb 2017-03-04 19:17:23 -05:00 committed by GitHub
commit 9bac8354b6
7 changed files with 132 additions and 14 deletions

View File

@ -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

View File

@ -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
```

View File

@ -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

View File

@ -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."

View File

@ -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
'''

9
travis/php.sh Executable file
View File

@ -0,0 +1,9 @@
#!/bin/bash
set -xe
[[ "$PYTHON" == true ]] && exit 0
pushd airtime_mvc/tests
../../vendor/bin/phpunit
popd

14
travis/python.sh Executable file
View File

@ -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"