use scallop::ExecStatus;
use super::_new::new;
use super::functions::dosbin;
use super::make_builtin;
pub(crate) fn run(args: &[&str]) -> scallop::Result<ExecStatus> {
new(args, dosbin)
}
make_builtin!("newsbin", newsbin_builtin);
#[cfg(test)]
mod tests {
use std::fs;
use crate::io::stdin;
use crate::shell::test::FileTree;
use super::super::{
assert_invalid_args, cmd_scope_tests,
functions::{into, newsbin},
};
cmd_scope_tests!("newsbin path/to/executable new_filename");
#[test]
fn invalid_args() {
assert_invalid_args(newsbin, &[0, 1, 3]);
}
#[test]
fn creation() {
let file_tree = FileTree::new();
fs::File::create("bin").unwrap();
newsbin(&["bin", "pkgcraft"]).unwrap();
file_tree.assert(
r#"
[[files]]
path = "/usr/sbin/pkgcraft"
mode = 0o100755
"#,
);
stdin().inject("pkgcraft").unwrap();
into(&["/"]).unwrap();
newsbin(&["-", "pkgcraft"]).unwrap();
file_tree.assert(
r#"
[[files]]
path = "/sbin/pkgcraft"
data = "pkgcraft"
mode = 0o100755
"#,
);
}
}