Commit Graph

640 Commits

Author SHA1 Message Date
Ralf Jung
8817397828 test harness informs tests about suitable temp dir 2020-03-24 09:11:48 +01:00
Ralf Jung
3ba588db49 make fs.rs at least build under Windows 2020-03-24 09:11:48 +01:00
Ralf Jung
9091811147 use Wake trait for async-fn driver 2020-03-23 23:53:54 +01:00
Ralf Jung
b4b8750e44 bump Rust; HashMap should now work on macOS even with isolation 2020-03-23 10:34:15 +01:00
Ralf Jung
d85f09c4e4 platform -> target 2020-03-22 08:55:39 +01:00
Ralf Jung
4608b94bd8 implement CLOCK_MONOTONIC on Linux 2020-03-19 23:01:24 +01:00
Elichai Turkel
0826899ca0
Remove uninhabit/zeroed tests to a new test file for abort checking 2020-03-18 14:14:23 +02:00
Ralf Jung
548c90e102 share some code between panic intrinsics, and fix the message 2020-03-11 19:53:07 +01:00
Elichai Turkel
2802c3cf0b
Add tests for the new panic_if_any_invalid, panic_if_zero_invalid intrinsics 2020-03-11 16:02:49 +02:00
Ralf Jung
8394456247 properly panic in panic_if_uninhabited and align_offset shims 2020-03-08 20:00:40 +01:00
bors
574d81ce79 Auto merge of #1208 - christianpoveda:environ-shim, r=RalfJung
Environ shim

Remake of https://github.com/rust-lang/miri/pull/1147. There are three main problems with this:

1. For some reason `update_environ` is not updating `environ` when `setenv` or `unsetenv` are called. Even then it works during initialization.
2. I am not deallocating the old array with the variables in `update_environ`.
3. I had to store the `environ` place into `MemoryExtra` as a field to update it. I was thinking about changing `extern_statics` to store places instead of `AllocID`s to avoid this.

@RalfJung
2020-03-08 15:39:43 +00:00
Ralf Jung
fefa8e5344 expand clock and fs tests a bit 2020-03-06 14:32:46 +01:00
Ralf Jung
7882dfb3f5
fix env update, and expand test 2020-03-06 08:21:53 -05:00
Christian Poveda
a28330febb
add testcase for environ shim 2020-03-06 08:21:53 -05:00
Ralf Jung
148269dd4b finally stop using min/max_value and the integer modules 2020-03-04 13:01:06 +01:00
Ralf Jung
db0d03229c fix allocator tests 2020-03-04 10:19:35 +01:00
Ralf Jung
58519a7a79 try even harder to catch invalid generator fields 2020-03-03 15:02:06 +01:00
bors
c0934e1eca Auto merge of #1152 - divergentdave:shim-directory, r=RalfJung
Add directory-related shims

This PR adds support for `mkdir`, `rmdir`, `opendir`, `closedir`, and `readdir64_r`.

Open directory streams are tracked through a HashMap indexed by pointer locations, which holds directory iterators. Since `DIR` is an opaque type in glibc, I represent them with 1-byte allocations, and then just use their pointers in HashMap lookups.

Tests are included to exercise the new functionality.
2020-02-26 14:15:55 +00:00
David Cook
9fcc8a2a91 Review comments 2020-02-24 19:16:41 -06:00
Ralf Jung
274ae0438f add an option to disable Stacked Borrows 2020-02-24 16:22:02 +01:00
David Cook
341212acd6 Rewrite fs tests 2020-02-23 15:34:49 -06:00
David Cook
a82049587c Use longer file names in test 2020-02-23 15:28:50 -06:00
David Cook
d461c12c83 Add more information to test asserts 2020-02-23 15:26:47 -06:00
David Cook
5d35339111 Add shim for readdir64_r 2020-02-23 15:08:44 -06:00
David Cook
5b34f06bae Add shims for mkdir and rmdir 2020-02-23 15:02:49 -06:00
Ralf Jung
3e2f29a079 remove some no-longer-needed allow(const_err) 2020-02-21 11:05:56 +01:00
Ralf Jung
627d7cba64 fix for const-prop lint changes 2020-02-21 10:33:00 +01:00
David Cook
32a354efa3 Test error case of std::fs::rename 2020-02-20 21:54:52 -06:00
Ralf Jung
3cd13cb174 test a bit more 2020-02-19 11:14:30 +01:00
Ralf Jung
f79c453860 factor more common code 2020-02-19 11:12:30 +01:00
Ralf Jung
8b31763816 fs test: factor some common code 2020-02-19 11:12:30 +01:00
David Cook
0933314bff Rewrite file system tests 2020-02-17 22:36:33 -06:00
David Cook
962a740426 Rewrite file descriptor handling 2020-02-17 22:24:33 -06:00
David Cook
636ad629f8 Functional test of cloned file handle 2020-02-17 22:24:33 -06:00
David Cook
085874d1ff Add F_DUPFD/F_DUPFD_CLOEXEC to fcntl shim 2020-02-17 22:24:33 -06:00
bors
daaf9f7e28 Auto merge of #1177 - RalfJung:debug-assert, r=RalfJung
Make sure we evaluate debug assertions in local crate and libstd

