guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/01: gnu: linkchecker: Fix most test failures.


From: guix-commits
Subject: 01/01: gnu: linkchecker: Fix most test failures.
Date: Fri, 25 Jan 2019 17:00:44 -0500 (EST)

cbaines pushed a commit to branch master
in repository guix.

commit dd7bc92afcd4b69849fc55041ac0261315cde2da
Author: Christopher Baines <address@hidden>
Date:   Thu Jan 3 21:20:33 2019 +0000

    gnu: linkchecker: Fix most test failures.
    
    Add a patch to skip more tests that require the network. Along with some 
other
    changes, this gets all but of one of the tests passing.
    
    The remaining test is broken due to a problem with the Python package in 
Guix,
    which is fixed by [1] which is currently on the core-updates branch. This
    patch doesn't work on core-updates due to python2-miniboa not being present.
    
    1: d453b0e11d3f001a8160a7d126fdbf40e45d5042
    
    * gnu/packages/python.scm (linkchecker)[source]: Add patch.
    [native-inputs]: Add more inputs required for the tests.
    [arguments]: Enable the tests, move the 'check phase after 'install. Test
    using the installed software, and use py.test.
---
 gnu/local.mk                                       |   1 +
 ...-mark-more-tests-that-require-the-network.patch | 182 +++++++++++++++++++++
 gnu/packages/web.scm                               |  29 +++-
 3 files changed, 211 insertions(+), 1 deletion(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index c76653b..cb84fc0 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1004,6 +1004,7 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/lierolibre-newer-libconfig.patch                \
   %D%/packages/patches/lierolibre-remove-arch-warning.patch    \
   %D%/packages/patches/lierolibre-try-building-other-arch.patch        \
+  
%D%/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch 
     \
   %D%/packages/patches/linux-pam-no-setfsuid.patch             \
   %D%/packages/patches/lirc-localstatedir.patch                        \
   %D%/packages/patches/lirc-reproducible-build.patch           \
diff --git 
a/gnu/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch
 
b/gnu/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch
new file mode 100644
index 0000000..f3e488c
--- /dev/null
+++ 
b/gnu/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch
@@ -0,0 +1,182 @@
+From f24c88a0732024028fffe0372039a847e91722ea Mon Sep 17 00:00:00 2001
+From: Christopher Baines <address@hidden>
+Date: Tue, 1 Jan 2019 22:36:29 +0000
+Subject: [PATCH] Mark more tests that require the network
+
+I believe all these tests require the network, at least they seem to
+fail if it's I run them without connecting my computer to the web.
+
+I'm looking at this as part of packaging linkchecker for GNU Guix,
+where the package is build and the tests are run in a isolated
+environment, intentionally without network access, to avoid issues
+with non-reproducible package builds.
+---
+ tests/checker/test_http.py          | 2 ++
+ tests/checker/test_http_misc.py     | 2 ++
+ tests/checker/test_http_redirect.py | 2 ++
+ tests/checker/test_httpbin.py       | 5 +++++
+ tests/checker/test_misc.py          | 4 ++++
+ tests/checker/test_whitespace.py    | 3 +++
+ 6 files changed, 18 insertions(+)
+
+diff --git a/tests/checker/test_http.py b/tests/checker/test_http.py
+index e4c1e097..8a8af567 100644
+--- a/tests/checker/test_http.py
++++ b/tests/checker/test_http.py
+@@ -20,6 +20,7 @@
+ 
+ import pytest
+ 
++from tests import need_network
+ from .httpserver import HttpServerTest, CookieRedirectHttpRequestHandler
+ 
+ class TestHttp (HttpServerTest):
+@@ -29,6 +30,7 @@ def __init__(self, methodName='runTest'):
+         super(TestHttp, self).__init__(methodName=methodName)
+         self.handler = CookieRedirectHttpRequestHandler
+ 
++    @need_network
+     def test_html (self):
+         confargs = dict(recursionlevel=1)
+         self.file_test("http.html", confargs=confargs)
+diff --git a/tests/checker/test_http_misc.py b/tests/checker/test_http_misc.py
+index 9922d85f..c6b6afdb 100644
+--- a/tests/checker/test_http_misc.py
++++ b/tests/checker/test_http_misc.py
+@@ -20,11 +20,13 @@
+ import os
+ import sys
+ from .httpserver import HttpServerTest
++from tests import need_network
+ from linkcheck.network import iputil
+ 
+ class TestHttpMisc (HttpServerTest):
+     """Test http:// misc link checking."""
+ 
++    @need_network
+     def test_html (self):
+         self.swf_test()
+         self.obfuscate_test()
+diff --git a/tests/checker/test_http_redirect.py 
b/tests/checker/test_http_redirect.py
+index f212d98e..2253a70d 100644
+--- a/tests/checker/test_http_redirect.py
++++ b/tests/checker/test_http_redirect.py
+@@ -17,6 +17,7 @@
+ """
+ Test http checking.
+ """
++from tests import need_network
+ from .httpserver import HttpServerTest, CookieRedirectHttpRequestHandler
+ 
+ class TestHttpRedirect (HttpServerTest):
+@@ -26,6 +27,7 @@ def __init__(self, methodName='runTest'):
+         super(TestHttpRedirect, self).__init__(methodName=methodName)
+         self.handler = CookieRedirectHttpRequestHandler
+ 
++    @need_network
+     def test_redirect (self):
+         self.redirect1()
+         self.redirect2()
+diff --git a/tests/checker/test_httpbin.py b/tests/checker/test_httpbin.py
+index 0319c2f6..4c8fa846 100644
+--- a/tests/checker/test_httpbin.py
++++ b/tests/checker/test_httpbin.py
+@@ -18,6 +18,7 @@
+ Test http stuff with httpbin.org.
+ """
+ import re
++from tests import need_network
+ from . import LinkCheckTest
+ 
+ 
+@@ -30,6 +31,7 @@ def get_httpbin_url(path):
+ class TestHttpbin(LinkCheckTest):
+     """Test http:// link redirection checking."""
+ 
++    @need_network
+     def test_http_link(self):
+         linkurl = u"http://www.example.com";
+         nlinkurl = self.norm(linkurl)
+@@ -48,6 +50,7 @@ def test_http_link(self):
+         ]
+         self.direct(url, resultlines, recursionlevel=1)
+ 
++    @need_network
+     def test_basic_auth(self):
+         user = u"testuser"
+         password = u"testpassword"
+@@ -67,6 +70,7 @@ def test_basic_auth(self):
+         ]
+         self.direct(url, resultlines, confargs=confargs)
+ 
++    @need_network
+     def test_http_refresh_header(self):
+         linkurl = u"http://www.example.com";
+         nlinkurl = self.norm(linkurl)
+@@ -85,6 +89,7 @@ def test_http_refresh_header(self):
+         ]
+         self.direct(url, resultlines, recursionlevel=1)
+ 
++    @need_network
+     def test_http_content_location_header(self):
+         linkurl = u"http://www.example.com";
+         nlinkurl = self.norm(linkurl)
+diff --git a/tests/checker/test_misc.py b/tests/checker/test_misc.py
+index 2e4cfd07..f9591f9d 100644
+--- a/tests/checker/test_misc.py
++++ b/tests/checker/test_misc.py
+@@ -17,6 +17,7 @@
+ """
+ Test miscellaneous html tag parsing and URL types
+ """
++from tests import need_network
+ from . import LinkCheckTest
+ 
+ 
+@@ -25,15 +26,18 @@ class TestMisc (LinkCheckTest):
+     Test misc link types.
+     """
+ 
++    @need_network
+     def test_misc (self):
+         self.file_test("misc.html")
+ 
+     def test_html5 (self):
+         self.file_test("html5.html")
+ 
++    @need_network
+     def test_archive (self):
+         self.file_test("archive.html")
+ 
++    @need_network
+     def test_itms_services(self):
+         url = 
u"itms-services:?action=download-manifest&url=http://www.example.com/";
+         resultlines = [
+diff --git a/tests/checker/test_whitespace.py 
b/tests/checker/test_whitespace.py
+index 609c108a..fc2727d6 100644
+--- a/tests/checker/test_whitespace.py
++++ b/tests/checker/test_whitespace.py
+@@ -17,6 +17,7 @@
+ """
+ Test whitespace handling.
+ """
++from tests import need_network
+ from . import LinkCheckTest
+ 
+ 
+@@ -25,6 +26,7 @@ class TestWhitespace (LinkCheckTest):
+     Test whitespace in URLs.
+     """
+ 
++    @need_network
+     def test_leading_whitespace (self):
+         # Leading whitespace
+         url = u" http://www.example.org/";
+@@ -50,6 +52,7 @@ def test_leading_whitespace (self):
+         ]
+         self.direct(url, resultlines)
+ 
++    @need_network
+     def test_trailing_whitespace (self):
+         # Trailing whitespace
+         url = u"http://www.example.org/ "
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index d3693df..776027c 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -5330,6 +5330,9 @@ Instagram and YouTube.")
        (uri (git-reference
              (url "https://github.com/linkchecker/linkchecker";)
              (commit (string-append "v" version))))
