1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-01 04:10:18 +02:00
Commit graph

1263 commits

Author SHA1 Message Date
Andy Wingo
e275b8a220 rename unif.test to arrays.test
* test-suite/tests/arrays.test: Move all unif.test here. Unif.test was
  mostly testing arrays anyway. Incorporate the existing arrays.test.

* test-suite/tests/unif.test: Deleted.
* test-suite/Makefile.am: Update.
2010-03-31 21:17:05 +02:00
Ludovic Courtès
28828f40eb Move another GOOPS-less test at the beginning.
* test-suite/tests/eval.test ("promises")["extended promise
  behaviour"]("implicit forcing is not supported"): Move...
* test-suite/tests/00-initial-env.test ("goopsless"): ... here.
2010-03-31 14:54:43 +02:00
Ludovic Courtès
cedf24d8bd Add separate test file for GOOPS-less tests.
* test-suite/tests/00-initial-env.test: New file.

* test-suite/Makefile.am (SCM_TESTS): Add `tests/00-initial-env.test'.

* test-suite/tests/numbers.test ("+")["wrong type argument"]: Move to
  `00-initial-env.test'.
2010-03-31 11:38:02 +02:00
Ludovic Courtès
bd7131d3ad Add rudimentary ECMAScript tests.
* test-suite/Makefile.am (SCM_TESTS): Add `tests/ecmascript.test'.

* test-suite/tests/ecmascript.test: New file.
2010-03-31 00:42:01 +02:00
Andy Wingo
3ffd1ba96e fix equal? between an array and a non-array
OK let's try again. While the thanks go to Daniel Llorens del Río for
the tip, the blame continues going to me :)

* test-suite/Makefile.am:
* test-suite/tests/arrays.test: Add a test.

* libguile/array-map.c (raeql): Handle a few 0-dimensional cases. If the
  shapes of the arrays don't match, just return #f instead of raising
  an error.
2010-03-31 00:05:01 +02:00
Andy Wingo
d26383f427 Revert "fix equal? between an array and a non-array"
This reverts commit 9d031d4d57.
2010-03-30 23:51:40 +02:00
Andy Wingo
9d031d4d57 fix equal? between an array and a non-array
* libguile/eq.c (scm_equal_p): Only call scm_array_equal_p if both
  arguments are generalized arrays; otherwise they are not equal. Thanks
  to Daniel Llorens del Río for the tip.

* test-suite/Makefile.am:
* test-suite/tests/arrays.test: Add a test.
2010-03-30 21:23:06 +02:00
Andy Wingo
7f10a113c5 fix srfi-31 check after macroexpand rename
* test-suite/tests/srfi-31.test: ("rec special form"): Fix check.
2010-03-19 17:05:46 +01:00
Ludovic Courtès
ef7e4ba373 Improve encoding error reporting.
* libguile/strings.c (scm_encoding_error): Change arguments to convey
  more information.  Raise the error with `scm_throw ()', passing all
  the information to the handler.
  (scm_from_stringn, scm_to_stringn): Update accordingly.

* test-suite/tests/ports.test ("string ports")["wrong encoding"]: Check
  the arguments passed to the `throw' handler.

* test-suite/tests/r6rs-ports.test ("7.2.11 Binary
  Output")["put-bytevector with wrong-encoding string port"]: Likewise.
2010-03-18 20:41:03 +01:00
Ludovic Courtès
5595bd7641 Remove obsolete test directory.
* test-suite/tests/c-api: Remove.
2010-03-17 00:54:01 +01:00
Andy Wingo
89607fab50 version.h has SCM_EFFECTIVE_VERSION; effective-version uses that
* libguile/version.c (scm_effective_version): Use SCM_EFFECTIVE_VERSION.
* libguile/version.h.in (SCM_EFFECTIVE_VERSION): Define from
  GUILE_EFFECTIVE_VERSION.

* libguile/Makefile.am (version.h): Subst in GUILE_EFFECTIVE_VERSION.

* test-suite/tests/version.test ("version reporting works"): The
  effective version is not necessarily MAJOR.MINOR. Remove check.
2010-03-16 21:20:29 +01:00
Ludovic Courtès
d3b5628c6d doc: Remove obsolete reference to the lack of Unicode support.
* doc/ref/api-data.texi (Bytevectors as Strings): Remove obsolete
  footnote on the lack of Unicode support.

* test-suite/tests/bytevectors.test ("2.9 Operations on
  Strings")["string->utf8 [latin-1]", "utf8->string [latin-1]"]: Remove
  use of `with-latin1-locale'.
  ["string->utf32 [Greek]"]: New tests.
2010-03-14 23:41:10 +01:00
Andy Wingo
9f07451836 add abort to unknown prompt test
* libguile/control.c (scm_c_abort): Change error string if a prompt
  isn't found.

* test-suite/tests/control.test ("abort to unknown prompt"): New test.
2010-03-11 22:36:15 +01:00
Andy Wingo
8fc43b12c7 prompt, abort -> call-with-prompt, abort-to-prompt
* module/ice-9/boot-9.scm (default-prompt-tag, make-prompt-tag): New
  functions.
  (call-with-prompt, abort-to-prompt): Rename from `prompt' and `abort',
  respectively. These names are more clear, and allow `prompt' and
  `abort' to have more convenient, less general bindings.
  (default-throw-handler, custom-throw-handler, catch, %start-stack):
  Adapt callers.

* module/ice-9/control.scm: Adapt re-export list.
  (control): Remove binding, until we're sure that it is Sitaram's
  control.
  (abort): New binding, aborts to the nearest prompt with the default
  tag.
  (%): Use call-with-prompt.

* module/language/tree-il/primitives.scm (*primitive-expand-table*):
  (*interesting-primitive-names*): Adapt for prompt/abort changes.

* test-suite/tests/control.test: Take advantage of the defaults for %
  and abort.
2010-03-09 22:24:25 +01:00
Ludovic Courtès
5af3378aab Don't export write-bytecode' from (language assembly compile-bytecode)'.
* module/language/assembly/compile-bytecode.scm: Don't export
  `write-bytecode'.

* test-suite/tests/asm-to-bytecode.test (write-bytecode): New global
  variable.
2010-03-07 23:53:22 +01:00
Ludovic Courtès
ba7e7139b3 Add wide-string compilation test.
* test-suite/tests/asm-to-bytecode.test ("compiler")[load-wide-string
  "λ"]: New test.
2010-03-07 23:51:40 +01:00
Ludovic Courtès
1caa6341b0 Fix miscompilation of non-ASCII Latin-1 strings.
The bug was introduced dad6817f ("Use the R6RS I/O API in
`write-bytecode'.").

* module/language/assembly/compile-bytecode.scm
  (write-bytecode)[write-string]: Rename to...
  [write-latin1-string]: ... this.  Add the `write-loader-len' call.
  Write each character individually instead of using `string->utf8'.
  [write-loader]: Remove.

* test-suite/tests/asm-to-bytecode.test ("compiler")[load-string "æ"]:
  New test.
2010-03-07 23:45:14 +01:00
Ludovic Courtès
c02924d02b Add new fluid tests.
* test-suite/tests/fluids.test ("initial fluid values")["initial value
  is inherited from parent thread"]: New test.
  ("fluid values are thread-local"): New test.
2010-03-05 13:38:57 +01:00
Ludovic Courtès
dec84a0a6e Try to avoid `guile-test' failures when it can't display the name of a test.
This can happen, e.g., when printing "UNRESOLVED: regexp.test: TEST-NAME",
where TEST-NAME contains characters that cannot be converted to the
encoding of the current output or error port.

* test-suite/guile-test (main): Set the conversion strategy for the
  output and error ports to `escape'.

* test-suite/tests/regexp.test (current-output-port): Likewise.
2010-03-04 11:32:51 +01:00
Ludovic Courtès
1c242b37f0 Use with-latin1-locale' in regexp.test'.
As a side effect, it fixes tests on platforms with no 8-bit locale and
where executing regexps on characters >= 128 can lead to errors such as
`cannot convert to output locale "US-ASCII": ""\x80""'.

This commit partially reverts 7583976b ("More setlocale robustness in
regexp tests").

* test-suite/tests/regexp.test (mysetlocale, set-latin-1): Remove.
  ("regexp-quote"): Use `with-latin1-locale' instead of the above
  procedures.
2010-03-04 00:47:21 +01:00
Ludovic Courtès
c45de346fd Move Latin-1 locale fiddling to `(test-suite lib)'.
* test-suite/lib.scm (with-latin1-locale*): New procedure.
  (with-latin1-locale): New macro.

* test-suite/tests/bytevectors.test (with-locale, with-latin1-locale):
  Remove.  Adjust users.
2010-03-04 00:39:18 +01:00
Andy Wingo
54096be752 psyntax expander tracks changes to current module in top-level begin
* module/ice-9/psyntax-pp.scm: Regenerated.
* module/ice-9/psyntax.scm (chi-top-sequence): Track changes to the
  current module. Allows e.g. top-level `define-module' within a begin
  to work.

* test-suite/tests/syncase.test ("changes to expansion environment"):
  Enable test.
2010-03-03 23:09:08 +01:00
Andy Wingo
05c51bcff5 use anonymous mv-bind in compile-glil.scm; fix abort compilation bug
* module/language/tree-il/compile-glil.scm (flatten): Change to use the
  anonymous <glil-mv-bind> form when truncating to 0 or 1 values. In
  those cases, remove the <glil-unbind> statements. As a side effect,
  fixes compilation of abort in a "values" context.

  Thanks to Tristan Colgate for the bug report.

* test-suite/tests/tree-il.test: Update to expect anonymous mv-bind.
2010-03-03 21:01:05 +01:00
Andy Wingo
da7497e0fd add more tests to control.test
* test-suite/tests/control.test ("restarting partial continuations"):
  Add more tests, for `abort' in different positions. All succeed in the
  evaluator but fail with the compiler.
2010-03-03 20:57:35 +01:00
Ludovic Courtès
3278efd3fa Add test checking whether fluids are GC'd.
* test-suite/tests/fluids.test ("fluids are GC'd"): New test.
2010-03-03 00:36:41 +01:00
Ludovic Courtès
b8ed3de36e Fix "coding:" cookies in the test suite.
* test-suite/tests/bytevectors.test, test-suite/tests/keywords.test,
  test-suite/tests/procprop.test, test-suite/tests/srfi-35.test,
  test-suite/tests/srfi-88.test: Add "coding:" cookie on the first line.
2010-03-02 23:36:29 +01:00
Ludovic Courtès
d900a8557d Fix off-by-one error when initializing vectors in `make-srfi-4-vector'.
* libguile/srfi-4.c (scm_make_srfi_4_vector): When FILL is bound and
  non-zero, initialize the last element.

* test-suite/tests/srfi-4.test ("TAG vectors")["make-TAGvector"]: New
  tests.
2010-03-02 23:16:26 +01:00
Julian Graham
d524964774 Change failing syncase test case to UNRESOLVED.
* test-suite/tests/syncase.test:
  ("expander detects changes to current-module"): Throw 'unresolved instead of
  returning #f.
2010-03-01 22:15:45 -05:00
Julian Graham
a2f7536db0 add (currently failing) test case for changing the current module inside
`begin' form

* test-suite/tests/syncase.scm: ("expander detects changes to current-module"):
  New test case.
2010-02-27 15:04:56 -05:00
Andy Wingo
adbdfd6d24 rewinding prompts works
* libguile/control.h (SCM_PROMPT_HANDLER): Remove, it was unused.
  (SCM_PROMPT_DYNWINDS): Rename from SCM_PROMPT_DYNENV.

* libguile/control.c: (scm_c_make_prompt): Take another arg, the winds
  that are to be in place for the prompt. Fix allocation to be 4 words
  instead of 5 (the handler was never used).

* libguile/eval.c (eval):
* libguile/throw.c (pre_init_catch): Adapt to scm_c_make_prompt change.

* libguile/vm-i-system.c (partial-cont-call): Grovel the new elements of
  the wind list in order to call setjmp() on the new prompts. Pass
  cookie to vm_reinstate_partial_continuation.
  (prompt): Adapt to scm_c_make_prompt change.

* libguile/vm.c (vm_reinstate_partial_continuation): Take a cookie arg,
  used when winding captured prompts onto the stack. Winding a prompt
  implies making a new prompt, actually -- with new registers, a new
  jump buffer, new winds, etc.

* test-suite/tests/control.test ("rewinding prompts"): Add a test for
  rewinding prompts.
2010-02-26 13:05:25 +01:00
Andy Wingo
e10cf6b9c7 deprecate lazy-catch
* libguile/deprecated.h:
* libguile/deprecated.c (scm_internal_lazy_catch, scm_lazy_catch):
  Deprecate, and print out a nasty warning that people should change to
  with-throw-handler.

* libguile/throw.h:
* libguile/throw.c (scm_c_with_throw_handler): Deprecate the use of the
  lazy_catch_p argument, printing out a nasty warning if someone
  actually passes 1 as that argument. The combination of the pre-unwind
  and post-unwind handlers should be sufficient.

* test-suite/tests/exceptions.test: Remove lazy-catch tests, as they are
  deprecated. Two of them fail:
  * throw/catch: effect of lazy-catch unwinding on throw to another key
  * throw/catch: repeat of previous test but with lazy-catch
  Hopefully people are not depending on this behavior, and the warning is
  sufficiently nasty for people to switch. We will see.

* test-suite/tests/eval.test ("promises"): Use with-throw-handler
  instead of lazy-catch.

* doc/ref/api-debug.texi:
* doc/ref/api-control.texi: Update to remove references to lazy-catch,
  folding in the useful bits to with-throw-handler.
2010-02-26 11:56:02 +01:00
Andy Wingo
da7fa082e8 more substance to control.test
* test-suite/tests/control.test ("suspend/resume with fluids"):
  ("restarting partial continuations"):
  ("reified continuations", "escape-only continuations"): More tests.
eval.scm's handling of with-fluids doesn't leave the VM

* module/ice-9/eval.scm (primitive-eval): Implement with-fluids in terms
  of with-fluids, to avoid recursively calling the VM via with-fluids*.
2010-02-25 00:43:52 +01:00
Andy Wingo
ce4c9a6d00 start of tests for (ice-9 control)
* test-suite/Makefile.am:
* test-suite/tests/control.test: Add the beginnings of a delimited
  continuations test suite.
2010-02-24 23:33:20 +01:00
Andy Wingo
bb0229b51d add with-fluids objects and primitive syntax
* libguile/tags.h (scm_tc7_with_fluids): Allocate a tc7 for
  "with-fluids" objects, which will only live on the dynamic stack (wind
  list), not in normal scheme-land.

* libguile/fluids.h (SCM_WITH_FLUIDS_P, SCM_WITH_FLUIDS_LEN)
  (SCM_WITH_FLUIDS_NTH_FLUID, SCM_WITH_FLUIDS_NTH_VAL)
  (SCM_WITH_FLUIDS_SET_NTH_VAL): Add some accessors.
* libguile/fluids.c (scm_i_make_with_fluids, scm_i_swap_with_fluids):
  New internal functions.
  (scm_c_with_fluids, scm_c_with_fluid): Push with-fluids objects on the
  dynwind list, not winders.

* libguile/dynwind.c (scm_i_dowinds): Add cases for winding and
  unwinding with-fluids objects.

* libguile/memoize.h (scm_sym_with_fluids, SCM_M_BEGIN): New public
  data.
* libguile/memoize.c (scm_m_with_fluids): Define with-fluids as a
  primitive syntax.
  (unmemoize): Add with-fluids case.

* libguile/eval.c (eval):
* module/ice-9/eval.scm (primitive-eval): Add with-fluids cases.

* test-suite/tests/fluids.test
  ("fluids not modified if nonfluid passed to with-fluids"): Enable a
  now-passing test.
2010-02-18 22:15:43 +01:00
Andy Wingo
27bd1deced add fluid tests
* test-suite/Makefile.am:
* test-suite/tests/fluids.test: Add some fluid tests. One is an XFAIL
  right now.
2010-02-18 22:15:43 +01:00
Ludovic Courtès
2b386ab09f Skip "wrong service name" `getaddrinfo' test on Darwin 9.2.
* test-suite/tests/net-db.test ("getaddrinfo")["wrong service name"]:
  Skip test on Darwin 9.2.
2010-02-16 20:57:13 +01:00
Ludovic Courtès
3ea159afc5 Add `getaddrinfo' test.
* test-suite/tests/net-db.test ("getaddrinfo")["port 80 with family and
  socket type"]: New test.
2010-02-15 18:43:20 +01:00
Ludovic Courtès
25bc75c431 Fix `getaddrinfo' tests.
Thanks to Ken Raeburn.

* test-suite/tests/net-db.test ("getaddrinfo")["port 80"]: Fix bogus
  check of `addrinfo:flags' (POSIX says that the "contents of the
  ai_flags field of the returned structures are undefined.").
  ("wrong service name"): Accept `EAI_NONAME' as a valid error code.
2010-02-15 16:10:01 +01:00
Ludovic Courtès
2fe5eb561c Make the `getaddrinfo' "no name" test more robust.
* test-suite/tests/net-db.test ("getaddrinfo")["no name"]: Check for
  `EAI_EAGAIN' too.
2010-02-15 00:43:20 +01:00
Ludovic Courtès
55ae00ea73 Add `getaddrinfo' and related procedures.
* libguile/net_db.c (sym_getaddrinfo_error, sym_ai_passive,
  sym_ai_canonname, sym_ai_numerichost, sym_ai_numericserv,
  sym_ai_v4mapped, sym_ai_all, sym_ai_addrconfig, sym_eai_badflags,
  sym_eai_noname, sym_eai_again, sym_eai_fail, sym_eai_family,
  sym_eai_socktype, sym_eai_service, sym_eai_memory, sym_eai_system,
  sym_eai_overflow, sym_eai_nodata, sym_eai_addrfamily,
  sym_eai_inprogress, sym_eai_canceled, sym_eai_notcanceled,
  sym_eai_alldone, sym_eai_intr, sym_eai_idn_encode): New variables.
  (scm_from_addrinfo, scm_getaddrinfo, scm_gai_strerror): New functions.

* libguile/net_db.h (scm_getaddrinfo, scm_gai_strerror): New functions.

* module/ice-9/networking.scm (addrinfo:flags, addrinfo:fam,
  addrinfo:socktype, addrinfo:protocol, addrinfo:addr,
  addrinfo:canonname): New procedures.

* test-suite/tests/net-db.test: New file.

* test-suite/Makefile.am (SCM_TESTS): Add `tests/net-db.test'.

* doc/ref/posix.texi (Network Databases)[getaddrinfo]: New subsection.
  [The Host Database]: Suggest using `getaddrinfo'.
2010-02-14 20:56:47 +01:00
Ludovic Courtès
bde92e6b3b Change `write-bytecode' to accept a bytevector.
* module/language/assembly/compile-bytecode.scm (write-bytecode):
  Replace the WRITE-BYTE and GET-ADDR parameters with PORT.  New ADDRESS
  and EMIT-OPCODE? parameters.  Callers updated.
  [write-byte, get-addr]: New procedures.
  Adjust to write to PORT.
  (compile-bytecode): Update accordingly.

* test-suite/tests/asm-to-bytecode.test (munge-bytecode): Return a
  bytevector instead of a u8vector.
  (comp-test): Deal with bytevectors.
2010-02-10 00:40:01 +01:00
Ludovic Courtès
22ec6a31ed Add `(ice-9 vlist)'.
* module/ice-9/vlist.scm, test-suite/tests/vlist.test,
  benchmark-suite/benchmarks/vlists.bm: New files.

* module/Makefile.am (ICE_9_SOURCES): Add `vlist.scm'.

* test-suite/Makefile.am (SCM_TESTS): Add `tests/vlist.test'.

* benchmark-suite/Makefile.am (SCM_BENCHMARKS): Add
  `benchmarks/vlists.bm'.

* doc/ref/api-compound.texi (VLists, VHashes): New nodes.
2010-02-03 00:02:14 +01:00
Ludovic Courtès
30a700c8c1 Inline SRFI-9 constructors too.
* module/srfi/srfi-9.scm (define-record-type)[constructor]: Use
  `define-inlinable' instead of `define'.

* test-suite/lib.scm (exception:syntax-pattern-unmatched): New variable.

* test-suite/tests/srfi-9.test ("constructor")["foo 0 args (inline)",
  "foo 2 args (inline)"]: New tests.
  ["foo 0 args", "foo 2 args"]: Adjust to constructor inlining.

* testsuite/t-records.scm: Remove wrong-arg-count case.
2010-02-01 00:25:51 +01:00
Michael Gran
d31b951951 R6RS string escapes broken on string output
scm_to_stringn failed to do the necessary escape conversion for
R6RS hex escapes

* libguile/strings.c (unistring_escapes_to_r6rs_escapes): new function
  (scm_to_stringn): use new function when r6rs hex escapes are enabled

* test-suite/tests/reader.test: new test for string display
2010-01-23 09:21:46 -08:00
Ludovic Courtès
aa42c03669 Optimize struct initialization and accessors for the common case.
* libguile/struct.c (set_vtable_layout_flags): New function.
  (scm_i_struct_inherit_vtable_magic): Use it.
  (scm_struct_init): Optimize the case where HANDLE's vtable has the
  `SCM_VTABLE_FLAG_SIMPLE' flag.
  (scm_struct_ref): Likewise.
  (scm_struct_ref): Likewise, when `SCM_VTABLE_FLAG_SIMPLE_RW' is also set.

* libguile/struct.h (SCM_VTABLE_BASE_LAYOUT): Update comment for the
  next-to-last hidden field.
  (scm_vtable_index_reserved_6): Rename to...
  (scm_vtable_index_size): ... this.
  (SCM_VTABLE_FLAG_RESERVED_0): Rename to...
  (SCM_VTABLE_FLAG_SIMPLE): ... this.
  (SCM_VTABLE_FLAG_RESERVED_1): Rename to...
  (SCM_VTABLE_FLAG_SIMPLE_RW): ... this.

* test-suite/tests/structs.test ("low-level struct
  procedures")["struct-ref", "struct-set!", "struct-ref out-of-range",
  "struct-set! out-of-range"]: New tests.
2010-01-23 16:21:13 +01:00
Ludovic Courtès
d532c41b91 Make `sockets.test' more robust.
* test-suite/tests/socket.test ("AF_INET6/SOCK_STREAM"): Gracefully
  handle cases where this combination is not supported.
2010-01-19 18:49:06 +01:00
Ludovic Courtès
adfb428466 Fix use of utimensat(2).
* libguile/posix.c (scm_utime): Use "#ifdef HAVE_UTIMENSAT", not "#if
  HAVE_UTIMENSAT".  Fix GCC warning around call to utimensat(2):
  "passing argument 3 of 'utimensat' from incompatible pointer type".

* test-suite/tests/posix.test ("utime"): New test prefix.
2010-01-19 00:23:33 +01:00
Michael Gran
2e85d145fc Move r6rs-hex-escape tests into reader.test
* test-suite/tests/reader.test (r6rs-hex-escapes): new tests

* test-suite/tests/chars.test (R6RS Hex escapes): remove tests by reverting
  to previous version

* test-suite/tests/strings.test (R6RS Hex escapes): remove tests by
  reverting to previous version
2010-01-12 21:27:30 -08:00
Michael Gran
dea901d66e Reader option for R6RS hex escapes
This adds a reader option 'r6rs-hex-escapes that modifies the
behavior of numeric escapes in characters and strings.  When enabled,
variable-length character hex escapes (#\xNNN) are allowed and become
the default output format for numerically-escaped characters.  Also,
string hex escapes switch to a semicolon terminated hex escape (\xNNNN;).

* libguile/print.c (PRINT_CHAR_ESCAPE): new macro
  (iprin1): use new macro PRINT_CHAR_ESCAPE

* libguile/private-options.h (SCM_R6RS_ESCAPES_P): new #define

* libguile/read.c (scm_read_opts): add new option r6rs-hex-escapes
  (SCM_READ_HEX_ESCAPE): modify to take a terminator parameter
  (scm_read_string): parse R6RS hex string escapes
  (scm_read_character): parse R6RS hex character escapes

* test-suite/tests/chars.test (with-read-options): new procedure
  (R6RS hex escapes): new tests

* test-suite/tests/strings.test (with-read-options): new procedure
  (R6RS hex escapes): new tests
2010-01-12 21:02:41 -08:00
Ludovic Courtès
411313403c Evaluate the export' and re-export' forms at compile-time.
* module/ice-9/boot-9.scm (export, re-export): Evaluate at compile-time
  in addition to load/eval.

* test-suite/tests/tree-il.test ("warnings")["unused-toplevel"]("unused
  but define-public"): Remove throw to `unresolved'.
2010-01-11 18:31:02 +01:00