From 602c7b033101e97b4deba7a108cee3b018daedc3 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 7 Dec 2019 17:10:31 -0700 Subject: [PATCH] avoid some GC tests on CGC Relevant to #2954 #2955 --- pkgs/racket-test-core/tests/racket/hash.rktl | 17 +++++++------ .../racket-test-core/tests/racket/unsafe.rktl | 25 ++++++++++--------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/pkgs/racket-test-core/tests/racket/hash.rktl b/pkgs/racket-test-core/tests/racket/hash.rktl index fb41a3bc31..902256d807 100644 --- a/pkgs/racket-test-core/tests/racket/hash.rktl +++ b/pkgs/racket-test-core/tests/racket/hash.rktl @@ -366,14 +366,15 @@ '((1 2 3 4 5 6 7 8 9 10) . val)) (test #f hash-iterate-next ht i) - ;; collect key, everything should error - (collect-garbage) - (test #t boolean? (hash-iterate-first ht)) - (err/rt-test (hash-iterate-key ht i) exn:fail:contract? err-msg) - (err/rt-test (hash-iterate-value ht i) exn:fail:contract? err-msg) - (err/rt-test (hash-iterate-pair ht i) exn:fail:contract? err-msg) - (err/rt-test (hash-iterate-key+value ht i) exn:fail:contract? err-msg) - (test #f hash-iterate-next ht i)) + (unless (eq? 'cgc (system-type 'gc)) + ;; collect key, everything should error + (collect-garbage) + (test #t boolean? (hash-iterate-first ht)) + (err/rt-test (hash-iterate-key ht i) exn:fail:contract? err-msg) + (err/rt-test (hash-iterate-value ht i) exn:fail:contract? err-msg) + (err/rt-test (hash-iterate-pair ht i) exn:fail:contract? err-msg) + (err/rt-test (hash-iterate-key+value ht i) exn:fail:contract? err-msg) + (test #f hash-iterate-next ht i))) ;; Check that unsafe mutable hash table operations do not segfault ;; after getting valid index from unsafe-mutable-hash-iterate-first and -next. diff --git a/pkgs/racket-test-core/tests/racket/unsafe.rktl b/pkgs/racket-test-core/tests/racket/unsafe.rktl index e2b36db78b..e8834df520 100644 --- a/pkgs/racket-test-core/tests/racket/unsafe.rktl +++ b/pkgs/racket-test-core/tests/racket/unsafe.rktl @@ -840,18 +840,19 @@ '((1 2 3 4 5 6 7 8 9 10) . val)) (test #t boolean? (unsafe-weak-hash-iterate-next ht i)) - ;; collect key, everything should error (but not segfault) - (collect-garbage)(collect-garbage)(collect-garbage) - (test #t boolean? (unsafe-weak-hash-iterate-first ht)) - (err/rt-test (unsafe-weak-hash-iterate-key ht i) exn:fail:contract? err-msg) - (test 'gone unsafe-weak-hash-iterate-key ht i 'gone) - (err/rt-test (unsafe-weak-hash-iterate-value ht i) exn:fail:contract? err-msg) - (test 'gone unsafe-weak-hash-iterate-value ht i 'gone) - (err/rt-test (unsafe-weak-hash-iterate-pair ht i) exn:fail:contract? err-msg) - (test '(gone . gone) unsafe-weak-hash-iterate-pair ht i 'gone) - (err/rt-test (unsafe-weak-hash-iterate-key+value ht i) exn:fail:contract? err-msg) - (test-values '(gone gone) (lambda () (unsafe-weak-hash-iterate-key+value ht i 'gone))) - (test #f unsafe-weak-hash-iterate-next ht i)) + (unless (eq? 'cgc (system-type 'gc)) + ;; collect key, everything should error (but not segfault) + (collect-garbage)(collect-garbage)(collect-garbage) + (test #t boolean? (unsafe-weak-hash-iterate-first ht)) + (err/rt-test (unsafe-weak-hash-iterate-key ht i) exn:fail:contract? err-msg) + (test 'gone unsafe-weak-hash-iterate-key ht i 'gone) + (err/rt-test (unsafe-weak-hash-iterate-value ht i) exn:fail:contract? err-msg) + (test 'gone unsafe-weak-hash-iterate-value ht i 'gone) + (err/rt-test (unsafe-weak-hash-iterate-pair ht i) exn:fail:contract? err-msg) + (test '(gone . gone) unsafe-weak-hash-iterate-pair ht i 'gone) + (err/rt-test (unsafe-weak-hash-iterate-key+value ht i) exn:fail:contract? err-msg) + (test-values '(gone gone) (lambda () (unsafe-weak-hash-iterate-key+value ht i 'gone))) + (test #f unsafe-weak-hash-iterate-next ht i))) ;; Check that unsafe mutable hash table operations do not segfault ;; after getting valid index from unsafe-mutable-hash-iterate-first and -next.