diff --git a/configure.ac b/configure.ac
index bac05bf..4a5fa89 100644
--- a/configure.ac
+++ b/configure.ac
@@ -683,7 +683,6 @@
 testsuite/dlopen/Makefile
 testsuite/dynparams/Makefile
 testsuite/elements/Makefile
-testsuite/ghostpads/Makefile
 testsuite/indexers/Makefile
 testsuite/negotiation/Makefile
 testsuite/pad/Makefile
diff --git a/tests/old/testsuite/Makefile.am b/tests/old/testsuite/Makefile.am
index a20019f..1b28588 100644
--- a/tests/old/testsuite/Makefile.am
+++ b/tests/old/testsuite/Makefile.am
@@ -17,7 +17,7 @@
 	bytestream caps cleanup \
 	$(GST_DEBUG_DIRS) \
 	dlopen dynparams \
-	elements ghostpads indexers negotiation pad \
+	elements indexers negotiation pad \
 	$(GST_PARSE_DIRS) \
 	plugin refcounting schedulers states threads trigger
 
@@ -25,7 +25,7 @@
 	bytestream caps cleanup \
 	debug \
 	dlopen dynparams \
-	elements ghostpads indexers negotiation pad \
+	elements indexers negotiation pad \
 	parse \
 	plugin refcounting schedulers states threads trigger
 
diff --git a/tests/old/testsuite/ghostpads/.gitignore b/tests/old/testsuite/ghostpads/.gitignore
deleted file mode 100644
index a7b1f5e..0000000
--- a/tests/old/testsuite/ghostpads/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-ghostpads
diff --git a/tests/old/testsuite/ghostpads/Makefile.am b/tests/old/testsuite/ghostpads/Makefile.am
deleted file mode 100644
index 438055d..0000000
--- a/tests/old/testsuite/ghostpads/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-include ../Rules
-
-tests_pass = ghostpads
-tests_fail = 
-tests_ignore =
diff --git a/tests/old/testsuite/ghostpads/ghostpads.c b/tests/old/testsuite/ghostpads/ghostpads.c
deleted file mode 100644
index 7d87782..0000000
--- a/tests/old/testsuite/ghostpads/ghostpads.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* GStreamer
- * Copyright (C) 2004 Andy Wingo <wingo at pobox.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <gst/gst.h>
-
-gint
-main (gint argc, gchar * argv[])
-{
-  GstElement *pipeline, *bin;
-  GstElement *fakesrc, *fakesink, *identity;
-  GstPad *sink, *src, *real = (GstPad *) 0xdeadbeef;
-
-  gst_init (&argc, &argv);
-
-  pipeline = gst_element_factory_make ("pipeline", NULL);
-  bin = gst_element_factory_make ("bin", NULL);
-  fakesrc = gst_element_factory_make ("fakesrc", NULL);
-  fakesink = gst_element_factory_make ("fakesink", NULL);
-  identity = gst_element_factory_make ("identity", NULL);
-
-  gst_bin_add_many (GST_BIN (pipeline), fakesrc, bin, fakesink, NULL);
-  gst_bin_add (GST_BIN (bin), identity);
-
-  sink = gst_element_add_ghost_pad (bin,
-      gst_element_get_pad (identity, "sink"), "sink");
-  src = gst_element_add_ghost_pad (bin,
-      gst_element_get_pad (identity, "src"), "src");
-
-  gst_element_link_many (fakesrc, bin, fakesink, NULL);
-  gst_element_set_state (pipeline, GST_STATE_PLAYING);
-
-  if (!gst_bin_iterate (GST_BIN (pipeline)))
-    g_assert_not_reached ();
-
-  gst_element_set_state (pipeline, GST_STATE_NULL);
-
-  /* test the cleanup */
-  gst_object_ref (GST_OBJECT (sink));
-  gst_object_unref ((GstObject *) pipeline);
-  g_object_get (sink, "real-pad", &real, NULL);
-  g_assert (real == NULL);
-  g_assert (G_OBJECT (sink)->ref_count == 1);
-  gst_object_unref (GST_OBJECT (sink));
-
-  return 0;
-}
diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am
index a20019f..1b28588 100644
--- a/testsuite/Makefile.am
+++ b/testsuite/Makefile.am
@@ -17,7 +17,7 @@
 	bytestream caps cleanup \
 	$(GST_DEBUG_DIRS) \
 	dlopen dynparams \
-	elements ghostpads indexers negotiation pad \
+	elements indexers negotiation pad \
 	$(GST_PARSE_DIRS) \
 	plugin refcounting schedulers states threads trigger
 
@@ -25,7 +25,7 @@
 	bytestream caps cleanup \
 	debug \
 	dlopen dynparams \
-	elements ghostpads indexers negotiation pad \
+	elements indexers negotiation pad \
 	parse \
 	plugin refcounting schedulers states threads trigger
 
diff --git a/testsuite/ghostpads/.gitignore b/testsuite/ghostpads/.gitignore
deleted file mode 100644
index a7b1f5e..0000000
--- a/testsuite/ghostpads/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-ghostpads
diff --git a/testsuite/ghostpads/Makefile.am b/testsuite/ghostpads/Makefile.am
deleted file mode 100644
index 438055d..0000000
--- a/testsuite/ghostpads/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-include ../Rules
-
-tests_pass = ghostpads
-tests_fail = 
-tests_ignore =
diff --git a/testsuite/ghostpads/ghostpads.c b/testsuite/ghostpads/ghostpads.c
deleted file mode 100644
index 7d87782..0000000
--- a/testsuite/ghostpads/ghostpads.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* GStreamer
- * Copyright (C) 2004 Andy Wingo <wingo at pobox.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <gst/gst.h>
-
-gint
-main (gint argc, gchar * argv[])
-{
-  GstElement *pipeline, *bin;
-  GstElement *fakesrc, *fakesink, *identity;
-  GstPad *sink, *src, *real = (GstPad *) 0xdeadbeef;
-
-  gst_init (&argc, &argv);
-
-  pipeline = gst_element_factory_make ("pipeline", NULL);
-  bin = gst_element_factory_make ("bin", NULL);
-  fakesrc = gst_element_factory_make ("fakesrc", NULL);
-  fakesink = gst_element_factory_make ("fakesink", NULL);
-  identity = gst_element_factory_make ("identity", NULL);
-
-  gst_bin_add_many (GST_BIN (pipeline), fakesrc, bin, fakesink, NULL);
-  gst_bin_add (GST_BIN (bin), identity);
-
-  sink = gst_element_add_ghost_pad (bin,
-      gst_element_get_pad (identity, "sink"), "sink");
-  src = gst_element_add_ghost_pad (bin,
-      gst_element_get_pad (identity, "src"), "src");
-
-  gst_element_link_many (fakesrc, bin, fakesink, NULL);
-  gst_element_set_state (pipeline, GST_STATE_PLAYING);
-
-  if (!gst_bin_iterate (GST_BIN (pipeline)))
-    g_assert_not_reached ();
-
-  gst_element_set_state (pipeline, GST_STATE_NULL);
-
-  /* test the cleanup */
-  gst_object_ref (GST_OBJECT (sink));
-  gst_object_unref ((GstObject *) pipeline);
-  g_object_get (sink, "real-pad", &real, NULL);
-  g_assert (real == NULL);
-  g_assert (G_OBJECT (sink)->ref_count == 1);
-  gst_object_unref (GST_OBJECT (sink));
-
-  return 0;
-}
