From c4b45de33458f66f5a768530d738f6c28e56cf49 Mon Sep 17 00:00:00 2001
From: Natanael Copa <natanael.copa@gmail.com>
Date: Tue, 2 Dec 2008 11:31:34 +0100
Subject: return 404 if snapshot is not found

Signed-off-by: Lars Hjemli <hjemli@gmail.com>

diff --git a/ui-snapshot.c b/ui-snapshot.c
index 6f09151..f98f5d7 100644
--- a/ui-snapshot.c
+++ b/ui-snapshot.c
@@ -175,10 +175,12 @@ void cgit_print_snapshot(const char *head, const char *hex,
 
 	if (!hex && dwim) {
 		hex = get_ref_from_filename(ctx.repo->url, filename, f);
-		if (hex != NULL) {
-			prefix = xstrdup(filename);
-			prefix[strlen(filename) - strlen(f->suffix)] = '\0';
+		if (hex == NULL) {
+			html_status(404, "Not found", 0);
+			return;
 		}
+		prefix = xstrdup(filename);
+		prefix[strlen(filename) - strlen(f->suffix)] = '\0';
 	}
 
 	if (!hex)
-- 
cgit v0.10.1


From 7bbc27458532c16b9fdbe2b54fad4db04fbd1186 Mon Sep 17 00:00:00 2001
From: Lars Hjemli <hjemli@gmail.com>
Date: Sun, 28 Dec 2008 10:52:35 +0100
Subject: tests/t0107-snapshot.sh: make testscript match updated snapshot
 behavior

Since cgit now returns a 404 error when the snapshot filename cannot be
resolved to a commit object, the testscript needs to request a valid
snapshot name.

Also, the script assumed that the toplevel directory in the snapshot
would get the name of the repository but it's now named similar to
the requested snapshot.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>

diff --git a/tests/t0107-snapshot.sh b/tests/t0107-snapshot.sh
index d97c465..5f1b862 100755
--- a/tests/t0107-snapshot.sh
+++ b/tests/t0107-snapshot.sh
@@ -4,8 +4,8 @@
 
 prepare_tests "Verify snapshot"
 
-run_test 'get foo/snapshot/test.tar.gz' '
-	cgit_url "foo/snapshot/test.tar.gz" >trash/tmp
+run_test 'get foo/snapshot/master.tar.gz' '
+	cgit_url "foo/snapshot/master.tar.gz" >trash/tmp
 '
 
 run_test 'check html headers' '
@@ -13,27 +13,27 @@ run_test 'check html headers' '
 	     grep -e "Content-Type: application/x-tar" &&
 
 	head -n 2 trash/tmp |
-	     grep -e "Content-Disposition: inline; filename=.test.tar.gz."
+	     grep -e "Content-Disposition: inline; filename=.master.tar.gz."
 '
 
 run_test 'strip off the header lines' '
-	 tail -n +6 trash/tmp > trash/test.tar.gz
+	 tail -n +6 trash/tmp > trash/master.tar.gz
 '
 
-run_test 'verify gzip format' 'gunzip --test trash/test.tar.gz'
+run_test 'verify gzip format' 'gunzip --test trash/master.tar.gz'
 run_test 'untar' '
-	rm -rf trash/foo &&
-	tar -xf trash/test.tar.gz -C trash
+	rm -rf trash/master &&
+	tar -xf trash/master.tar.gz -C trash
 '
 
 run_test 'count files' '
-	c=$(ls -1 trash/foo/ | wc -l) &&
+	c=$(ls -1 trash/master/ | wc -l) &&
 	test $c = 5
 '
 
 run_test 'verify untarred file-5' '
-	 grep -e "^5$" trash/foo/file-5 &&
-	 test $(cat trash/foo/file-5 | wc -l) = 1
+	 grep -e "^5$" trash/master/file-5 &&
+	 test $(cat trash/master/file-5 | wc -l) = 1
 '
 
 tests_done
-- 
cgit v0.10.1