Fixes https://github.com/rust-lang/miri/issues/1126
2020-02-16 13:04:06 +00:00
Ralf Jung
6ff5b3fcf9 make sure we also trigger debug assertions in libstd 2020-02-16 13:55:51 +01:00
Ralf Jung
39a78f0b24 make sure assertions and debug-assertions also panic (and can be caught) 2020-02-16 13:47:31 +01:00
bors
0a803c9752 Auto merge of #1158 - divergentdave:shim-rename, r=RalfJung
Add shim for rename

This adds a straightforward shim for rename, which is used by `std::fs::rename`. Testing is included.

As a heads up, I expect one or two merge conflicts between my PRs, since some of them touch the same `use` statements, or add items near the same places. I'll rebase and fix them as they come up.
2020-02-14 20:26:23 +00:00
David Cook
91868125a5
Removing file after rename must succeed
Co-Authored-By: Ralf Jung <post@ralfj.de>
2020-02-14 08:19:16 -06:00
Ralf Jung
a843fd4e17 add test for layout optimizations 2020-02-12 22:04:58 +01:00
David Cook
f7e0857644 Test that src path of rename is no longer a file 2020-02-08 22:40:46 -06:00
David Cook
38204b6321 Add shim for rename 2020-02-08 22:33:49 -06:00
bors
f9615bfd67 Auto merge of #1159 - divergentdave:shim-seek, r=RalfJung
Add shim for seeking files

This adds a shim for `lseek64` (`lseek` on macOS). This enables the use of `<File as Seek>::seek`. Testing is included.
2020-02-08 13:54:33 +00:00
Ralf Jung
45f6744fda panics dont work on Windows, just the smoke test should be enough 2020-02-07 14:20:42 +01:00
Ralf Jung
418dd641dc test more generator resume things 2020-02-07 14:02:36 +01:00
Ralf Jung
d208a5fe3b rustup; fix generator test 2020-02-07 14:02:27 +01:00
David Cook
98a1cac4ef Add tests to cover SEEK_CUR and SEEK_END 2020-02-06 17:50:33 -06:00
bors
9c0b89cff7 Auto merge of #1163 - RalfJung:raw-cast, r=RalfJung
Test raw-ptr-cast without reborrow

With https://github.com/rust-lang/rust/pull/64588 landed, we can finally test these things adequately. :)
2020-01-30 22:20:36 +00:00
bors
e7f5c4f155 Auto merge of #1151 - divergentdave:statx-AT_EMPTY_PATH, r=RalfJung
Add support for AT_EMPTY_PATH to statx shim

This enables use of `File::metadata()`.
2020-01-30 21:30:32 +00:00
Ralf Jung
b2c9871f7d update another comment 2020-01-30 13:29:55 +01:00
Ralf Jung
3cf413e4c2 remove inadequate comment 2020-01-30 12:22:54 +01:00
Ralf Jung
e0adfe4d45 new compile-fail test involving non-reborrowing-cast-to-raw 2020-01-30 12:22:15 +01:00
Ralf Jung
acd156d722 add test that relies on non-reborrowing-cast-to-raw 2020-01-30 12:17:02 +01:00
bors
aff1e43137 Auto merge of #1154 - TimDiekmann:rename-alloc, r=RalfJung
Rename `Alloc` to `AllocRef`

Required to land https://github.com/rust-lang/rust/pull/68529. Please see that PR for details. The CI is expected to fail until the PR is landed.
2020-01-29 21:44:06 +00:00
bors
8c5dee6f88 Auto merge of #1155 - divergentdave:shim-posix_fadivse, r=RalfJung
Add no-op shim for posix_fadvise

This function is present in the libc crate, but not exposed through the standard library anywhere, so I haven't included a test for it.
2020-01-29 21:24:30 +00:00
Tim Diekmann
3d8bf92a11
Rename Alloc to AllocRef
Required to land https://github.com/rust-lang/rust/pull/68529. Please see that PR for details. The CI is expected to fail until the PR is landed.
2020-01-29 04:10:33 +01:00
David Cook
a30914bcdd Conditional compilation fix 2020-01-28 20:39:06 -06:00
David Cook
a39a5f8189 Disable posix_fadvise test on macOS, not in libc 2020-01-28 19:57:56 -06:00
David Cook
2a2dde1494 Try fixing test on i686-unknown-linux-gnu 2020-01-28 19:04:16 -06:00
David Cook
b2d404d19a Move posix_fadvise test to new libc test file 2020-01-28 18:59:49 -06:00
Ralf Jung
9f6df67238 test track_caller with fn ptrs 2020-01-28 22:55:07 +01:00
David Cook
4e42e77483 Add test for posix_fadvise 2020-01-27 06:28:45 -06:00
David Cook
03b5d95cff Add shim for lseek64 2020-01-26 12:36:36 -06:00
David Cook
d94b88ef98 Add support for AT_EMPTY_PATH to statx shim 2020-01-25 22:21:33 -06:00
David Cook
9265e0cd5e Add compiler fences to test 2020-01-25 13:48:26 -06:00
Ralf Jung
b2303a7da1 slice_patterns is stable now 2020-01-19 10:03:18 -06:00
bors
b4c54b4641 Auto merge of #1143 - christianpoveda:symlink-shim, r=RalfJung
Add shim for symbolic link creation

