| Age | Commit message (Collapse) | Author | Lines |
|
QSORT skips a list of fewer than two entries, so an empty list's null
base never reaches qsort, which is what cgit_qsort was written for.
|
|
|
|
|
|
|
|
|
|
The From, Date, Subject and signature lines are part of what the next
test compares in full against git format-patch, for the single commit
and for the range alike.
|
|
|
|
The library has read TEST_RESULTS_SAN_DIR for the last time by the
time it returns, and the trash directory it makes is empty, so there
is no cache to remove.
|
|
Every page holds foo in its footer element, the foo+bar row holds bar,
the branch switcher holds master, and commit 1 and file-1 also match
commits 10 to 19 and file-10 to file-19. A search page repeats its term
in the search box. So these checks passed on pages that lacked what
they look for, and each now matches the link itself.
|
|
When a filter cannot run, cgit dies mid-page with its Status line
already out, so the check passed with no filter at all. That is the
case wherever true lives only in /bin, as on busybox. true now comes
from the PATH, and the page has to reach its end.
|
|
The check asked for the summary page, which never runs an about filter,
so it passed with exec:/bin/true on macOS, which has no such file, and
with a filter that does not exist at all. Its first line read the
stderr the previous test left behind. execvp searches the PATH, so a
plain true runs the same on macOS, Debian and busybox.
|
|
A failed truncate or key write returned with the descriptor still open,
so the lock was held while the page rendered uncached and the file was
left behind. It is removed before its last close, as every holder does.
|
|
process_slot logged every failure to lock, so each request that found
its slot being filled left a line, while refresh_slot logged none, so an
expired slot in a directory the server cannot write was served stale for
good without a word. lock_slot now logs the step that failed, as the
scan does, and leaves out only another request at work.
|
|
The slot lock has to be an flock, since an exec filter drops a record
lock when it closes the stdout a fill writes through. The scan only got
by with fcntl because nothing reopens its file while it runs. One kind
of lock lets the two share their code, and on Linux, where the kinds
never see each other, an flock on the scan's file now holds a scan off
like any other.
|
|
Each exec filter and snapshot compressor a fill runs inherited the slot's
lock descriptor beside the stdout it writes into. An flock lasts until
its last copy closes and nothing waits for a process a filter leaves
behind, so a fill killed before its rename could leave the slot locked,
and served stale or uncached, for as long as such a process lived.
The scan holds its lock across no exec and opens the same way so that
the two stay alike.
|
|
The header's last sentence named two of the many later subjects, so it
goes too. The second request's stderr is still kept, for the lock tests
that come next.
|
|
The library's check also lists whatever was left behind when it fails.
|
|
filter_close already runs highlight under pcall and serves the escaped
text when it fails, so the pcalls around detect, load and lex inside it
only turned a raise into the same fallback a step earlier.
|
|
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. The list of
standalone interpreters moves into lib.sh and matches the versions the
extensions claim directly.
|
|
t0502 owns the shipped highlighter and already writes a cgitrc naming
it, so the check needs no config of its own there. t0204's header still
called it the last case long after it stopped being one.
|
|
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.
|
|
|
|
The lookups were never the only difference, since the configuration
and trim's place differ as well. The configuration is now set off by
blank lines, as in the other extensions, instead of a heading.
|
|
cgit names no repository with an empty string, never nil, 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.
|
|
Every caller hands the helpers a string, and a value with a line break
is refused by validate_value whether or not CR LF is folded on the way.
|
|
Seven of the twelve fields filter_open stored were never read. Naming
all twelve parameters keeps the order cgit passes them in on record.
|
|
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.
|
|
|
|
|
|
lpeg's constant, query and numbered captures already do what the token
helpers did, and nothing ever read the tokens of an escape that draws
nothing.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Without lpeg both renderers stay nil, and the handler lookup already
falls back to plain text for a format it has no renderer for.
|
|
Everything that can raise already runs inside the parse and emit
pcalls, so the outer one in filter_close could only ever have sent the
page a second time. The size check moves to the dispatch with it.
|
|
|
|
A table capture of a pattern repeated zero or more times matches every
string, the empty one included, so the inline grammars never return nil.
|