Index: lib/Padre/Action/Run.pm
===================================================================
--- lib/Padre/Action/Run.pm	(revision 8832)
+++ lib/Padre/Action/Run.pm	(working copy)
@@ -71,6 +71,17 @@
 			$_[0]->on_run_command;
 		},
 	);
+	Padre::Action->new(
+		name        => 'run.run_tdd_tests',
+		need_file   => 1,
+		need_editor => 1,
+		label       => Wx::gettext('Build + run all Tests'),
+		comment     => Wx::gettext('Builds the current project, then run all tests.'),
+		shortcut    => 'Ctrl-Shift-F5',
+		menu_event  => sub {
+			$_[0]->on_run_tdd_tests;
+		},
+	);
 
 	Padre::Action->new(
 		name        => 'run.run_tests',
Index: lib/Padre/Wx/Main.pm
===================================================================
--- lib/Padre/Wx/Main.pm	(revision 8832)
+++ lib/Padre/Wx/Main.pm	(working copy)
@@ -1553,8 +1553,41 @@
 	return;
 }
 
-=pod
+=pod 
 
+=head3 on_run_tdd_tests
+
+   $main->on_run_tdd_tests;
+   
+Callback method, to build and then call on_run_tests
+
+=cut 
+
+sub on_run_tdd_tests {
+	my $self = shift;
+	my $document = $self->current->document;
+	unless ($document) {
+		return $self->error( Wx::gettext("No document open") );
+	}
+	
+	# Find the project
+	my $project_dir = $document->project_dir;
+	unless ($project_dir) {
+		return $self->error( Wx::gettext("Could not find project root") );
+	
+	
+	}
+	
+	my $dir = Cwd::cwd;
+	chdir $project_dir;
+	$self->run_command('perl Build test') if( -e 'Build');
+	
+	$self->run_command('make test') if( -e 'Makefile'); # this should do dmake, nmake so on
+	chdir $dir;
+}
+
+=pod 
+
 =head3 on_run_tests
 
     $main->on_run_tests;
Index: lib/Padre/Wx/Menu/Run.pm
===================================================================
--- lib/Padre/Wx/Menu/Run.pm	(revision 8832)
+++ lib/Padre/Wx/Menu/Run.pm	(working copy)
@@ -49,6 +49,11 @@
 		$self,
 		'run.run_tests',
 	);
+	
+	$self->{run_tdd_tests} = $self->add_menu_action(
+		$self,
+		'run.run_tdd_tests',
+	);
 
 	$self->{run_this_test} = $self->add_menu_action(
 		$self,
@@ -94,6 +99,11 @@
 		? $self->{run_command}->IsEnabled
 		: 0
 	);
+	$self->{run_tdd_tests}->Enable(
+		  $document && defined( $document->filename ) 
+		? $self->{run_command}->IsEnabled
+		: 0
+	);
 
 	return 1;
 }
