| 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.
|
|
Only email-gravatar ever ran inside cgit, and nothing there checked
that the icon is fetched without a Referer.
|
|
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.
|
|
A page that died part way through, or logged an error, passed as long
as the text grepped for came before the failure. Four tests also read
the page an earlier test had fetched, so none of them could run alone.
|
|
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 include run checked only the line in the outer file, so a warning
from the included one could have named the outer file and passed.
|
|
The messages hold the trash directory's path and were matched as
patterns, so a checkout path holding a bracket or a star would break
them.
|
|
grep -o is not in POSIX, while awk's match is.
|
|
The PERL prerequisite comes from NO_PERL in the build options, not from
an interpreter being there, so a host without perl and with the chain
linter off failed these tests instead of skipping them.
|
|
|
|
test-lib exports LC_ALL=C for every test, so the two sorted checks said
it again for nothing.
|
|
Without the fold of a carriage return before a newline, repo.path keeps
a trailing one and the repository cannot be opened, and no test had a
file saved that way. Semicolon comments and a line with no equals sign
were untested too.
|
|
Nothing reached the guard that stops a file including itself, so its
loss would have gone unseen until a site's own cgitrc recursed until
the stack gave out.
|
|
Both paging tests would have passed with the listing ignoring ofs,
since the prev link comes from ofs alone.
|
|
cgit takes no notice of how an about, commit, source or email filter
exits, and nothing showed that a failing one still leaves the page
whole.
|
|
Only the login page's tag was checked, so printing noindex everywhere
would have taken every site out of the search engines and passed.
|
|
Two tests read the page an earlier test left in tmp, so a test put in
between would have had them check some other page.
|
|
The negated greps passed on a missing or renamed file, and the old
hooks were matched with an alternation POSIX leaves undefined in a
basic expression, so a grep that read the bars literally never matched
anything.
|
|
No test served two repositories where one url holds the other as a
prefix, which is the case the longest match in cgit_parse_url is for.
|
|
Nothing exercised noweb, scan-hidden-path, section-from-path, an
ordinary project-list, the gitweb settings or the command-line modes,
so a regression could list repositories meant to stay hidden, and the
command line could drop what a repository set or lose its sort.
|
|
After the write fails the scan runs a second time, and that run adds
nothing only because scan-tree.c never resets the directories it has
visited. Nothing showed it, so a reset would have listed every
repository twice and passed.
|
|
The listing exposes the urls other visitors asked for, and every
request for it used the shared config, which turns it on.
|
|
No test showed a refresh serving and storing the page as it is now, and
the too-large refill could not tell a fresh render from the expired
copy, since nothing changed in between. A negative page ttl was proven
never to expire only for the scan list.
|
|
MANUAL says such a request serves the expired copy and logs nothing,
and only the case where the lock file cannot be opened was tested.
|
|
With no list the glob stayed unmatched, grep failed on it and the
negated check passed. The meta check had no proof that the summary had
rendered either.
|
|
Piping cgit into cat threw away its exit status, so a crash or
valgrind's 126 could not fail the no-key and negative ttl tests. Under
ulimit -f 0 not even a status file can be written, so that status goes
down the pipe with the page. The negative ttl test also leaned on the
list an earlier test left, and its last check passed on a missing file.
|
|
Nothing showed that the limited write failed at all, so a limit that
did not bite passed, as did a lock file left behind, a doubled prefix
or a page resumed from the wrong offset. The pipe to cat also threw
away cgit's exit status.
|
|
Two identical fresh renders passed the replay test, and the two tests
after it read its output, so a slot cut short was caught only because
tree pages happen to be cached.
|
|
The lock tests leaned on a three second sleep in the filter and gave up
the wait for its marker in silence, so on a slow run the requests need
not overlap at all and every check held trivially. A bare wait also
hid any crash of the first request, and the second request's page was
never looked at. The filter now holds the first request until the test
lets it go.
The strace test gets the same hold, released once the trace shows the
second request has opened the lock file. It checks that the delayed
flock then succeeded, since a refusal would mean the inode check was
never reached.
|
|
No fixture's size in whole kilobytes equalled the limit, so turning
the comparison into greater or equal passed every test.
|
|
Follow empties the prefix, and the cap has to come from the path asked
for, as the source warns. Only the line cap can show that. The pairs
are filtered before they are counted, so a single-file page counts one
file whatever the cap, and a followed check under max-diff-files could
never fail.
|
|
Only strict-export and the global filters were ever varied against one
cache-root, so dropping any of the other inputs passed. Leaving out
trust-scan-config is the one that matters most. A list scanned under
it carries the filters pushers set, the list is read back with no trust
check, and a site that does not trust its scans would run them.
|
|
The scan half grepped the page of the request that rebuilt the list,
and that page is drawn from the scan in memory, so the ghost could
never show there. Had the truncate moved out of cache_lock_file, every
later read of the list would have taken in the stale tail and the test
would still have passed.
|
|
Nothing requested a page pinned to an id with the static ttl in force,
so dropping the full id check would cache a page pinned to master or
an abbreviation for ever and the suite would pass.
|
|
The one-slot test threw every response away, so a slot that stopped
comparing keys and served whatever page it held still left one file
and passed. The collision MANUAL promises to log was never checked
either. The size tests also rewrote the shared cgitrc in place, and
the listing replay held only while the dynamic ttl did.
|
|
After tools/build-development.sh or build-release.sh, a plain make
test quietly rebuilt without the sanitizers or the hardening and tested
that binary instead, with nothing in its output to say so.
|