AgeCommit message (Collapse)AuthorLines
Test the blame link in the file view's headerBryce Kwon-0/+8
Prove the rows the blame link check looks pastBryce Kwon-6/+10
The checks that blob.bin, big.bin and large.txt get no blame link never showed those rows were in the listing, so a listing that dropped them passed.
Hold the tree tests to a working pageBryce Kwon-36/+50
The tree requests passed on any answer short of a crash. Several tests read a page or a row an earlier test wrote, so run alone they passed or failed by accident, and two leant on a repository from the test before without saying so. The file-50 check also matched its href, and the blame check skipped the form feed and NEL its title covers.
Check the tag message line by lineBryce Kwon-2/+3
The check removed every newline before matching, so a body that kept the blank line after the subject read the same, and the page would have shown that line under white-space pre-wrap.
Check the commit page's parent rowBryce Kwon-1/+4
The pattern also matched the commit row's link to itself, so the test passed with no parent row at all.
Pin the listing's blame link for a late NULBryce Kwon-0/+23
The listing judges binary by the first 8000 bytes, as git does, while the blame page and the file view look for a NUL anywhere, since one past that window would end a Lua filter's output early. The listing keeps the cheap sniff, because the whole-blob check would inflate every blob it names, so a file whose NUL lies past the window gets a blame link that ends on "Blob is binary". The test pins that trade, so a change to either side has to face it.
Test a long subject in the expanded logBryce Kwon-0/+13
Test the lowest message limit that cutsBryce Kwon-0/+10
Test the log search by case and by committerBryce Kwon-0/+19
Test the log orders commit-sort selectsBryce Kwon-0/+41
commit-sort had no test anywhere. The history here is one where the plain walk, date order and topo order all differ, which the test checks first so a fixture that stopped telling them apart would fail rather than pass.
Test the file and line counts in the logBryce Kwon-0/+17
The shared config turns both columns on, but no test read a count, so a wrong or swapped one passed.
Test the branch and tag labels in the logBryce Kwon-0/+15
No test anywhere drew a label, so the peel that tells an annotated tag from a lightweight one had no check.
Test the switcher on a page pinned to a commitBryce Kwon-0/+12
Hold the log tests to a working pageBryce Kwon-36/+54
The log requests passed on any answer short of a crash. The search checks after the first read a page an earlier test wrote, so run alone they passed with no page at all, and three tests shared one title. The switcher checks found the right option selected but not that it was the only one, and a failed check left its tag behind for the tests after it. The broken walk's log was written and never read.
Test the author and age of a lightweight tag rowBryce Kwon-0/+10
Test clone urls made from clone-prefixBryce Kwon-0/+9
Test remote branches shown and hiddenBryce Kwon-0/+27
enable-remote-branches had no test anywhere, so the branch list, the switcher or the log label could each stop honouring it unnoticed.
Check the tag cells hold what their heading namesBryce Kwon-1/+4
Only the heading was checked, so a heading and cells that disagreed about snapshots passed.
Hold the summary tests to a working pageBryce Kwon-24/+44
The summary requests passed on any answer short of a crash, and the checks for no tags and no commit 45 read a page another test wrote. The log checks also matched the branch row, which shows the newest subject too. Two checks under a title about the clone rows matched the vcs-git links in the head instead, and the dots in the [...] count matched any three characters.
Test the index sections and their orderingBryce Kwon-0/+65
Nothing tested section, section-sort or repository-sort, nor the heading's colspan, which BASE_COLUMNS has to keep in step with the headings by hand.
Copy the shared config for the cut descriptionBryce Kwon-3/+2
It repeated the sed that cgitrc_copy runs, only to add a repository after the copy.
Test a description limit of zero or lessBryce Kwon-0/+9
Test an empty search under a url prefixBryce Kwon-0/+17
Only a prefix holding no repository and a search of the whole index were tested, so the check that tells the two messages apart could go unnoticed.
Check the index search and sort see descriptionsBryce Kwon-0/+12
The test looked only at the rows, which show the file's text wherever it is read, so moving the read below the search or the sort passed.
Check the order of every index sort columnBryce Kwon-10/+51
Only the name sort had its order checked. For the other columns the test looked for one repository on the page, and the shared fixture could not show an order anyway, since no repository there has an owner and their ref times tie. Nothing read an age file either, though the idle column takes its date from one first.
Hold the index tests to a working pageBryce Kwon-17/+23
The index requests passed on any answer short of a crash. The checks for the missing tree and log links read a page an earlier test wrote, so run alone they passed with no page at all. The description and summary link checks matched their text anywhere on the page rather than in foo's row.
Check that the outermost avatar brackets come offBryce Kwon-0/+4
With one pair of brackets, matching the innermost pair would have passed the old check as well.
Say why the Lua search paths reach the testsBryce Kwon-1/+4
Give the harness cgit's print and its other sinksBryce Kwon-2/+35
Lua's own print wrote outside the collected output, so a stray print in a filter passed every check while under cgit it lands on the page. html_url_arg and html_include were missing, which only a filter using them would have found.
Compare link-trailers output wholeBryce Kwon-1/+5
A short object name was checked only for a missing anchor, and the value that passes through untouched never held the entities cgit escapes it with, so escaping it again would have passed.
Compare link-commits output wholeBryce Kwon-8/+13
Four checks only looked for a missing anchor, which output with the text dropped also passes, and no message held the entities cgit escapes it with.
Time the other filters at two lengths as wellBryce Kwon-26/+59
The avatar checks held a 40000 byte address to half a second, twenty times tighter than the readme budget that already failed on a slow host, and in stub mode nearly all of that time went on the fake digest. Link-commits and link-trailers had no check on a long input at all. The readme checks' method moves into the harness so all four share it. A single timing of each length let a busy host that took the CPU away during the longer one make a linear pass look quadratic. The lengths now take turns and the fastest timing of each counts, since a busy host can slow one timing but rarely all five. A ratio under six ends the turns at once, so only one near the bound of ten waits for all five.
Hold the avatar stub checks to an absolute hashBryce Kwon-7/+28
The stub mode checks only compared hashes with each other, and the stand-in digest took any algorithm name, so md5, a misspelt sha256 or hex in capitals passed everywhere luaossl is missing, which is every machine here. The comparisons also passed with no hash found on either side.
Cover how link-trailers applies its rulesBryce Kwon-0/+26
Skipping a malformed rule, a rule without a key, the switch for bare urls and the shipped CVE example were untested, and the only url kept from linking was one holding a quote, so a broader scheme check would have let javascript:// through.
Cover how link-commits applies its rulesBryce Kwon-0/+41
Skipping a malformed rule, the tie between two rules, the scan past an empty match, a rule with no capture and the switch for object names were all untested, and none of the shipped examples beyond the issue rule had ever been loaded.
Check that the blame view is highlightedBryce Kwon-0/+7
Blame runs the same source filter, and only the tree view had ever been rendered through it.
Cover the rest of syntax-highlight's outputBryce Kwon-4/+33
No token ever took hl-type or hl-comment, so a typo in either row, or a rule gone from the stylesheet, passed. Nothing fed the filter a NUL byte or a blob of exactly the size cap either.
Check the lexer modules the filter cannot useBryce Kwon-3/+54
A module called lexer that is not Scintillua, a Scintillua older than 6.0 without detect(), lexers that cannot load lpeg and a lexer that returns no token list were all documented and none was tried.
Drop the section labels from the readme checksBryce Kwon-4/+0
Check the site readme and a repository without oneBryce Kwon-0/+32
The site readme reaches about-render with no tree, where only the scheme check stands between a javascript: link and the page, and no test rendered one. The redirect for a repository without a readme line was checked only with no about-filter set, while the header of about-render says the filter alone makes no about page.
Cover the rest of the man macrosBryce Kwon-0/+25
Cover the rest of the markdown grammarBryce Kwon-0/+53
The changelog for 2.12.0 says a list split by a code block keeps counting, and only the split by a blank line was checked.
Pair each readme absence check with what rendersBryce Kwon-2/+6
Four checks only looked for something missing, which a dropped or plain text rendering also satisfies, and the spacing macro check missed a 0 drawn at the start of a line.
Never give two headings the same anchorBryce Kwon-0/+10
A repeat's count was keyed on the bare text, so a heading whose text already ended in that count took the same anchor, as "Twice 1" did after two of "Twice", and "About 1" after "About". A link to either then landed on the first. The count now goes on up past any anchor already handed out, the way GitHub's slugger does.
Check what the nesting rules actually renderBryce Kwon-3/+6
The emphasis bomb checked only that the output was not empty, which it never is, and its input never nests. No input reaches the ceiling on inline nesting either, since an emphasis cannot hold its own kind, so the check now proves the nesting that does happen. Past the quote ceiling only the innermost text was looked for, and any x passed.
Check the two fallbacks around rendering a readmeBryce Kwon-0/+13
Check the log line for lexers that are not foundBryce Kwon-18/+60
Every check set CGIT_SCINTILLUA_PATH, which the filter takes as given, so the line for a server with no Scintillua at all never ran and deleting it passed. The harness can now clear a variable and hide the directories the filter probes. A lexer.lua anywhere on LUA_PATH also loaded in place of the missing one, so the fallback runs now keep every Lua module out of reach.
Check both avatar filters through cgitBryce Kwon-1/+11
Only email-gravatar ever ran inside cgit, and nothing there checked that the icon is fetched without a Referer.
Prove the avatar fallback on any machineBryce Kwon-14/+14
The page without icons was checked only where cgit's Lua lacked luaossl, so a machine that has it never ran the fallback. It now runs with every Lua search path pointed at an empty directory, and the log line is compared whole. Writing the config needs no Lua, so that step runs everywhere too.
Prove the about page fallback on any machineBryce Kwon-15/+43
The fallback through cgit ran only where cgit's own Lua lacked lpeg, and every machine the suite runs on has it, so the test never ran. With every Lua search path pointed at an empty directory it runs anywhere. It now also checks that the readme's markup is escaped, as its title said, and compares the whole log line.