| Age | Commit message (Collapse) | Author | Lines |
|
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.
|
|
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.
|
|
|
|
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.
|
|
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.
|
|
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.
|
|
|
|
Where a standalone Lua had no lpeg, the harness skipped the markdown
and man checks itself, behind a note the test library hides, and the
test passed on the six checks left. The real luaossl checks were left
out the same way. Each now shows as a skip under a prerequisite named
for the interpreter, and a misspelt mode fails rather than running the
default.
|
|
With no standalone interpreter on the path the unit checks were never
registered, so they counted as neither run nor skipped, and a fault in
the version probe dropped them all behind one line of output. The test
bodies now expand their paths as they run, so a quote in a path no
longer breaks them.
|
|
A plain lua is usually one of the versioned names again, as lua and
lua5.5 are here, so every 5.5 check ran twice, while names such as
lua54 and lua-5.4 were never looked for. A test now names the version
that ran, since "under lua" did not say which one it was.
|
|
The probe piped cgit into grep, so a crash or a sanitizer abort while
probing read as a missing module, and t0501, t0504 and t0505 then
expected the fallback on a machine that has the module.
|
|
As in link-commits, every capture was hex or digits. A string
replacement there would also raise outside the pcall that guards the
pattern and take the whole page down.
|
|
Every capture the checks used was hex or digits, which encoding leaves
alone, so the filter passed with url_encode gone and a broader rule
could then have broken out of the href.
|
|
Every escape the checks looked at sat between tokens or in the tail a
lexer left untagged, so a filter that escaped only those would have
passed with a string literal reaching the page raw.
|
|
One ten second budget covered several inputs, so a failure did not say
which had regressed, and it allowed ten times the second a readme is
held to while leaving a slow host little room. A linear render costs
four times as much at four times the length and a quadratic one
sixteen, whatever the host. The cap on unclosed brackets had no check
at all, and the line of \h' escapes timed nothing that is bounded.
|
|
|
|
The old check split the scheme with a newline, which ends the line
before a link can form, so it passed with the strip removed.
|
|
The icons came from Gravatar or Libravatar with the page's url as the
Referer, so the service learned which repositories and commits each
visitor looked at.
|
|
|
|
|
|
The login posts outside any repository, so the log line names the
repository by the page its signed way back leads to.
|
|
Only HTTPS=on counts, the same test cgit makes before it writes an
https link of its own.
|
|
|
|
The way back was signed part way through the form, so while the secret's
directory did not exist, or a library was missing, cgit's error landed
inside the hidden input and the page broke off there with no fields.
|
|
|
|
Scintillua's detect() matches an extension by its case, and the fallback
e227d1f dropped had lowercased it, so MAIN.C and SETUP.PY lost their
colour. The fake lexer now answers only for the suffixes it knows, as
Scintillua does, which is what lets the check see it.
|
|
On Lua 5.3 and later a length worked out with a fraction, such as
1.5 * 24 * 60 * 60, is a float, so the signed expiry came out as
1793609024.0, which validate_value refuses, and every login failed.
Max-Age took the same .0, which makes a browser ignore it.
|
|
setup.sh already asks the binary, so the seven scripts that each turned
the answer into a prerequisite now share one. test-lib names the missing
prerequisite beside every test it skips, so the notes that cgit lacks
Lua go, while the ones announcing a fallback stay. Every script that
listed the standalone interpreters asked for the same ceiling, so lib.sh
now builds that list for all of them.
|
|
The two identical posts for an unknown user become one, and no two
checks share a name, so a failure report points at a single check.
|
|
|
|
Every check replaces get_secret, the only caller of posix.sys.stat,
link and unlink, and nothing outside the harness calls preload.
|
|
cgit passes an empty string, never nil, when a request names no
repository, so the check that the index stays up proved nothing, and
auth-file in fact refuses the index too while its repos file cannot be
read. A session_seconds of 0 signs a session that has expired by the
time it comes back, so it needs no branch of its own in set_cookie.
|
|
set_cookie only ever writes an empty value or a token secure_value
built from url-encoded text, digits and hex, so stripping it changed
nothing.
|
|
The loop let a valid cookie through with a field appended, a doubled
separator or a zero in front of its expiry. The payload now carries the
expiry as written, so only the spelling secure_value issues verifies.
|
|
The filter hands a NUL through untouched, and only the harness's copy of
cgit's sink cut the text there, so the check would have failed the day
the filter replaced NULs the way about-render does.
|
|
The table of extensions and the second lookup served only a Scintillua
with no detect(), which now leaves every file uncoloured but escaped.
The fake detect() names a lexer after the file's suffix, so every test
lexer is reached through it.
|
|
|
|
Nothing in assets/ or in README's list of hooks reads a fenced block's
data-lang or the manpage class on a man page's wrapper.
|
|
DocBook, pod2man and hand written pages leaked roff onto the page. Font
escapes inside no fill blocks, comments, layout escapes such as \% and
\c, the colours and half line moves around DocBook's links, and the
requests and macro definitions their preambles open with all showed
through. Those now draw nothing, the common named characters and strings
render, .EX and pod2man's .Vb read as code, a .TP tag takes a line of
its own and the alternating font macros switch fonts between their
arguments. Anything rarer still falls back to its text.
|
|
A line of equals signs or dashes under a paragraph now makes a heading
of it, as on GitHub, instead of running into its text, and any other
rule ends the paragraph. Four spaces or a tab start a code block, and an
escaped pipe stays in its table cell. A link opening with two slashes
or backslashes in any mix leads to another site, so it renders as text
like the plain scheme relative one already did.
|
|
cgit takes filter output through a C string sink that stops at the
first NUL, so a readme holding one lost everything after it. Each NUL
now shows as U+FFFD, as a browser would show it.
|
|
A wrong password sent the reader back to the same empty form, which
looked no different from a crash. The redirect now carries a flag the
form reads, the same for an unknown user as for a wrong password, and
the form leaves the flag out of the way back it signs.
|
|
Scintillua's css lexer tags them with names the map had no row for, so
they came out as plain text.
|
|
A lexer may hand back the bytes of one separator, or the CR and LF of a
line ending, in different tokens, so line endings become line feeds
before lexing and the separators are escaped once the tokens are joined.
|
|
The about-render unit test bounds three renders at one second to catch
the cubic trim coming back. They take 0.1 s on a fast host and three
seconds on a slow one, where the check failed, while the old code took
minutes, so ten seconds still tells the two apart.
|
|
Scintillua's detect reads the first line as well as the name, and
without it hooks, bin scripts and anything else lacking an extension
stayed plain.
|
|
An unedited copy sent every #123, Closes: and Bug: mark to
bugs.example.com, a link that is wrong for every site.
|
|
Without the prefix any host under the same domain could set a cgitauth
cookie of its own, signing a visitor in as someone else or out.
|
|
A session stayed good for its whole week after the password changed or
the account went away, which is when ending it matters most.
|
|
Required at the top, a missing luaossl or luaposix failed every request
to the site, public pages included, and each public page paid to load
both.
|