summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--t/Makefile35
-rwxr-xr-xt/harness21
2 files changed, 55 insertions, 1 deletions
diff --git a/t/Makefile b/t/Makefile
index 819b936870..d8bf05ff6b 100644
--- a/t/Makefile
+++ b/t/Makefile
@@ -49,4 +49,37 @@ full-svn-test:
valgrind:
GIT_TEST_OPTS=--valgrind $(MAKE)
-.PHONY: pre-clean $(T) aggregate-results clean valgrind
+# Smoke testing targets
+-include ../GIT-BUILD-OPTIONS
+-include ../GIT-VERSION-FILE
+uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo unknown')
+uname_M := $(shell sh -c 'uname -m 2>/dev/null || echo unknown')
+
+test-results:
+ mkdir -p test-results
+
+test-results/git-smoke.tar.gz:
+ $(PERL_PATH) ./harness \
+ --archive="test-results/git-smoke.tar.gz" \
+ $(T)
+
+smoke: test-results/git-smoke.tar.gz
+
+SMOKE_UPLOAD_FLAGS =
+ifdef SMOKE_USERNAME
+ SMOKE_UPLOAD_FLAGS += -F username="$(SMOKE_USERNAME)" -F password="$(SMOKE_PASSWORD)"
+endif
+
+smoke_report: smoke
+ curl \
+ -H "Expect: " \
+ -F project=Git \
+ -F architecture="$(uname_M)" \
+ -F platform="$(uname_S)" \
+ -F revision="$(GIT_VERSION)" \
+ -F report_file=@test-results/git-smoke.tar.gz \
+ $(SMOKE_UPLOAD_FLAGS) \
+ http://smoke.git.nix.is/app/projects/process_add_report/1 \
+ | grep -v ^Redirecting
+
+.PHONY: pre-clean $(T) aggregate-results clean valgrind smoke smoke_report
diff --git a/t/harness b/t/harness
new file mode 100755
index 0000000000..f5c02f49b7
--- /dev/null
+++ b/t/harness
@@ -0,0 +1,21 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Getopt::Long ();
+use TAP::Harness::Archive;
+
+Getopt::Long::Parser->new(
+ config => [ qw/ pass_through / ],
+)->getoptions(
+ 'jobs:1' => \(my $jobs = $ENV{TEST_JOBS}),
+ 'archive=s' => \my $archive,
+) or die "$0: Couldn't getoptions()";
+
+TAP::Harness::Archive->new({
+ jobs => $jobs,
+ archive => $archive,
+ ($ENV{GIT_TEST_OPTS}
+ ? (test_args => [ split /\s+/, $ENV{GIT_TEST_OPTS} ])
+ : ()),
+ extra_properties => {},
+})->runtests(@ARGV);