Commit Graph

59 Commits

Author SHA1 Message Date
Edward Thomson
1a3d6a8893 ci: allow opting out of push-options tests
The push-options online tests require push options support in the git
itself that's on the system. Allow callers with old git to opt out.
2024-02-29 21:30:09 +00:00
Edward Thomson
cc35d987b4 ci: drop debugging ls 2024-02-29 18:53:29 +00:00
Edward Thomson
85279f06aa ci: update push options tests
Keep the push options tests more constrained to our CI environment;
writing files within the test sandbox instead of outside of it. Provide
the path to the output file in the test data. In addition, add the
repository to the test resources instead of recreating the hooks every
time.
2024-02-06 20:40:38 +00:00
Edward Thomson
b4263c2303 Merge remote-tracking branch 'origin/main' into push-options 2024-02-06 20:38:55 +00:00
Edward Thomson
383e5ed581 ci: use ecdsa keys for ssh
Using modern rsa (sha2-256 or sha2-512) with libssh2 is complicated and
depends on numerous factors for support. Just use ecdsa, which is
supported by both libssh2 v1.11.0 and modern OpenSSH (which we use for
our server in CI).
2023-12-21 20:46:47 +00:00
Edward Thomson
c529b2c753 ci: allow users to opt-in only to certain tests
Previously, users could skip certain tests when running the CI script
(`SKIP_ONLINE_TESTS=1`). Provide a mechanism for users to opt-in to
only certain tests (`SKIP_TESTS=1 SKIP_ONLINE_TESTS=0`).
2023-12-18 09:54:40 +00:00
Edward Thomson
3eb7ff2bf9 ci: specify full path to certificate/key
This helped when troubleshooting issues running the `ci/test.sh` script
locally.
2023-08-30 20:46:23 +01:00
Edward Thomson
019cf6c24f ssh: honor core.sshcommand
Callers can specify the ssh command to invoke using `core.sshcommand` or
the `GIT_SSH` environment variable. This is useful for specifying
alternate configuration, and is particularly useful for our testing
environment.
2023-08-30 20:46:23 +01:00
Edward Thomson
1fc9cd5292 ci: retry (more) flaky online tests 2023-08-23 13:50:33 +01:00
Edward Thomson
2a99bc7b07 ci: retry flaky online tests 2023-08-23 11:00:25 +01:00
Edward Thomson
fad9042897 streams: sockets are non-blocking and can timeout
Make socket I/O non-blocking and add optional timeouts.

Users may now set `GIT_OPT_SET_SERVER_CONNECT_TIMEOUT` to set a shorter
connection timeout. (The connect timeout cannot be longer than the
operating system default.) Users may also now configure the socket read
and write timeouts with `GIT_OPT_SET_SERVER_TIMEOUT`.

By default, connects still timeout based on the operating system
defaults (typically 75 seconds) and socket read and writes block.

Add a test against our custom testing git server that ensures that we
can timeout reads against a slow server.
2023-05-13 16:42:04 +01:00
Edward Thomson
933b04c219 ci: update to poxygit v0.6.0
v0.6.0 of poxygit add support for throttling connections to test
timeouts and low-bandwidth situations.
2023-05-13 16:42:04 +01:00
Edward Thomson
80742e159c Merge pull request #6456 from libgit2/ethomson/sha256_experimental
SHA256: more SHA256 support
2023-02-14 17:01:23 +00:00
Edward Thomson
0006ff6335 clone: support sha256 2023-02-12 22:02:00 +00:00
Edward Thomson
b857122f16 ci: convert PATH correctly to Cygwin format on Windows
We provide `BUILD_PATH` to our build script; provide it and mutate
`PATH` when running our tests as well.

We were previously using `cygpath` to try to convert a _list_ of Windows
paths into cygwin / Unix style `PATH` format. This does not work -- it
treats the path list as a single path (with semicolons -- understandably
as those are allowed characters in a Windows path).

For example, `C:\One;C:\Two;C:\Three` is converted to
`/c/one;c:/two;c:/three`.