+       (patches
+        (search-patches
+         "linkchecker-mark-more-tests-that-require-the-network.patch"))
        (file-name (git-file-name name version))
        (sha256
         (base32
@@ -5339,8 +5342,32 @@ Instagram and YouTube.")
      `(("python2-dnspython" ,python2-dnspython)
        ("python2-pyxdg" ,python2-pyxdg)
        ("python2-requests" ,python2-requests)))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("python2-pytest" ,python2-pytest)
+       ("python2-miniboa" ,python2-miniboa)
+       ("python2-parameterized" ,python2-parameterized)))
     (arguments
-     `(#:python ,python-2))
+     `(#:python ,python-2
+       #:phases
+       (modify-phases %standard-phases
+         ;; Move the 'check phase to after 'install, so that the installed
+         ;; library can be used
+         (delete 'check)
+         (add-after 'install 'check
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; Set PYTHONPATH so that the installed linkchecker is used
+               (setenv "PYTHONPATH"
+                       (string-append out "/lib/python2.7/site-packages"
+                                      ":"
+                                      (getenv "PYTHONPATH")))
+               ;; Remove this directory to avoid it being used when running
+               ;; the tests
+               (delete-file-recursively "linkcheck")
+
+               (invoke "py.test" "tests"))
+             #t)))))
     (home-page "https://linkcheck.github.io/linkchecker";)
     (synopsis "Check websites for broken links")
     (description "LinkChecker is a website validator.  It checks for broken



reply via email to

[Prev in Thread] Current Thread [Next in Thread]