diff --git a/tests/gpgme/gpgme-defs.scm b/tests/gpgme/gpgme-defs.scm index 7a7166c58..12e033cbd 100644 --- a/tests/gpgme/gpgme-defs.scm +++ b/tests/gpgme/gpgme-defs.scm @@ -45,12 +45,25 @@ ;; The tests expect the pinentry to return the passphrase "abc". (setenv "PINENTRY_USER_DATA" "abc" #t) -(define (create-file name content) +(define (create-file name . lines) (letfd ((fd (open name (logior O_WRONLY O_CREAT O_BINARY) #o600))) - (display content (fdopen fd "wb")))) + (let ((port (fdopen fd "wb"))) + (for-each (lambda (line) (display line port) (newline port)) lines)))) (define (create-gpgmehome . path) - (create-file "gpg.conf" "no-force-v3-sigs\n") + ;; Support for various environments. + (define mode + (cond + ((equal? path '("lang" "python" "tests")) + (set! path '("tests" "gpg")) ;; Mostly uses files from tests/gpg. + 'python) + (else + 'gpg))) + + (create-file + "gpg.conf" + "no-force-v3-sigs" + (string-append "agent-program " (tool 'gpg-agent) "|--debug-quick-random\n")) (create-file "gpg-agent.conf" (string-append "pinentry-program " (tool 'pinentry))) @@ -75,6 +88,21 @@ (call-check `(,@GPG --yes --import ,(apply in-gpgme-srcdir `(,@path ,file))))) (list "pubdemo.asc" "secdemo.asc")) + + (when (equal? mode 'python) + (log "Importing extra keys for Python tests") + (for-each + (lambda (file) + (call-check `(,@GPG --yes --import + ,(apply in-gpgme-srcdir + `("lang" "python" "tests" ,file))))) + (list "encrypt-only.asc" "sign-only.asc")) + + (log "Marking key as trusted") + (pipe:do + (pipe:echo "A0FF4590BB6122EDEF6E3C542D727CC768697734:6:\n") + (pipe:spawn `(,(tool 'gpg) --import-ownertrust)))) + (stop-agent)) ;; Initialize the test environment, install appropriate configuration diff --git a/tests/gpgme/run-tests.scm b/tests/gpgme/run-tests.scm index 4d3a7e683..72de49580 100644 --- a/tests/gpgme/run-tests.scm +++ b/tests/gpgme/run-tests.scm @@ -40,7 +40,11 @@ run-tests-parallel run-tests-sequential)) (setup-c (make-environment-cache - (test::scm #f "setup.scm" (in-srcdir "setup.scm") "--" "tests" "gpg"))) + (test::scm #f "setup.scm (tests/gpg)" (in-srcdir "setup.scm") + "--" "tests" "gpg"))) + (setup-py (make-environment-cache + (test::scm #f "setup.scm (lang/python/tests)" (in-srcdir "setup.scm") + "--" "lang" "python" "tests"))) (tests (filter (lambda (arg) (not (string-prefix? arg "--"))) *args*))) (runner (apply @@ -67,6 +71,5 @@ -- ,@(:path cmpnts)))) (if (null? tests) (all-tests makefile (:key cmpnts)) tests)))) `((("tests" "gpg") "c_tests" ,setup-c) - ;; XXX: Not yet. - ;; (("lang" "python" "tests") "py_tests") + (("lang" "python" "tests") "py_tests" ,setup-py) (("lang" "qt" "tests") "TESTS" ,setup-c)))))) diff --git a/tests/gpgme/wrap.scm b/tests/gpgme/wrap.scm index e8f2b1fa3..d338892b9 100644 --- a/tests/gpgme/wrap.scm +++ b/tests/gpgme/wrap.scm @@ -29,6 +29,9 @@ (setenv "top_srcdir" gpgme-srcdir #t) (setenv "srcdir" (path-join gpgme-srcdir "tests" "gpg") #t) +(define python (catch #f + (path-expand "python" (string-split (getenv "PATH") *pathsep*)))) + (define (run what) (if (string-suffix? (car what) ".py") (begin @@ -39,15 +42,17 @@ (getenv "LD_LIBRARY_PATH")) (path-join gpgme-builddir "src/.libs")) #t) - (call-with-fds - `("/usr/bin/python" - ,(in-gpgme-srcdir "lang" "python" "tests" "run-tests.py") - --quiet - --interpreters=/usr/bin/python - --builddir ,(path-join gpgme-builddir "lang" "python" "tests") - ,@what) - STDIN_FILENO STDOUT_FILENO STDERR_FILENO)) - (if #f 77 (call-with-fds what STDIN_FILENO STDOUT_FILENO STDERR_FILENO)))) + (if python + (call-with-fds + `(,python + ,(in-gpgme-srcdir "lang" "python" "tests" "run-tests.py") + --quiet + ,(string-append "--interpreters=" python) + --builddir ,(path-join gpgme-builddir "lang" "python" "tests") + ,@what) + STDIN_FILENO STDOUT_FILENO STDERR_FILENO) + 77)) + (call-with-fds what STDIN_FILENO STDOUT_FILENO STDERR_FILENO))) (let ((name (basename (car executable)))) (cond