Add a new function to convert path lists, so that paths are split by
semicolon and fed to `cygpath` independently, then re-joined with a
colon. This means that our example `C:\One;C:\Two;C:\Three` is correctly
converted to `/c/one:/c/two:/c/three`.
2023-02-09 12:10:40 +00:00
Edward Thomson
a7bc32edd5 ci: limit test runner to build path
We provide `BUILD_PATH` to our build script; provide it and mutate
`PATH` when running our tests as well.
2023-02-09 12:10:40 +00:00
Edward Thomson
ea4ce92aea ci: isolate the home directory for test execution
libgit2 can now isolate its home directory, and our test runner (by
default) isolates the home directory. In our CI environment, we want to
set up some pieces (like ssh configuration) in a fake homedir. Continue
to do so and propagate that to clar.
2023-02-09 12:10:40 +00:00
bansheerubber
c45d1c6e88 push: implement ci tests
We found that the best way to test push options was to receive them via a git hooks script, and output them to a location that the CI tests could read to check and see if the push options were interpreted by git correctly.

Co-Authored-By: pireads <pireads@gmail.com>
Co-Authored-By: lotdeef <lcfisch2@asu.edu>
Co-Authored-By: PSI497 <497.psi.497@gmail.com>
2022-11-30 21:12:53 +01:00
Carlos Martín Nieto
c29651fe8b tests: append the github.com ssh keys so we have access during tests
Currently just the one test needs it.

The ssh-rsa makes sure we're asking for the cipher we find in `known_hosts` as
that won't be the one selected by default. This will be relevant in later changes.
2022-11-04 10:33:37 +01:00
Edward Thomson
cf326948b1 clone: test for cloning a repo with namespace scope
Test that we can successfully clone a repository that is namespace
scoped on the remote and does not advertise a HEAD. To do this, we must
specify the branch to checkout.
2022-09-19 05:07:16 -04:00
Edward Thomson
9d9a90ad3d clone: test bare clone namespaced repo with no HEAD
Test that we can successfully clone a repository that is namespace
scoped to a bare repository locally. We need not specify a checkout
branch in this case (obviously, since we do not check anything out in a
bare clone).
2022-09-19 05:07:16 -04:00
Edward Thomson
ebb0830c65 ci: clean up daemon processes on exit
We previously (correctly) cleaned up the git daemon and SSH server, but
failed to clean up our bespoke HTTP server and HTTP proxies. Capture
their PIDs on process creation and kill them when we shut down.
2022-09-16 10:46:18 -04:00
Edward Thomson
d02f4f7ad7 cmake: refactor add_clar_test into separate module 2022-02-22 22:07:45 -05:00
Edward Thomson
e6d93612e8 refactor: move utility tests into util 2022-02-22 22:07:45 -05:00
Edward Thomson
6913422323 ci: test [user@host:port]:path formats 2022-01-17 21:06:06 -05:00
Edward Thomson
f4fec25182 ci: minor formatting cleanups to test output 2022-01-13 16:55:36 -05:00
Edward Thomson
515daeaf4d remote: introduce follow_redirects connect option
Give callers the ability to select how to handle redirects - either
supporting redirects during the initial connection (so that, for
example, `git.example.com/repo` can redirect to `github.com/example/repo`)
or all/no redirects.  This is for compatibility with git.
2022-01-13 21:34:20 +00:00
Edward Thomson
c104a56536 ci: stop retrying "flaky" tests
We (thankfully) don't have flaky tests anymore, don't retry them.
2022-01-13 09:36:08 -05:00
Edward Thomson
cd261af218 ci: use poxygit v0.5.1
The new version of our test git server adds redirect support.  Upgrade
to it.
2022-01-13 09:03:00 -05:00
Edward Thomson
0e04726866 opts: test GIT_OPT_SET_SSL_CERT_LOCATIONS
Include a self-signed certificate for test.libgit2.org:1443 that we can
use to verify that GIT_OPT_SET_SSL_CERT_LOCATIONS works.
2021-08-29 21:52:30 -04:00
Edward Thomson
a5d6a5768f ci: stop on test failure 2021-08-29 21:01:49 -04:00
Edward Thomson
3d6b90359d ci: stop using deprecated set-env in GitHub Actions
(And move the ci scripts into the `ci` directory.)
2020-11-18 18:08:23 +00:00
Patrick Steinhardt
ffac520e83 azure: move build scripts into "azure-pipelines" directory
Since we have migrated to Azure Pipelines, we have deprecated and
subsequentally removed all infrastructure for AppVeyor and
Travis. Thus it doesn't make a lot of sense to have the split
between "ci/" and "azure-pipelines/" directories anymoer, as
"azure-pipelines/" is essentially our only CI.

