summaryrefslogtreecommitdiffstats
path: root/openpgp-ffi/tests
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2019-03-21 15:24:41 +0100
committerJustus Winter <justus@sequoia-pgp.org>2019-03-21 15:24:41 +0100
commitc0a170a65cdc587c76787c3fc988be77bf4f6675 (patch)
tree5f0c69b1526c0526882758579e19de0a80fbd0b4 /openpgp-ffi/tests
parente4998146b6e68360f81c9d44d5e57008613b5f73 (diff)
openpgp-ffi: Use crate for futimes fiddling.
- The previous solution of using libc::futimes turned out to be not portable because different platforms have differently sized timestamps. Use a crate for that instead. - Also, bring ffi's c-tests up-to-speed. - Fixes #225.
Diffstat (limited to 'openpgp-ffi/tests')
-rw-r--r--openpgp-ffi/tests/c-tests.rs26
1 files changed, 5 insertions, 21 deletions
diff --git a/openpgp-ffi/tests/c-tests.rs b/openpgp-ffi/tests/c-tests.rs
index 0ec26500..37c00231 100644
--- a/openpgp-ffi/tests/c-tests.rs
+++ b/openpgp-ffi/tests/c-tests.rs
@@ -1,4 +1,4 @@
-extern crate libc;
+extern crate filetime;
extern crate nettle;
use std::cmp::min;
@@ -6,11 +6,9 @@ use std::env::{self, var_os};
use std::ffi::OsStr;
use std::fs;
use std::io::{self, BufRead, Write};
-use std::os::unix::io::AsRawFd;
use std::path::{Path, PathBuf};
use std::process::Command;
use std::str::FromStr;
-use std::time;
use std::mem::replace;
/// Hooks into Rust's test system to extract, compile and run c tests.
@@ -213,27 +211,13 @@ fn build(include_dirs: &[PathBuf], ldpath: &Path, target_dir: &Path,
for line in lines {
writeln!(f, "{}", line)?
}
+ drop(f);
// Change the modification time of the c source to match the
// rust source.
- let mtime = meta_rs.modified().unwrap()
- .duration_since(time::UNIX_EPOCH).unwrap();
- let timevals = [
- // Access time.
- libc::timeval {
- tv_sec: mtime.as_secs() as i64,
- tv_usec: mtime.subsec_nanos() as i64 / 1000,
- },
- // Modification time.
- libc::timeval {
- tv_sec: mtime.as_secs() as i64,
- tv_usec: mtime.subsec_nanos() as i64 / 1000,
- },
- ];
- let rc = unsafe {
- libc::futimes(f.as_raw_fd(), timevals.as_ptr())
- };
- assert_eq!(rc, 0);
+ use filetime::FileTime;
+ let mtime = FileTime::from_last_modification_time(&meta_rs);
+ filetime::set_file_times(target_c, mtime.clone(), mtime).unwrap();
}
let includes =