| Age | Commit message (Collapse) | Author | Lines |
|
Both tests cut one block out of cgit.css by its opening line, so
rewriting that selector list broke them while a later rule overriding
the declaration passed. The helper gathers a property's declarations
from every rule naming the selector, so the last one is the one a
browser would apply. A rule under some other selector can still win,
which only a browser shows.
|
|
|
|
Only an absolute target was tested, so ignoring a failed normalisation
passed, and the mutation run left that change alive.
|
|
Both fixes were for links that led to a 404, and the tests read the
href without asking for the page it names.
|
|
|
|
|
|
|
|
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.
|
|
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.
|
|
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.
|
|
The pattern also matched the commit row's link to itself, so the test
passed with no parent row at all.
|
|
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.
|
|
|
|
|
|
|
|
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.
|
|
The shared config turns both columns on, but no test read a count, so
a wrong or swapped one passed.
|
|
No test anywhere drew a label, so the peel that tells an annotated tag
from a lightweight one had no check.
|
|
|
|
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.
|
|
|
|
|
|
enable-remote-branches had no test anywhere, so the branch list, the
switcher or the log label could each stop honouring it unnoticed.
|
|
Only the heading was checked, so a heading and cells that disagreed
about snapshots passed.
|
|
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.
|
|
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.
|
|
It repeated the sed that cgitrc_copy runs, only to add a repository
after the copy.
|
|
|
|
The code has always measured both in bytes, and the tests pin that, so
the entries change rather than the behaviour. A limit of 10 shows three
of a nine character description in Japanese.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
With one pair of brackets, matching the innermost pair would have
passed the old check as well.
|
|
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
Blame runs the same source filter, and only the tree view had ever
been rendered through it.
|
|
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.
|
|
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.
|
|
|
|
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.
|
|
|
|
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.
|
|
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.
|