diff --git a/test/test-redundant-recompile.asd b/test/test-redundant-recompile.asd
new file mode 100644
index 0000000000000000000000000000000000000000..a69d558cadaa9de26d65a967aa1f3e9c10dcd673
--- /dev/null
+++ b/test/test-redundant-recompile.asd
@@ -0,0 +1,16 @@
+;;; -*- Lisp -*-
+(asdf:defsystem test-redundant-recompile
+  :components ((:file "file2" :in-order-to ((compile-op (load-op "file1"))
+                                            (load-op (load-op "file1"))))
+               (:file "file1")))
+
+#|
+;;;This test system definition attempts to replicate the excess dependencies
+;;;that seem to give rise to launchpad bug 590517
+;;;(https://bugs.launchpad.net/asdf/+bug/590517)
+
+1) from clean, check that all fasl files build and that some function
+   defined in the second file is present
+
+2) load again.  Check to make sure that nothing is recompiled.
+|#
diff --git a/test/test-redundant-recompile.script b/test/test-redundant-recompile.script
new file mode 100644
index 0000000000000000000000000000000000000000..9f16fcba8f258a7e3bd324bd385de6ee3aa25a09
--- /dev/null
+++ b/test/test-redundant-recompile.script
@@ -0,0 +1,28 @@
+;;; -*- Lisp -*-
+(load "script-support")
+(load-asdf)
+
+(quit-on-error
+ (setf asdf:*central-registry* '(*default-pathname-defaults*))
+ (asdf:operate 'asdf:load-op 'test-redundant-recompile)
+ ;; test that it compiled
+ (let* ((file1 (asdf:compile-file-pathname* "file1"))
+        (file2 (asdf:compile-file-pathname* "file2"))
+        (file1-date (file-write-date file1))
+        (file2-date (file-write-date file2)))
+
+   (format t "~&test-redundant-recompile 1: ~S ~S~%" file1 file1-date)
+   (format t "~&test-redundant-recompile 2: ~S ~S~%" file2 file2-date)
+   (assert file1-date)
+   (assert file2-date)
+
+   ;; and loaded
+   (assert (symbol-value (find-symbol (symbol-name :*file1*) :test-package)))
+
+   ;; now rerun the load-op and check that no files are recompiled
+
+   ;;(trace asdf::operation-done-p asdf::traverse)
+   (asdf:operate 'asdf:load-op 'test-redundant-recompile)
+   (assert (= file1-date (file-write-date file1)))
+   (assert (= file2-date (file-write-date file2)))))
+