Skip to content

Commit

Permalink
chore: add test for macOS shared libraries (#18244)
Browse files Browse the repository at this point in the history
Closes #18243
  • Loading branch information
littledivy committed Mar 17, 2023
1 parent e30d24b commit 0eabd2c
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions cli/tests/integration/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,43 @@ macro_rules! command_step(
}
);

#[cfg(target_os = "macos")]
#[test]
// https://github.com/denoland/deno/issues/18243
fn macos_shared_libraries() {
use test_util as util;

// target/release/deno:
// /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1953.255.0)
// /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 1228.0.0)
// /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 60420.60.24)
// /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
// /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1319.0.0)
const EXPECTED: [&'static str; 5] =
["/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation",
"/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices",
"/System/Library/Frameworks/Security.framework/Versions/A/Security",
"/usr/lib/libiconv.2.dylib",
"/usr/lib/libSystem.B.dylib"];

let otool = std::process::Command::new("otool")
.arg("-L")
.arg(util::deno_exe_path())
.output()
.expect("Failed to execute otool");

let output = std::str::from_utf8(&otool.stdout).unwrap();
// Ensure that the output contains only the expected shared libraries.
for line in output.lines().skip(1) {
let path = line.trim().split_whitespace().next().unwrap();
assert!(
EXPECTED.contains(&path),
"Unexpected shared library: {}",
path
);
}
}

// These files have `_tests.rs` suffix to make it easier to tell which file is
// the test (ex. `lint_tests.rs`) and which is the implementation (ex. `lint.rs`)
// when both are open, especially for two tabs in VS Code
Expand Down

0 comments on commit 0eabd2c

Please sign in to comment.