summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/tools/audio/beets/alternatives-plugin.nix6
-rw-r--r--pkgs/tools/audio/beets/copyartifacts-plugin.nix15
-rw-r--r--pkgs/tools/audio/beets/default.nix44
3 files changed, 45 insertions, 20 deletions
diff --git a/pkgs/tools/audio/beets/alternatives-plugin.nix b/pkgs/tools/audio/beets/alternatives-plugin.nix
index 35562a85a4d..27be81733d3 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 fdd70db4e64..6f84e98d23e 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 ff033e62a8b..7e9d0ff9d86 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