diff --git a/pkgs/tools/audio/beets/alternatives-plugin.nix b/pkgs/tools/audio/beets/alternatives-plugin.nix index 35562a85a4d3..27be81733d3b 100644 --- a/pkgs/tools/audio/beets/alternatives-plugin.nix +++ b/pkgs/tools/audio/beets/alternatives-plugin.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, pythonPackages }: +{ stdenv, fetchFromGitHub, beets, pythonPackages }: pythonPackages.buildPythonApplication rec { name = "beets-alternatives-${version}"; @@ -16,6 +16,10 @@ pythonPackages.buildPythonApplication rec { sed -i -e '/test_suite/d' setup.py ''; + nativeBuildInputs = [ beets pythonPackages.nose ]; + + checkPhase = "nosetests"; + propagatedBuildInputs = with pythonPackages; [ futures ]; meta = { diff --git a/pkgs/tools/audio/beets/copyartifacts-plugin.nix b/pkgs/tools/audio/beets/copyartifacts-plugin.nix index fdd70db4e640..6f84e98d23e8 100644 --- a/pkgs/tools/audio/beets/copyartifacts-plugin.nix +++ b/pkgs/tools/audio/beets/copyartifacts-plugin.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, pythonPackages }: +{ stdenv, fetchFromGitHub, beets, pythonPackages, glibcLocales }: pythonPackages.buildPythonApplication rec { name = "beets-copyartifacts"; @@ -6,16 +6,25 @@ pythonPackages.buildPythonApplication rec { src = fetchFromGitHub { repo = "beets-copyartifacts"; owner = "sbarakat"; - rev = "dac4a1605111e24bb5b498aa84cead7c87480834"; - sha256 = "0p5cskfgqinzh48a58hw56f96g9lar3k3g2p0ip1m9kawzf6axng"; + rev = "4a5d347c858d25641c8a0eb7d8cb1a2cac10252a"; + sha256 = "0bn6fci480ilghrdhpsjxxq29dxgni22sv1qalz770xy130g1zk3"; }; postPatch = '' sed -i -e '/install_requires/,/\]/{/beets/d}' setup.py sed -i -e '/namespace_packages/d' setup.py printf 'from pkgutil import extend_path\n__path__ = extend_path(__path__, __name__)\n' >beetsplug/__init__.py + + # Skip test which is already failing upstream. + sed -i -e '1i import unittest' \ + -e 's/\(^ *\)# failing/\1@unittest.skip/' \ + tests/test_reimport.py ''; + nativeBuildInputs = [ beets pythonPackages.nose glibcLocales ]; + + checkPhase = "LANG=en_US.UTF-8 nosetests"; + meta = { description = "Beets plugin to move non-music files during the import process"; homepage = https://github.com/sbarakat/beets-copyartifacts; diff --git a/pkgs/tools/audio/beets/default.nix b/pkgs/tools/audio/beets/default.nix index ff033e62a8b6..7e9d0ff9d860 100644 --- a/pkgs/tools/audio/beets/default.nix +++ b/pkgs/tools/audio/beets/default.nix @@ -1,6 +1,9 @@ { stdenv, fetchFromGitHub, writeScript, glibcLocales, diffPlugins , pythonPackages, imagemagick, gobjectIntrospection, gst_all_1 +# Attributes needed for tests of the external plugins +, callPackage, beets + , enableAcousticbrainz ? true , enableAcoustid ? true , enableBadfiles ? true, flac ? null, mp3val ? null @@ -77,6 +80,19 @@ let testShell = "${bashInteractive}/bin/bash --norc"; completion = "${bash-completion}/share/bash-completion/bash_completion"; + # This is a stripped down beets for testing of the external plugins. + externalTestArgs.beets = (beets.override { + enableAlternatives = false; + enableCopyArtifacts = false; + }).overrideAttrs (stdenv.lib.const { + doInstallCheck = false; + }); + + plugins = { + alternatives = callPackage ./alternatives-plugin.nix externalTestArgs; + copyartifacts = callPackage ./copyartifacts-plugin.nix externalTestArgs; + }; + in pythonPackages.buildPythonApplication rec { name = "beets-${version}"; version = "1.4.5"; @@ -101,26 +117,22 @@ in pythonPackages.buildPythonApplication rec { pythonPackages.gst-python pythonPackages.pygobject3 gobjectIntrospection - ] ++ optional enableAcoustid pythonPackages.pyacoustid + ] ++ optional enableAcoustid pythonPackages.pyacoustid ++ optional (enableFetchart || enableEmbyupdate || enableKodiupdate || enableAcousticbrainz) - pythonPackages.requests - ++ optional enableConvert ffmpeg - ++ optional enableDiscogs pythonPackages.discogs_client - ++ optional enableGmusic pythonPackages.gmusicapi - ++ optional enableKeyfinder keyfinder-cli - ++ optional enableLastfm pythonPackages.pylast - ++ optional enableMpd pythonPackages.mpd2 - ++ optional enableThumbnails pythonPackages.pyxdg - ++ optional enableWeb pythonPackages.flask - ++ optional enableAlternatives (import ./alternatives-plugin.nix { - inherit stdenv pythonPackages fetchFromGitHub; - }) - ++ optional enableCopyArtifacts (import ./copyartifacts-plugin.nix { - inherit stdenv pythonPackages fetchFromGitHub; - }); + pythonPackages.requests + ++ optional enableConvert ffmpeg + ++ optional enableDiscogs pythonPackages.discogs_client + ++ optional enableGmusic pythonPackages.gmusicapi + ++ optional enableKeyfinder keyfinder-cli + ++ optional enableLastfm pythonPackages.pylast + ++ optional enableMpd pythonPackages.mpd2 + ++ optional enableThumbnails pythonPackages.pyxdg + ++ optional enableWeb pythonPackages.flask + ++ optional enableAlternatives plugins.alternatives + ++ optional enableCopyArtifacts plugins.copyartifacts; buildInputs = with pythonPackages; [ beautifulsoup4