From 0c6f7d8396349dc5afb5c24b72f940f097737e78 Mon Sep 17 00:00:00 2001 From: Raghav Gururajan Date: Tue, 16 Mar 2021 16:56:25 -0400 Subject: [PATCH] gnu: mediastreamer2: Enable tests. * gnu/packages/linphone.scm (mediastreamer2) [arguments]: Remove tests? argument, enabling tests. [phases]{pre-check}: New phase. {check}: Replace with custom phase. [native-inputs]: Add xorg-server-for-tests. Modified-by: Maxim Cournoyer Signed-off-by: Maxim Cournoyer --- gnu/packages/linphone.scm | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm index 129b6764e5..f06b2be452 100644 --- a/gnu/packages/linphone.scm +++ b/gnu/packages/linphone.scm @@ -532,8 +532,7 @@ API. It also comprises a simple HTTP/HTTPS client implementation.") (outputs '("out" "doc" "tester")) (build-system cmake-build-system) (arguments - `(#:tests? #f ; No test target - #:configure-flags (list "-DENABLE_STATIC=NO") + `(#:configure-flags (list "-DENABLE_STATIC=NO") #:phases (modify-phases %standard-phases (add-after 'unpack 'fix-version @@ -541,6 +540,14 @@ API. It also comprises a simple HTTP/HTTPS client implementation.") (substitute* "CMakeLists.txt" (("VERSION [0-9]+\\.[0-9]+\\.[0-9]+") (string-append "VERSION " ,version))))) + (add-before 'check 'pre-check + (lambda _ + ;; Tests require a running X server. + (system "Xvfb :1 +extension GLX &") + (setenv "DISPLAY" ":1") + ;; Tests write to $HOME. + (setenv "HOME" (getenv "TEMP")))) + (delete 'check) ;move after install (add-after 'install 'separate-outputs (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -552,19 +559,37 @@ API. It also comprises a simple HTTP/HTTPS client implementation.") (list (string-append tester "/bin") (string-append tester "/share") (string-append doc "/share/doc"))) - ;; Copy the tester executable. + ;; Move the tester executable. (rename-file (string-append out "/bin/" tester-name) (string-append tester "/bin/" tester-name)) - ;; Copy the tester data files. + ;; Move the tester data files. (rename-file (string-append out "/share/" tester-name) (string-append tester "/share/" tester-name)) - ;; Copy the HTML documentation. + ;; Move the HTML documentation. (rename-file (string-append out "/share/doc/" doc-name) - (string-append doc "/share/doc/" doc-name)))))))) + (string-append doc "/share/doc/" doc-name))))) + (add-after 'separate-outputs 'check + (lambda* (#:key outputs #:allow-other-keys) + (let ((tester (string-append (assoc-ref outputs "tester") + "/bin/mediastreamer2_tester"))) + (for-each (lambda (suite-name) + (invoke tester "--suite" suite-name)) + ;; Some tests fail, due to requiring access to the + ;; sound card or the network. + (list "Basic Audio" + ;; "Sound Card" + ;; "AdaptiveAlgorithm" + ;; "AudioStream" + ;; "VideoStream" + "H26x Tools" + "Framework" + ;; "Player" + "TextStream")))))))) (native-inputs `(("dot" ,graphviz) ("doxygen" ,doxygen) - ("python" ,python-wrapper))) + ("python" ,python-wrapper) + ("xorg-server" ,xorg-server-for-tests))) (inputs `(("alsa" ,alsa-lib) ("bcg729" ,bcg729)