AgeCommit message (Collapse)AuthorLines
Prove the filter saw the hostile file nameBryce Kwon-5/+4
The name also sits in the breadcrumb and the title, so the test passed with the source filter never run, and the missing marker proved nothing. dump.sh echoes its arguments ahead of the body it upper-cases, which shows the name arrived whole as one argument.
Check the line links of a side-by-side diffBryce Kwon-9/+17
The links have been written through html_attr since b8adfd6, so with the percent-encoding dropped a quote came out as an entity the absence check could not match, and the presence check was met by the file links above the diff. The test now reads the line links themselves, for a name holding a hash and a question mark as well.
Look for inline handlers on every main pageBryce Kwon-4/+15
Only the commit page was checked, and only for onchange, though a site policy without unsafe-inline blocks every inline handler on any page.
Tie each escaped readme to its own payloadBryce Kwon-8/+7
The escaped script tag alone matched either readme, so the markdown page showing the text readme passed.
Compare the small blob the plain page servesBryce Kwon-2/+6
The test took any page holding the word top, with no status checked. The refusal half lives in t0204, so the fixture now says why its limit is set so low.
Read the --output refusal from its own requestBryce Kwon-10/+10
The refusal was read from a page the previous test had left, which --run could skip, and both requests went through the shared page cache. The marker is also named apart from the one the filter test plants, so a failure in one cannot fail the other.
Check the policy sent with repository bytesBryce Kwon-0/+28
No test asserted the Content-Security-Policy header, though it is all that keeps script in an SVG from running when the plain page serves it under its own type.
Prove the login body is cut at the bufferBryce Kwon-5/+16
The posted body was 22 bytes, so an unclamped read stopped at its end and nothing overflowed, and the test could not fail. The filter now counts what it was handed from a body larger than the buffer.
Spell side-by-side in the test commentsBryce Kwon-1/+1
Ask for a url through cgit_url everywhereBryce Kwon-3/+3
Move the later tests to the config writersBryce Kwon-97/+38
The one-line request wrappers go with them. Configs with several repositories, a key out of place on purpose, the cache on or no repository of their own stay written out.
Work out each gitlink's target onceBryce Kwon-4/+1
Test bodies run in the main shell, so the target named in the fixture reaches every check that greps for it.
Serve both readme escaping checks from one configBryce Kwon-16/+9
Ask each page that sorts odd branches in one loopBryce Kwon-23/+8
Write the test filter scripts with write_scriptBryce Kwon-3/+1
Drop test lines that add nothingBryce Kwon-1/+0
The trash directory starts empty and setup.sh already made the cache, the clamp check already fails on a short query, and the commit the setup named is still there to pin.
Leave two log checks to the log testsBryce Kwon-5/+0
t0103 already renders foo/log and finds commit 5, and its search for a bracket fails the same way this literal search did if --fixed-strings ever goes.
Leave the blob size refusals to the limits testsBryce Kwon-22/+5
t0204 asks the tree, plain, blob and blame pages for one oversized blob and checks the exact status and message, so the looser copy here went.
Serve only the files a dumb clone asks forBryce Kwon-2/+2
The object path check let any run of safe characters through, so a spelling such as info//alternates or info/./alternates reached the alternates file the exact name was refused for.
Describe root-readme as the site's about pageBryce Kwon-0/+16
Answer 404 for any path below the about pageBryce Kwon-1/+1
The about page served every file beside the readme as a page of its own, through the about filter, and answered 200 for directories and missing files alike. Images it passed through came from the root of the default branch whatever the readme's own directory and ref. A readme on disk exposed its whole directory this way.
Test the advisory classes and name an empty authorBryce Kwon-0/+110
Each class behind cgit's published advisories now has a check against the current code, from a newline in a file name to shell syntax handed to a filter. The feed also treated an ident with an empty name and an empty address as present and wrote an empty person, which Atom forbids.
Test the hardening passBryce Kwon-1/+1
Harden the request path, scan and error recoveryBryce Kwon-5/+26
Clean up the whole treeBryce Kwon-2/+1
Trim the comments and dead code across the treeBryce Kwon-4/+2
Remove the auto-submitting selectsBryce Kwon-4/+4
Renumber the test scripts into themed rangesBryce Kwon-0/+0
The numbering walks outward from the ground the suite stands on. - t000x for the git version, html validity and the cache - t01xx for page content, one script per page - t02xx for filters, submodule links, dates and limits, which cut across pages - t03xx for defence, the security regressions and the $HOME promise - t04xx for the helper tools under tools/