1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-28 22:10:29 +02:00
guile/test-suite/standalone
Ludovic Courtès d4149a510e Simplify the (system foreign) API.
Suggested by Neil Jerram.

* libguile/foreign.h (SCM_FOREIGN_TYPE, SCM_FOREIGN_VALUE_REF,
  SCM_FOREIGN_VALUE_SET, SCM_FOREIGN_LEN, SCM_FOREIGN_TYPED_P,
  SCM_FOREIGN_VALUE_P, SCM_VALIDATE_FOREIGN_VALUE, scm_foreign_set_x,
  scm_foreign_type): Remove.
  (scm_foreign_ref): Rename to...
  (scm_foreign_address): ... this.
  (scm_take_foreign_pointer): Update.
  (SCM_FOREIGN_POINTER): Remove CTYPE argument.  Update callers.
  (scm_make_pointer): New declaration.

* libguile/foreign.c (scm_to_uintptr, scm_from_uintptr): New macros.
  (scm_make_pointer): New function.
  (scm_take_foreign_pointer): Remove TYPE and LEN arguments.  Update
  callers.
  (scm_foreign_ref): Remove to...
  (scm_foreign_address): ... this.  Remove type-related code.
  (scm_foreign_set_x): Remove.
  (scm_foreign_to_bytevector): Change argument order; make LEN argument
  compulsory.
  (scm_i_foreign_print): Remove type printing.
  (unpack): Remove foreign-type checking.

* libguile/deprecated.c (scm_dynamic_args_call): Update accordingly.

* libguile/dynl.c (scm_dynamic_pointer): Remove the TYPE and LEN
  arguments; update callers.  Update to the new foreign API.

* libguile/dynl.h (scm_dynamic_pointer): Update.

* libguile/gsubr.c (create_gsubr): Update to the new foreign API.

* libguile/gsubr.h (SCM_SUBRF, SCM_SUBR_GENERIC): Ditto.

* libguile/snarf.h (SCM_IMMUTABLE_FOREIGN): Ditto.

* libguile/vm-i-system.c (subr_call): Ditto.

* module/system/foreign.scm (null-pointer?): New procedure.

* test-suite/standalone/test-ffi: Update to the new
  `bytevector->foreign' signature.

* test-suite/tests/foreign.test ("null pointer")["null pointer
  identity", "null-pointer? %null-pointer"]: New tests.
  ["foreign-set! other-null-pointer", "foreign->bytevector
  other-null-pointer"]: Remove.
  ("make-pointer", "foreign<->bytevector"): New test prefixes.
2010-07-26 19:38:52 +02:00
..
.gitignore Start rewriting SRFI-1 in Scheme. 2010-07-21 01:07:56 +02:00
Makefile.am Start rewriting SRFI-1 in Scheme. 2010-07-21 01:07:56 +02:00
README allow building against uninstalled guile; move some things to meta/ 2009-03-27 14:03:03 -07:00
test-asmobs Fix test environment issue with ltdl from Libtool 2.2.6b. 2009-12-14 10:59:25 +01:00
test-asmobs-lib.c Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
test-bad-identifiers Use `-q' when running standalone tests. 2008-07-06 23:58:38 +02:00
test-conversion.c remove SCM_HAVE_T_INT64, SCM_HAVE_T_UINT64 2010-07-26 15:00:49 +02:00
test-extensions Fix test environment issue with ltdl from Libtool 2.2.6b. 2009-12-14 10:59:25 +01:00
test-extensions-lib.c Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
test-fast-slot-ref.in Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
test-ffi Simplify the (system foreign) API. 2010-07-26 19:38:52 +02:00
test-ffi-lib.c add a test for ffi and pointers 2010-01-27 22:25:29 +01:00
test-list.c Remove unneeded #include <assert.h>. 2009-12-15 20:20:38 +01:00
test-loose-ends.c Fill code coverage holes in continuations.c and keywords.c 2009-11-04 00:00:09 +00:00
test-num2integral.c Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
test-require-extension Use `-q' when running standalone tests. 2008-07-06 23:58:38 +02:00
test-round.c Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
test-scm-c-read.c Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
test-scm-take-locale-symbol.c Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
test-scm-take-u8vector.c Add test case for `scm_take_u8vector ()'. 2009-09-03 00:57:24 +02:00
test-scm-with-guile.c Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
test-srfi-1.c Start rewriting SRFI-1 in Scheme. 2010-07-21 01:07:56 +02:00
test-system-cmds Use `-q' when running standalone tests. 2008-07-06 23:58:38 +02:00
test-unwind.c make scm_make_continuation internal 2010-02-08 13:35:06 +01:00
test-use-srfi.in Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
test-with-guile-module.c Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00

-*-text-*-

These tests use the standard automake TESTS mechanism.  Tests should
be listed in TESTS in Makefile.am, and should exit with 0 on success,
non-zero on failure, and 77 if the result should be ignored.  See the
automake info pages for more information.

If you want to use a scheme script, prefix it as follows:

  #!/bin/sh
  exec guile -s "$0" "$@"
  !#

Makefile.am will arrange for all tests (scripts or executables) to be
run under uninstalled-env so that the PATH, LD_LIBRARY_PATH, and
GUILE_LOAD_PATH will be augmented appropriately.

The Makefile.am has an example of creating a shared library to be used
from a test scheme script as well.

You can also create standalone executables that include your own code,
are linked against libguile, and that run a given test script (or
scripts).  One way to do this is to create the binary, make sure it
calls scm_shell (argc, argv) as its final action, and put this bit at
the top of your test script:

  #!./my-test-binary -s
  !#