diff --git a/test/test-system-pathnames.asd b/test/test-system-pathnames.asd
new file mode 100644
index 0000000000000000000000000000000000000000..37f6973e33fcb2d3c21d1d349ab6deca7db4dbf0
--- /dev/null
+++ b/test/test-system-pathnames.asd
@@ -0,0 +1,9 @@
+;;; -*- Lisp -*-
+
+(defsystem :test-system-pathnames
+  :pathname "sources/level1/"
+  :components
+  ((:file "file1")
+   (:file "file2" :pathname "level2/file2")
+   (:static-file "level2/static.file")
+   (:static-file "test-tmp.cl")))
diff --git a/test/test-system-pathnames.script b/test/test-system-pathnames.script
new file mode 100644
index 0000000000000000000000000000000000000000..9d2355fa57246cd85bdd537f18df75429af64d64
--- /dev/null
+++ b/test/test-system-pathnames.script
@@ -0,0 +1,57 @@
+;;; -*- Lisp -*-
+(load "script-support")
+(load-asdf)
+
+(quit-on-error
+ (setf asdf:*central-registry* '(*default-pathname-defaults*))
+ (trace asdf:perform)
+ (asdf:load-system 'test-system-pathnames)
+ (flet ((submodule (module name)
+          (find name (asdf:module-components module)
+                :key #'asdf:component-name :test #'equal))
+        (pathname-foo (x)
+          (list (pathname-directory x) (pathname-name x) (pathname-type x))))
+   (let* ((system (asdf:find-system "test-module-pathnames"))
+          (level1 (submodule system "sources/level1"))
+          (static (submodule level1 "level2/static.file"))
+          (test-tmp (submodule level1 "test-tmp.cl")))
+     (assert (member (pathname-foo (asdf:component-relative-pathname test-tmp))
+                     '(((:relative) "test-tmp" "cl")
+                       (nil "test-tmp" "cl")) :test 'equal)
+             () "Didn't get the name of test-tmp.cl right")
+     (assert (equal
+              (pathname-foo (asdf:component-relative-pathname static))
+              '((:relative "level2") "static" "file"))
+             () "Didn't get the name of static.file right")))
+ (assert (find-package :test-package)
+         () "package test-package not found")
+ (assert (find-symbol (symbol-name '*file-tmp*) :test-package)
+         () "symbol `*file-tmp*` not found")
+ (assert (symbol-value (find-symbol (symbol-name '*file-tmp*) :test-package))
+         () "symbol `*file-tmp*` has wrong value")
+
+#| ; must be adapted to ABL
+ (assert (probe-file (merge-pathnames
+                      (make-pathname
+                       :name "file1"
+                       :type (pathname-type (compile-file-pathname "x"))
+                       :directory '(:relative "sources" "level1"))))
+         nil "compiled file not found")
+|#
+
+ (assert (find-symbol (symbol-name '*file-tmp2*) :test-package) nil
+         "symbol `*file-tmp2*` not found")
+ (assert (symbol-value (find-symbol (symbol-name '*file-tmp2*) :test-package))
+         nil "symbol `*file-tmp2*` has wrong value")
+
+#| ; must be adapted to ABL
+
+ (assert (probe-file (merge-pathnames
+                      (make-pathname
+                       :name "file2"
+                       :type (pathname-type (compile-file-pathname "x"))
+                       :directory '(:relative "sources" "level1" "level2"))))
+         nil "compiled file not found")
+|#
+
+)