aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (test-discovery)
  #:use-module (guix discovery)
  #:use-module (guix build-system)
  #:use-module (guix utils)
  #:use-module (srfi srfi-64)
  #:use-module (ice-9 match))

(define %top-srcdir
  (dirname (search-path %load-path "guix.scm")))

(test-begin "discovery")

(test-assert "scheme-modules"
  (match (map module-name (scheme-modules %top-srcdir "guix/import"))
    ((('guix 'import _ ...) ..1)
     #t)))

(test-assert "scheme-modules recurses in symlinks to directories"
  (call-with-temporary-directory
   (lambda (directory)
     (mkdir (string-append directory "/guix"))
     (symlink (string-append %top-srcdir "/guix/import")
              (string-append directory "/guix/import"))

     ;; DIRECTORY/guix/import is a symlink but we want to make sure
     ;; 'scheme-modules' recurses into it.
     (match (map module-name (scheme-modules directory))
       ((('guix 'import _ ...) ..1)
        #t)))))

(test-equal "scheme-modules, non-existent directory"
  '()
  (scheme-modules "/does/not/exist"))

(test-assert "all-modules"
  (match (map module-name
              (all-modules `((,%top-srcdir . "guix/build-system"))))
    ((('guix 'build-system names) ..1)
     names)))

(test-assert "fold-module-public-variables"
  (let ((modules (all-modules `((,%top-srcdir . "guix/build-system")))))
    (match (fold-module-public-variables (lambda (obj result)
                                           (if (build-system? obj)
                                               (cons obj result)
                                               result))
                                         '()
                                         modules)
      (((? build-system? bs) ..1)
       bs))))

(test-end "discovery")
eb0fef346fefcfaaa5261b9f442e4ad8bb85745'>plainabout -rw-r--r--ada.scm8259logplainabout -rw-r--r--admin.scm188162logplainabout -rw-r--r--adns.scm4800logplainabout -rw-r--r--agda.scm8928logplainabout -rw-r--r--aidc.scm9567logplainabout -rw-r--r--algebra.scm68167logplainabout -rw-r--r--android.scm43928logplainabout -rw-r--r--animation.scm20150logplainabout -rw-r--r--anthy.scm2879logplainabout -rw-r--r--antivirus.scm7359logplainabout -rw-r--r--apl.scm2193logplainabout -rw-r--r--apr.scm4303logplainabout -rw-r--r--arcan.scm11296logplainabout -rw-r--r--aspell.scm20634logplainabout -rw-r--r--assembly.scm21555logplainabout -rw-r--r--astronomy.scm39897logplainabout -rw-r--r--attr.scm2879logplainabout -rw-r--r--audio.scm206655logplainabout -rw-r--r--augeas.scm2648logplainabout -rw-r--r--authentication.scm6161logplainabout -rw-r--r--autogen.scm3228logplainabout -rw-r--r--autotools.scm25846logplainabout d---------aux-files271logplain -rw-r--r--avahi.scm4851logplainabout -rw-r--r--avr.scm7792logplainabout -rw-r--r--axoloti.scm29449logplainabout -rw-r--r--backup.scm48566logplainabout -rw-r--r--base.scm64422logplainabout -rw-r--r--bash.scm19410logplainabout -rw-r--r--batik.scm8852logplainabout -rw-r--r--bdw-gc.scm6287logplainabout -rw-r--r--benchmark.scm16853logplainabout -rw-r--r--bioconductor.scm503923logplainabout -rw-r--r--bioinformatics.scm602652logplainabout -rw-r--r--bison.scm3561logplainabout -rw-r--r--bittorrent.scm22086logplainabout -rw-r--r--boost.scm21148logplainabout -rw-r--r--bootloaders.scm55905logplainabout -rw-r--r--bootstrap.scm38664logplainabout -rw-r--r--browser-extensions.scm4904logplainabout -rw-r--r--build-tools.scm23842logplainabout -rw-r--r--busybox.scm6779logplainabout -rw-r--r--c.scm29146logplainabout -rw-r--r--calcurse.scm3490logplainabout -rw-r--r--calendar.scm17562logplainabout -rw-r--r--ccache.scm2691logplainabout -rw-r--r--cdrom.scm42831logplainabout -rw-r--r--cedille.scm5517logplainabout -rw-r--r--certs.scm12642logplainabout -rw-r--r--check.scm111016logplainabout -rw-r--r--chemistry.scm25292logplainabout -rw-r--r--chez.scm29359logplainabout -rw-r--r--chicken.scm10606logplainabout -rw-r--r--chromium.scm44316logplainabout -rw-r--r--ci.scm14114logplainabout -rw-r--r--cinnamon.scm3114logplainabout -rw-r--r--clojure.scm14164logplainabout -rw-r--r--cluster.scm11674logplainabout -rw-r--r--cmake.scm21761logplainabout -rw-r--r--cobol.scm3476logplainabout -rw-r--r--code.scm37766logplainabout -rw-r--r--commencement.scm160877logplainabout -rw-r--r--compression.scm111358logplainabout -rw-r--r--compton.scm5981logplainabout -rw-r--r--configuration-management.scm5882logplainabout -rw-r--r--conky.scm3581logplainabout -rw-r--r--connman.scm7381logplainabout -rw-r--r--convmv.scm2300logplainabout -rw-r--r--cook.scm4102logplainabout -rw-r--r--coq.scm26070logplainabout -rw-r--r--cpio.scm1971logplainabout -rw-r--r--cpp.scm47888logplainabout -rw-r--r--cppi.scm1775logplainabout -rw-r--r--cran.scm1060123logplainabout -rw-r--r--crates-graphics.scm105708logplainabout -rw-r--r--crates-gtk.scm42549logplainabout -rw-r--r--crates-io.scm1888033logplainabout -rw-r--r--cross-base.scm26496logplainabout -rw-r--r--crypto.scm59992logplainabout -rw-r--r--cryptsetup.scm6710logplainabout -rw-r--r--cups.scm45502logplainabout -rw-r--r--curl.scm13947logplainabout -rw-r--r--cvassistant.scm3642logplainabout -rw-r--r--cybersecurity.scm3736logplainabout -rw-r--r--cyrus-sasl.scm3528logplainabout -rw-r--r--databases.scm159895logplainabout -rw-r--r--datamash.scm1969logplainabout -rw-r--r--datastructures.scm16220logplainabout -rw-r--r--dav.scm7152logplainabout -rw-r--r--dbm.scm6677logplainabout -rw-r--r--dc.scm2233logplainabout -rw-r--r--debian.scm16211logplainabout -rw-r--r--debug.scm32432logplainabout -rw-r--r--dejagnu.scm3510logplainabout -rw-r--r--dhall.scm6289logplainabout -rw-r--r--dico.scm3670logplainabout -rw-r--r--dictionaries.scm18065logplainabout -rw-r--r--diffoscope.scm14516logplainabout -rw-r--r--digest.scm4182logplainabout -rw-r--r--direct-connect.scm2610logplainabout -rw-r--r--disk.scm54945logplainabout -rw-r--r--display-managers.scm15707logplainabout -rw-r--r--distributed.scm4113logplainabout -rw-r--r--django.scm51906logplainabout -rw-r--r--djvu.scm18547logplainabout -rw-r--r--dlang.scm18068logplainabout -rw-r--r--dns.scm53976logplainabout -rw-r--r--docbook.scm20424logplainabout -rw-r--r--docker.scm33377logplainabout -rw-r--r--documentation.scm14469logplainabout -rw-r--r--drones.scm7632logplainabout -rw-r--r--dunst.scm3679logplainabout -rw-r--r--dvtm.scm2311logplainabout -rw-r--r--easyrpg.scm4508logplainabout -rw-r--r--ebook.scm24883logplainabout -rw-r--r--ed.scm2378logplainabout -rw-r--r--education.scm44061logplainabout -rw-r--r--efi.scm9875logplainabout -rw-r--r--electronics.scm12912logplainabout -rw-r--r--elf.scm12042logplainabout -rw-r--r--elixir.scm5092logplainabout -rw-r--r--elm.scm3960logplainabout -rw-r--r--emacs-xyz.scm1105411logplainabout -rw-r--r--emacs.scm24080logplainabout -rw-r--r--embedded.scm70611logplainabout -rw-r--r--emulators.scm99437logplainabout -rw-r--r--enchant.scm6536logplainabout -rw-r--r--engineering.scm114436logplainabout -rw-r--r--enlightenment.scm25265logplainabout -rw-r--r--entr.scm3402logplainabout -rw-r--r--erlang.scm10469logplainabout -rw-r--r--esolangs.scm5397logplainabout -rw-r--r--fabric-management.scm9621logplainabout -rw-r--r--fcitx.scm9135logplainabout -rw-r--r--fcitx5.scm16420logplainabout -rw-r--r--figlet.scm1797logplainabout -rw-r--r--file-systems.scm69362logplainabout -rw-r--r--file.scm2357logplainabout -rw-r--r--finance.scm66379logplainabout -rw-r--r--firmware.scm23364logplainabout -rw-r--r--flashing-tools.scm19835logplainabout -rw-r--r--flex.scm3224logplainabout -rw-r--r--fltk.scm6144logplainabout -rw-r--r--fonts.scm94745logplainabout -rw-r--r--fontutils.scm40935logplainabout -rw-r--r--forth.scm2430logplainabout -rw-r--r--fpga.scm22173logplainabout -rw-r--r--freedesktop.scm97050logplainabout -rw-r--r--freeipmi.scm2155logplainabout -rw-r--r--fribidi.scm4068logplainabout -rw-r--r--ftp.scm13524logplainabout -rw-r--r--fvwm.scm3121logplainabout -rw-r--r--game-development.scm105813logplainabout -rw-r--r--games.scm511100logplainabout -rw-r--r--gawk.scm3785logplainabout -rw-r--r--gcal.scm2889logplainabout -rw-r--r--gcc.scm53621logplainabout -rw-r--r--gd.scm6392logplainabout -rw-r--r--gdb.scm6497logplainabout -rw-r--r--genealogy.scm4604logplainabout -rw-r--r--genimage.scm8437logplainabout -rw-r--r--geo.scm95599logplainabout -rw-r--r--gettext.scm12623logplainabout -rw-r--r--ghostscript.scm17019logplainabout -rw-r--r--gimp.scm26467logplainabout -rw-r--r--gkrellm.scm2449logplainabout -rw-r--r--gl.scm45459logplainabout -rw-r--r--glib.scm51235logplainabout -rw-r--r--gnome-xyz.scm39278logplainabout -rw-r--r--gnome.scm483802logplainabout -rw-r--r--gnu-doc.scm4129logplainabout -rw-r--r--gnu-pw-mgr.scm2636logplainabout -rw-r--r--gnucash.scm14673logplainabout -rw-r--r--gnunet.scm16869logplainabout -rw-r--r--gnupg.scm47591logplainabout -rw-r--r--gnustep.scm11894logplainabout -rw-r--r--gnuzilla.scm82723logplainabout -rw-r--r--gobby.scm8042logplainabout -rw-r--r--golang.scm294201logplainabout -rw-r--r--gperf.scm2354logplainabout -rw-r--r--gpodder.scm9410logplainabout -rw-r--r--gps.scm12064logplainabout -rw-r--r--graph.scm23474logplainabout -rw-r--r--graphics.scm79474logplainabout -rw-r--r--graphviz.scm17499logplainabout -rw-r--r--groff.scm11339logplainabout -rw-r--r--groovy.scm37971logplainabout -rw-r--r--gsasl.scm4511logplainabout -rw-r--r--gstreamer.scm37338logplainabout -rw-r--r--gtk.scm95955logplainabout -rw-r--r--guile-wm.scm9353logplainabout -rw-r--r--guile-xyz.scm190792logplainabout -rw-r--r--guile.scm37214logplainabout -rw-r--r--gv.scm3247logplainabout -rw-r--r--gxmessage.scm2352logplainabout -rw-r--r--hardware.scm24898logplainabout -rw-r--r--haskell-apps.scm39749logplainabout -rw-r--r--haskell-check.scm39519logplainabout -rw-r--r--haskell-crypto.scm34561logplainabout -rw-r--r--haskell-web.scm85576logplainabout -rw-r--r--haskell-xyz.scm578793logplainabout -rw-r--r--haskell.scm29623logplainabout -rw-r--r--heads.scm8326logplainabout -rw-r--r--hexedit.scm4680logplainabout -rw-r--r--hugs.scm3688logplainabout -rw-r--r--hunspell.scm3422logplainabout -rw-r--r--hurd.scm26842logplainabout -rw-r--r--hyperledger.scm8802logplainabout -rw-r--r--i2p.scm3576logplainabout -rw-r--r--ibus.scm30751logplainabout -rw-r--r--icu4c.scm9003logplainabout -rw-r--r--idris.scm13442logplainabout -rw-r--r--idutils.scm2817logplainabout -rw-r--r--image-processing.scm52317logplainabout -rw-r--r--image-viewers.scm31182logplainabout -rw-r--r--image.scm94032logplainabout -rw-r--r--imagemagick.scm11600logplainabout -rw-r--r--inklingreader.scm2239logplainabout -rw-r--r--inkscape.scm13424logplainabout -rw-r--r--installers.scm7598logplainabout -rw-r--r--ipfs.scm12757logplainabout -rw-r--r--irc.scm23675logplainabout -rw-r--r--irods.scm12374logplainabout -rw-r--r--iso-codes.scm4185logplainabout -rw-r--r--jami.scm22438logplainabout -rw-r--r--java-compression.scm13983logplainabout -rw-r--r--java-graphics.scm5224logplainabout -rw-r--r--java-maths.scm3603logplainabout -rw-r--r--java.scm606926logplainabout -rw-r--r--javascript.scm26970logplainabout -rw-r--r--jemalloc.scm3391logplainabout -rw-r--r--jose.scm2073logplainabout -rw-r--r--jrnl.scm2437logplainabout -rw-r--r--julia-jll.scm106977logplainabout -rw-r--r--julia-xyz.scm167502logplainabout -rw-r--r--julia.scm20854logplainabout -rw-r--r--jupyter.scm12389logplainabout -rw-r--r--kawa.scm2553logplainabout -rw-r--r--kde-frameworks.scm151013logplainabout -rw-r--r--kde-internet.scm17766logplainabout -rw-r--r--kde-multimedia.scm27797logplainabout -rw-r--r--kde-pim.scm73834logplainabout -rw-r--r--kde-plasma.scm11627logplainabout -rw-r--r--kde-systemtools.scm13660logplainabout -rw-r--r--kde-utils.scm20441logplainabout -rw-r--r--kde.scm45191logplainabout -rw-r--r--kerberos.scm10177logplainabout -rw-r--r--key-mon.scm2121logplainabout -rw-r--r--kodi.scm21622logplainabout -rw-r--r--language.scm51182logplainabout -rw-r--r--ld-wrapper.in12323logplainabout -rw-r--r--lean.scm3159logplainabout -rw-r--r--lego.scm6643logplainabout -rw-r--r--less.scm4662logplainabout -rw-r--r--lesstif.scm1817logplainabout -rw-r--r--libbsd.scm2157logplainabout -rw-r--r--libcanberra.scm6166logplainabout -rw-r--r--libdaemon.scm3621logplainabout -rw-r--r--libedit.scm2839logplainabout -rw-r--r--libevent.scm10325logplainabout -rw-r--r--libffcall.scm1922logplainabout -rw-r--r--libffi.scm12787logplainabout -rw-r--r--libftdi.scm1943logplainabout -rw-r--r--libidn.scm3562logplainabout -rw-r--r--libphidget.scm1806logplainabout -rw-r--r--libreoffice.scm51880logplainabout -rw-r--r--libsigsegv.scm2731logplainabout -rw-r--r--libunistring.scm3159logplainabout