r? @RalfJung
2020-01-10 17:21:12 +00:00
Christian Poveda
0b5a30515e
small corrections 2020-01-10 12:01:05 -05:00
Ralf Jung
833816dd35 Unwind panicking does not currently work on Windows 2020-01-09 11:41:08 +01:00
Ralf Jung
e9b4323048 also make sure the hook actually gets called 2020-01-09 11:24:41 +01:00
Ralf Jung
b1676a3e89 test that unwrap gets us the right panic location 2020-01-09 11:20:13 +01:00
Christian Poveda
329310fbd6
Clean paths for robustness 2020-01-07 11:09:07 -05:00
Christian Poveda
4a1dbc77dc
Add shim for symbolic link creation 2020-01-06 16:30:17 -05:00
Ralf Jung
0217a25a12 remove no-longer-needed allow(const_err) 2020-01-06 11:38:35 +01:00
Ralf Jung
c68996dda7 note a FIXME 2020-01-02 15:57:33 +01:00
Wesley Wiser
959033cbfb Bump rustc version to fix miri 2020-01-01 21:33:51 -05:00
Ralf Jung
31fbb5a9b2 fix imports 2019-12-31 12:10:52 +01:00
Ralf Jung
e1fceafcea with FS access, default HashMap should work on macOS 2019-12-31 12:06:42 +01:00
Christian Poveda
75f7a118e6
remove restrictions due to stat unavailability 2019-12-25 12:38:34 -05:00
Christian Poveda
d9ecd77ada
add dummy stat shim 2019-12-25 08:27:49 -05:00
Ralf Jung
e325ad24f2 support main functions with Result return type 2019-12-23 17:45:23 +01:00
bors
a3ea1cb458 Auto merge of #1101 - christianpoveda:stat-shim, r=RalfJung
Add statx shim for linux target

This is an attempt to fix: https://github.com/rust-lang/miri/issues/999 (for linux only)

Currently there is one problem that I haven't been able to solve. `std::fs::metadata` fails because the creation time is not available even though it is provided in the shim code.

In order to inform the caller that the field was provided, the `stx_flag` field must have the bits of `STATX_BTIME` set (which they are). The creation time is in the `stx_btime` field of the `statx` struct (see [1]). The relevant code in `libstd` is here (probably?): https://github.com/rust-lang/rust/blob/master/src/libstd/sys/unix/fs.rs#L322

Another important point is that we are just providing the fields that are available in "all" platforms (this is, without using any platform specific traits or so). This can be improved later.

References:
[1] Man page: http://man7.org/linux/man-pages/man2/statx.2.html
[2] libc `statx` struct: https://docs.rs/libc/0.2.63/libc/struct.statx.html

Edit: The problem is that my filesystem is not providing it and I thought all filesystems could provide it. I changed the code so it only provides those dates if they are available. now we are ready to go.

r? @RalfJung @oli-obk
2019-12-22 17:01:53 +00:00
Christian Poveda
b0c7625dd1
add statx shim for linux 2019-12-22 11:46:02 -05:00
Ralf Jung
74ef63ff0a the never type got de-stabilized again; adjust tests 2019-12-15 12:23:43 +01:00
Ralf Jung
b0a205ce6f add caller_location tests to Miri 2019-12-08 11:06:35 +01:00
Ralf Jung
e92d16d9cd add flag to ignore memory leaks 2019-12-07 13:44:48 +01:00
Ralf Jung
ce7b44b048 ignore another panicking test on Windows 2019-12-02 16:48:18 +01:00
Ralf Jung
ae53b1222a fix and expand panic tests 2019-12-02 16:04:31 +01:00
Ralf Jung
4cf83433b1 test built-in panic catching 2019-12-02 16:04:31 +01:00
Ralf Jung
9f9e547d79 test diverging closure fn ptr coercion 2019-12-02 15:42:33 +01:00
Ralf Jung
bba9359256 expand coerce fn test 2019-12-02 15:42:33 +01:00
Ralf Jung
1c420b0b55 improve style in catch_panic test 2019-12-02 09:11:33 +01:00
Ralf Jung
f7efe238f3 fix catch_panic.stderr 2019-12-01 11:04:51 +01:00
Ralf Jung
2789e72e18 test more panics 2019-12-01 11:04:32 +01:00
Ralf Jung
2152258b04 and another reference 2019-11-25 15:10:39 +01:00
Ralf Jung
66dc939787 rename some more tests 2019-11-25 15:08:47 +01:00
Ralf Jung
d16e12b0a4 rename test and add some references 2019-11-25 15:08:24 +01:00
Ralf Jung
51d47e8dc5 test closure-to-fn-ptr coercions a bit more 2019-11-25 15:01:05 +01:00
Ralf Jung
35e1fe1665 also test non-string panic payload 2019-11-24 10:51:48 +01:00