#!/bin/sh # The plain page hands over a repository's own bytes rather than a rendered # view of them, so these checks read the response headers and then compare # the body against what git says the blob holds. A file with no better guess # is served as text unless its bytes look binary, a directory answers with a # bare listing of links rather than one of the themed pages, and a path that # names nothing has to come 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 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 "
  • 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