aboutsummaryrefslogtreecommitdiffstats
path: root/test/src
diff options
context:
space:
mode:
authorPhilipp Stephani2020-07-25 23:04:05 +0200
committerPhilipp Stephani2020-07-26 14:31:49 +0200
commitbde5f5f8978f704f24cce2fc7beec8c740d0e331 (patch)
treea0d974e7ac975edc32270ce203db24ea6290982d /test/src
parent4b3085a7fe8980432aa63ddf614fee2a6fb04e94 (diff)
downloademacs-bde5f5f8978f704f24cce2fc7beec8c740d0e331.tar.gz
emacs-bde5f5f8978f704f24cce2fc7beec8c740d0e331.zip
Backport: Add module test for edge case.
This backports commit 6355a3ec62 from master. Since the bug isn’t present in emacs-27, just backport the test case. * test/data/emacs-module/mod-test.c (Fmod_test_invalid_store_copy): New test module function. (emacs_module_init): Export it. * test/src/emacs-module-tests.el (module--test-assertions--load-non-live-object-with-global-copy): New unit test.
Diffstat (limited to 'test/src')
-rw-r--r--test/src/emacs-module-tests.el18
1 files changed, 18 insertions, 0 deletions
diff --git a/test/src/emacs-module-tests.el b/test/src/emacs-module-tests.el
index 6f14d4f7fa3..de707a4243a 100644
--- a/test/src/emacs-module-tests.el
+++ b/test/src/emacs-module-tests.el
@@ -270,6 +270,24 @@ must evaluate to a regular expression string."
270 (mod-test-invalid-store) 270 (mod-test-invalid-store)
271 (mod-test-invalid-load))) 271 (mod-test-invalid-load)))
272 272
273(ert-deftest module--test-assertions--load-non-live-object-with-global-copy ()
274 "Check that -module-assertions verify that non-live objects aren't accessed.
275This differs from `module--test-assertions-load-non-live-object'
276in that it stows away a global reference. The module assertions
277should nevertheless detect the invalid load."
278 (skip-unless (or (file-executable-p mod-test-emacs)
279 (and (eq system-type 'windows-nt)
280 (file-executable-p (concat mod-test-emacs ".exe")))))
281 ;; This doesn't yet cause undefined behavior.
282 (should (eq (mod-test-invalid-store-copy) 123))
283 (module--test-assertion (rx "Emacs value not found in "
284 (+ digit) " values of "
285 (+ digit) " environments\n")
286 ;; Storing and reloading a local value causes undefined behavior,
287 ;; which should be detected by the module assertions.
288 (mod-test-invalid-store-copy)
289 (mod-test-invalid-load)))
290
273(ert-deftest module--test-assertions--call-emacs-from-gc () 291(ert-deftest module--test-assertions--call-emacs-from-gc ()
274 "Check that -module-assertions prevents calling Emacs functions 292 "Check that -module-assertions prevents calling Emacs functions
275during garbage collection." 293during garbage collection."