blob: 2fbe87f4a6feade937d6d34a8687fdd7e23c9a83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/bin/sh

# The plain page hands over a repository's own bytes. A file with no better
# guess is served as text unless its bytes look binary, a directory answers
# with a bare listing of links, and a path that names nothing comes back as
# a 404 rather than an empty document.

test_description='Check content on plain page'
. ./setup.sh

test_expect_success 'generate foo/plain/file-1' '
	cgit_url "foo/plain/file-1" >tmp
'

test_expect_success 'a text file is served as text/plain' '
	head -n 1 tmp | grep "Status: 200 OK" &&
	sed "/^$/q" tmp | grep "Content-Type: text/plain"
'

test_expect_success 'the body carries the blob byte for byte' '
	strip_headers <tmp >body &&
	git -C repos/foo show master:file-1 >expect &&
	test_cmp expect body
'

test_expect_success 'a missing path is a 404' '
	cgit_url "foo/plain/no-such-file" >tmp &&
	head -n 1 tmp | grep "Status: 404"
'

test_expect_success 'a directory answers with a listing of links' '
	cgit_url "foo/plain" >tmp &&
	grep "<li><a href=" tmp &&
	grep "file-1" tmp &&
	grep "file-5" tmp
'

test_expect_success 'a blob whose bytes look binary is served as octet-stream' '
	(
		cd repos/foo &&
		printf "\000\001\002" >blob.bin &&
		git add blob.bin &&
		git commit -m binary
	) &&
	cgit_url "foo/plain/blob.bin" >tmp &&
	sed "/^$/q" tmp | grep "Content-Type: application/octet-stream"
'

test_done