Skip to content

Commit ba0f652

Browse files
committed
transpile: Add snapshot test for main function
1 parent 2f26db6 commit ba0f652

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
int main(int argc, char **argv, char **envp) {
2+
return 0;
3+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
---
2+
source: c2rust-transpile/tests/snapshots.rs
3+
expression: cat tests/snapshots/main.rs
4+
input_file: c2rust-transpile/tests/snapshots/main.c
5+
---
6+
#![allow(
7+
dead_code,
8+
non_camel_case_types,
9+
non_snake_case,
10+
non_upper_case_globals,
11+
unused_assignments,
12+
unused_mut
13+
)]
14+
unsafe fn main_0(
15+
mut argc: ::core::ffi::c_int,
16+
mut argv: *mut *mut ::core::ffi::c_char,
17+
mut envp: *mut *mut ::core::ffi::c_char,
18+
) -> ::core::ffi::c_int {
19+
return 0 as ::core::ffi::c_int;
20+
}
21+
pub fn main() {
22+
let mut args_strings: Vec<Vec<u8>> = ::std::env::args()
23+
.map(|arg| {
24+
::std::ffi::CString::new(arg)
25+
.expect("Failed to convert argument into CString.")
26+
.into_bytes_with_nul()
27+
})
28+
.collect();
29+
let mut args_ptrs: Vec<*mut ::core::ffi::c_char> = args_strings
30+
.iter_mut()
31+
.map(|arg| arg.as_mut_ptr() as *mut ::core::ffi::c_char)
32+
.chain(::core::iter::once(::core::ptr::null_mut()))
33+
.collect();
34+
let mut vars: Vec<*mut ::core::ffi::c_char> = Vec::new();
35+
for (var_name, var_value) in ::std::env::vars() {
36+
let var: String = format!("{}={}", var_name, var_value);
37+
vars.push(
38+
::std::ffi::CString::new(var)
39+
.expect("Failed to convert environment variable into CString.")
40+
.into_raw(),
41+
);
42+
}
43+
vars.push(::core::ptr::null_mut());
44+
unsafe {
45+
::std::process::exit(main_0(
46+
(args_ptrs.len() - 1) as ::core::ffi::c_int,
47+
args_ptrs.as_mut_ptr() as *mut *mut ::core::ffi::c_char,
48+
vars.as_mut_ptr() as *mut *mut ::core::ffi::c_char,
49+
) as i32)
50+
}
51+
}

0 commit comments

Comments
 (0)