Move all CI scripts into the "azure-pipelines/" directory to have
everything centrally located and to remove clutter in the
top-level directory.
2019-07-20 19:10:10 +02:00
Patrick Steinhardt
d827b11b67 tests: execute leak checker via CTest directly
Right now, we have an awful hack in our test CI setup that extracts the
test command from CTest's output and then prepends the leak checker.
This is dependent on non-machine-parseable output from CMake and also
breaks on various ocassions, like for example when we have spaces in the
current path or when the path contains backslashes. Both conditions may
easily be triggered on Win32 systems, and in fact they do break our
Azure Pipelines builds.

Remove the awful hack in favour of a new CMake build option
"USE_LEAK_CHECKER". If specifying e.g. "-DUSE_LEAK_CHECKER=valgrind",
then we will set up all tests to be run under valgrind. Like this, we
can again simply execute ctest without needing to rely on evil sourcery.
2019-07-20 19:10:10 +02:00
Patrick Steinhardt
86ecd6008d fuzzers: provide test targets
Instead of having to find the fuzzer executables in our Azure test
scripts, provide test targets for each of our fuzzers that will
run them with the correct paths.
2019-07-20 19:10:10 +02:00
Edward Thomson
6d8a34ad33 ci: add flaky test re-execution on Unix
Our online tests are occasionally flaky since they hit real network
endpoints.  Re-run them up to 5 times if they fail, to allow us to
avoid having to fail the whole build.
2019-06-24 22:54:10 +01:00
Edward Thomson
4c2ca1ba4a ci: test NTLM proxy authentication on Unix 2019-06-10 19:58:22 +01:00
Edward Thomson
c9d9e25fb1 ci: update poxyproxy, run in quiet mode
Update the proxy so that we can enable a quiet mode.
2019-01-20 17:35:50 +00:00
Edward Thomson
1ebf3a7dec ci: only run invasive tests during nightly runs 2019-01-19 01:16:45 +00:00
Etienne Samson
1b4ba8443f ci: enable some of the invasive testcases 2019-01-11 11:53:54 +01:00
Edward Thomson
de60d9b4c6 tests: PROXY_URL is more accurately PROXY_HOST
Change the `GITTEST_REMOTE_PROXY_URL` environment variable to be
`GITTEST_REMOTE_PROXY_HOST`, since it is a host:port combination, not an
actual URL.  (We cannot use a URL here since we may want to include the
username:password combination in the constructed URL.)
2018-11-28 15:10:02 +00:00
Edward Thomson
b5ae83bfac Merge pull request #4860 from tiennou/ci/macos-leaks
CI: Fix macOS leak detection
2018-10-31 08:47:10 +00:00
Etienne Samson
8c49b3bf26 tests: use CLAR_AT_EXIT to check for leaks on macOS 2018-10-30 22:32:57 +01:00
Etienne Samson
0e69485efd clar: provide a way to run some shell before exiting 2018-10-30 22:32:23 +01:00
Edward Thomson
f22521efe2 ci: fail if requested test name is not found (unix)
POSIX: the CMakeLists.txt configures the test names; when we query
ctest for the test command-line to run, fail if the tests are not
found.
2018-10-26 14:40:09 +01:00
Etienne Samson
fa274f7f08 ci: redirect the malloc debugging output to /dev/null 2018-10-23 22:34:45 +02:00
Edward Thomson
f195395ab1 ci: bind specifically to localhost for proxy
Bind the proxy specifically to 127.0.0.1 instead of all addresses.  This
is not strictly necessary for operations, but having a potentially open
proxy on a network is not a good idea.
2018-10-21 10:37:26 +01:00
Edward Thomson
429c7f1141 ci: don't stop on failure
Don't stop on test failures; run all the tests, even when a test fails.
2018-09-29 18:11:37 +01:00
Edward Thomson
fff33a1b65 ci: write test result XML
Add the clar flags to produce JUnit-style XML output before invocation.
2018-09-11 22:38:50 +01:00
Edward Thomson
7e353b7a14 ci: only run the exact named test
Our CI test system invokes ctest with the name of the given tests it
wishes to invoke.  ctest (with the `-R` flag) treats this name as a
regular expression.  Provide anchors in the regular expression to avoid
matching additional tests in this search.
2018-09-10 12:27:24 +01:00