aboutsummaryrefslogtreecommitdiff
path: root/test/tests.zig
AgeCommit message (Collapse)Author
2023-04-21std: add more missing windows libraries when running testsJacob Young
2023-04-21test: exclude the last warning from cbe testsJacob Young
2023-04-21std: add missing windows libraries when running testsJacob Young
Thanks to @kcbanner for diagnosing this.
2023-04-21cbe: enable CI for std testsJacob Young
2023-04-20x86_64: disable some behavior testsJacob Young
These backends doesn't support the new liveness yet.
2023-04-18Merge pull request #15302 from jacobly0/x86_64-non-livenessAndrew Kelley
x86_64: liveness independent fixes
2023-04-16tests: fix skip_cross_glibc checkJacob Young
Native targets are, by definition, not cross-compiling targets.
2023-04-16behavior: disable flaky test on x86_64Jacob Young
Also reenable stage2_x86_64 windows behavior tests in case it is failing for the same reason. Closes #15324
2023-04-15disable x86_64-windows self-hosted backend behavior testsAndrew Kelley
because they are not passing on the CI yet.
2023-04-15disable not-yet-passing C backend testsAndrew Kelley
2023-04-15disable not-yet-passing test suitesAndrew Kelley
* wasm32-wasi compiler_rt tests * std lib tests with the C backend
2023-04-15CI: more C backend test coverageAndrew Kelley
The CI now runs C backend tests in addition to compiling them. It uses -std=c99 -pedantic -Werror in order to catch non-conformant C code. This necessitated disabling a test case that caused a C compile error, in addition to disabling a handful of warnings that are already being triggered by Zig's C backend output for the behavior tests. The upshot is that I was able to, very cleanly, integrate the C backend tests into the build system, so that it communicates via the test runner protocol along with all the other behavior tests.
2023-04-15tests: avoid skipping native testsAndrew Kelley
Make the test targets use options that match the actual options of CompileStep. This makes the code more straightforward, and ends up making fewer tests incorrectly skipped. For example, now the CI runner on Windows will no longer skip self-hosted x86_64 backend tests.
2023-04-11fix build logic due to state mutations and break the API accordinglyAndrew Kelley
* remove setName, setFilter, and setTestRunner. Please set these options directly when creating the CompileStep. * removed unused field * remove computeOutFileNames and inline the logic, making clear the goal of avoiding state mutations after the build step is created.
2023-04-10std.Build.CompileStep: remove run() and install()Andrew Kelley
These functions are problematic in light of dependencies because they run and install, respectively, for the *owner* package rather than for the *user* package. By removing these functions, the build script is forced to provide the *Build object to associate the new step with, making everything less surprising. Unfortunately, this is a widely breaking change. see #15079
2023-03-28tests: enable multi-threaded x86_64-windows tests with self-hostedJakub Konka
2023-03-25behavior: disable multi threaded for the stage2_x86_64 windows targetJacob Young
See #15075 for more details.
2023-03-20tests: add -Dskip-cross-glibc optionJacob Young
It is reasonable to pass -Dskip-non-native when unable to run foreign binaries, however there is no option for being able to run foreign static binaries but unable to run foreign dynamic binaries. This can occur when qemu is installed but not cross glibc.
2023-03-15C ABI tests: don't test aarch64-windows yetAndrew Kelley
because it is not passing. See tracking issue #14908
2023-03-15test-c-abi: disable LTO on more targetsAndrew Kelley
2023-03-15test-cli: fix expected stderr on windowsAndrew Kelley
Needed to account for backward slashes in file system paths.
2023-03-15std.Build.CompileStep: remove setNamePrefix and add setNameAndrew Kelley
2023-03-15revert a change to C ABI testsAndrew Kelley
See tracking issue #14908
2023-03-15make the build runner and test runner talk to each otherAndrew Kelley
std.Build.addTest creates a CompileStep as before, however, this kind of step no longer actually runs the unit tests. Instead it only compiles it, and one must additionally create a RunStep from the CompileStep in order to actually run the tests. RunStep gains integration with the default test runner, which now supports the standard --listen=- argument in order to communicate over stdin and stdout. It also reports test statistics; how many passed, failed, and leaked, as well as directly associating the relevant stderr with the particular test name that failed. This separation of CompileStep and RunStep means that `CompileStep.Kind.test_exe` is no longer needed, and therefore has been removed in this commit. * build runner: show unit test statistics in build summary * added Step.writeManifest since many steps want to treat it as a warning and emit the same message if it fails. * RunStep: fixed error message that prints the failed command printing the original argv and not the adjusted argv in case an interpreter was used. * RunStep: fixed not passing the command line arguments to the interpreter. * move src/Server.zig to std.zig.Server so that the default test runner can use it. * the simpler test runner function which is used by work-in-progress backends now no longer prints to stderr, which is necessary in order for the build runner to not print the stderr as a warning message.
2023-03-15standalone tests: avoid running on strange targetAndrew Kelley
Without this, aarch64-linux tried to compile this test for aarch64-windows with the same CPU settings, which is not an intended test combination.
2023-03-15re-enable test-cases and get them all passingAndrew Kelley
Instead of using `zig test` to build a special version of the compiler that runs all the test-cases, the zig build system is now used as much as possible - all with the basic steps found in the standard library. For incremental compilation tests (the ones that look like foo.0.zig, foo.1.zig, foo.2.zig, etc.), a special version of the compiler is compiled into a utility executable called "check-case" which checks exactly one sequence of incremental updates in an independent subprocess. Previously, all incremental and non-incremental test cases were done in the same test runner process. The compile error checking code is now simpler, but also a bit rudimentary, and so it additionally makes sure that the actual compile errors do not include *extra* messages, and it makes sure that the actual compile errors output in the same order as expected. It is also based on the "ends-with" property of each line rather than the previous logic, which frankly I didn't want to touch with a ten-meter pole. The compile error test cases have been updated to pass in light of these differences. Previously, 'error' mode with 0 compile errors was used to shoehorn in a different kind of test-case - one that only checks if a piece of code compiles without errors. Now there is a 'compile' mode of test-cases, and 'error' must be only used when there are greater than 0 errors. link test cases are updated to omit the target object format argument when calling checkObject since that is no longer needed. The test/stage2 directory is removed; the 2 files within are moved to be directly in the test/ directory.
2023-03-15re-enable standalone tests based on build.zigAndrew Kelley
2023-03-15re-enable the simple standalone testsAndrew Kelley
2023-03-15re-enable macho linker testsAndrew Kelley
2023-03-15re-enable wasm linker testsAndrew Kelley
2023-03-15new linker test harnessAndrew Kelley
It's simpler and it takes advantage of `std.Build.addAnonymousDependency`, which has a number of benefits, including concurrenc and preventing extra zig-cache and zig-out directories being created. 4 tests are ported over as an example.
2023-03-15re-enable C ABI testsAndrew Kelley
These were mostly already using the correct build API. I cleaned up the code a bit and unconditionally disabled LTO for these tests since that actually tests the intended behavior better.
2023-03-15re-enable CLI testsAndrew Kelley
CLI tests are now ported over to the new std.Build API and thus work properly with concurrency. * add `std.Build.addCheckFile` for creating a `std.Build.CheckFileStep`. * add `std.Build.makeTempPath`. This function is intended to be called in the `configure` phase only. It returns an absolute directory path, which is potentially going to be a source of API breakage in the future, so keep that in mind when using this function. * add `std.Build.CheckFileStep.setName`. * `std.Build.CheckFileStep`: better error message when reading the input file fails. * `std.Build.RunStep`: add a `has_side_effects` flag for when you need to override the autodetection. * `std.Build.RunStep`: add the ability to obtain a FileSource for the directory that contains the written files. * `std.Build.WriteFileStep`: add a way to write bytes to an arbitrary path - absolute or relative to the package root. Be careful with this because it updates source files. This should not be used as part of the normal build process, but as a utility occasionally run by a developer with intent to modify source files and then commit those changes to version control. A file added this way is not available with `getFileSource`.
2023-03-15re-enable compare-output test casesAndrew Kelley
2023-03-15re-integrate stack trace tests with the new std.Build APIAndrew Kelley
* RunStep: ability to set stdin * RunStep: ability to capture stdout and stderr as a FileSource * RunStep: add setName method * RunStep: hash the stdio checks
2023-03-15build.zig: annotate std lib tests maxrssAndrew Kelley
2023-03-15zig build: many enhancements related to parallel buildingAndrew Kelley
Rework std.Build.Step to have an `owner: *Build` field. This simplified the implementation of installation steps, as well as provided some much-needed common API for the new parallelized build system. --verbose is now defined very concretely: it prints to stderr just before spawning a child process. Child process execution is updated to conform to the new parallel-friendly make() function semantics. DRY up the failWithCacheError handling code. It now integrates properly with the step graph instead of incorrectly dumping to stderr and calling process exit. In the main CLI, fix `zig fmt` crash when there are no errors and stdin is used. Deleted steps: * EmulatableRunStep - this entire thing can be removed in favor of a flag added to std.Build.RunStep called `skip_foreign_checks`. * LogStep - this doesn't really fit with a multi-threaded build runner and is effectively superseded by the new build summary output. build runner: * add -fsummary and -fno-summary to override the default behavior, which is to print a summary if any of the build steps fail. * print the dep prefix when emitting error messages for steps. std.Build.FmtStep: * This step now supports exclude paths as well as a check flag. * The check flag decides between two modes, modify mode, and check mode. These can be used to update source files in place, or to fail the build, respectively. Zig's own build.zig: * The `test-fmt` step will do all the `zig fmt` checking that we expect to be done. Since the `test` step depends on this one, we can simply remove the explicit call to `zig fmt` in the CI. * The new `fmt` step will actually perform `zig fmt` and update source files in place. std.Build.RunStep: * expose max_stdio_size is a field (previously an unchangeable hard-coded value). * rework the API. Instead of configuring each stream independently, there is a `stdio` field where you can choose between `infer_from_args`, `inherit`, or `check`. These determine whether the RunStep is considered to have side-effects or not. The previous field, `condition` is gone. * when stdio mode is set to `check` there is a slice of any number of checks to make, which include things like exit code, stderr matching, or stdout matching. * remove the ill-defined `print` field. * when adding an output arg, it takes the opportunity to give itself a better name. * The flag `skip_foreign_checks` is added. If this is true, a RunStep which is configured to check the output of the executed binary will not fail the build if the binary cannot be executed due to being for a foreign binary to the host system which is running the build graph. Command-line arguments such as -fqemu and -fwasmtime may affect whether a binary is detected as foreign, as well as system configuration such as Rosetta (macOS) and binfmt_misc (Linux). - This makes EmulatableRunStep no longer needed. * Fix the child process handling to properly integrate with the new bulid API and to avoid deadlocks in stdout/stderr streams by polling if necessary. std.Build.RemoveDirStep now uses the open build_root directory handle instead of an absolute path.
2023-03-15multiplex compiler progress messages into the build runnerAndrew Kelley
2023-03-15CI: use -j1 like a cowardAndrew Kelley
Zig's build script has several race conditions preventing proper concurrent builds from working. By using -j1 for now, finishing this branch (concurrent zig builds) is untangled from the separate problem of correcting concurrency issues with zig's own build script. In other words, let's solve one problem at a time.
2023-03-15std.Build: improve debugging of misconfigured stepsAndrew Kelley
* Step.init() now takes an options struct * Step.init() now captures a small stack trace and stores it in the Step so that it can be accessed when printing user-friendly debugging information, including the lines of code that created the step in question.
2023-02-20re-enable x86_64-linux self-hosted behaviour test suiteJakub Konka
2023-02-18disable failing x86_64 backend testsAndrew Kelley
2023-02-18update existing behavior tests and std lib to new for loop semanticsAndrew Kelley
2023-02-13std.Build: start using the cache system with RunStepAndrew Kelley
* Use std.Build.Cache.Directory instead of a string for storing the cache roots and build roots. * Set up a std.Build.Cache in build_runner.zig and use it in std.Build.RunStep for avoiding redundant work.
2023-01-31tests: fix missing target for C ABI testsAndrew Kelley
This regressed earlier in this branch.
2023-01-31rename std.Build.LibExeObjStep to std.Build.CompileStepAndrew Kelley
This matches the nomenclature internally: a Compilation is the main type that represents a single invokation of the compiler.
2023-01-31combine std.build and std.build.Builder into std.BuildAndrew Kelley
I've been wanting to do this for along time.
2023-01-31update build.zig API usageAndrew Kelley
2023-01-19tests: disable c_abi tests for windows when compiling on linuxkcbanner
2023-01-19llvm: pass non-scalars as byref in .Stdcallkcbanner
- add c_abi tests for .Stdcall - enable (x86|x86_64)-windows-gnu in the c_abi tests