mirror of
https://github.com/lune-org/lune.git
synced 2025-05-04 10:43:57 +01:00
fix(tests): logic for adding custom locale
This commit is contained in:
parent
ee51f187b3
commit
3570e8c855
1 changed files with 24 additions and 6 deletions
30
src/tests.rs
30
src/tests.rs
|
@ -3,7 +3,11 @@ use std::process::{ExitCode, Stdio};
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use console::set_colors_enabled;
|
use console::set_colors_enabled;
|
||||||
use console::set_colors_enabled_stderr;
|
use console::set_colors_enabled_stderr;
|
||||||
use tokio::{fs::read_to_string, process::Command};
|
use tokio::{
|
||||||
|
fs::{read_to_string, File},
|
||||||
|
io::AsyncWriteExt,
|
||||||
|
process::Command,
|
||||||
|
};
|
||||||
|
|
||||||
use crate::Lune;
|
use crate::Lune;
|
||||||
|
|
||||||
|
@ -15,17 +19,31 @@ macro_rules! create_tests {
|
||||||
async fn $name() -> Result<ExitCode> {
|
async fn $name() -> Result<ExitCode> {
|
||||||
// For the formatTime test, we need to enable the fr_FR locale for UTF-8 for the test to pass
|
// For the formatTime test, we need to enable the fr_FR locale for UTF-8 for the test to pass
|
||||||
if stringify!($name) == "datetime_format_time" {
|
if stringify!($name) == "datetime_format_time" {
|
||||||
|
// Create a new scope, so the file gets closed after it is out of scope
|
||||||
|
{
|
||||||
|
// Creates a bash script for appending to /etc/locales.gen
|
||||||
|
|
||||||
|
// Using a bash script simplifies a lot of piping logic that would
|
||||||
|
// otherwise be required in Rust
|
||||||
|
let mut append_locale_script = File::options().write(true).create(true).mode(0o110).open("target/datetime_format_time_locales.sh").await?;
|
||||||
|
append_locale_script.write_all(b"echo fr_FR.UTF-8 UTF-8 | tee -a /etc/locale.gen").await?;
|
||||||
|
};
|
||||||
|
|
||||||
// Inherits the credentials from parent stdin
|
// Inherits the credentials from parent stdin
|
||||||
let out = Command::new("sudo").arg("-S").arg("bash").arg("-c").arg("echo").arg("'fr_FR.UTF-8 UTF-8' >> /etc/locale.gen\"").stdin(Stdio::inherit()).output().await?;
|
let out = Command::new("sudo").arg("-S").arg("bash").arg("-c").arg("target/datetime_format_time_locales.sh").stdin(Stdio::inherit()).output().await?;
|
||||||
|
|
||||||
if !out.status.success() {
|
if !out.status.success() {
|
||||||
eprintln!("ERROR: Failed to write locale info to /etc/locale.gen, could not run as root");
|
eprintln!("ERROR: Failed to write locale info to /etc/locale.gen, could not run as root");
|
||||||
eprintln!("{}", String::from_utf8_lossy(&out.stderr));
|
eprintln!("{}", String::from_utf8_lossy(&out.stderr));
|
||||||
return Ok(ExitCode::FAILURE);
|
return Ok(ExitCode::FAILURE);
|
||||||
} else {
|
}
|
||||||
if !Command::new("sudo").arg("locale-gen").output().await?.status.success() {
|
|
||||||
return Ok(ExitCode::FAILURE);
|
let locale_gen = Command::new("sudo").arg("-S").arg("locale-gen").stdin(Stdio::inherit()).output().await?;
|
||||||
}
|
|
||||||
|
if !locale_gen.status.success() {
|
||||||
|
eprintln!("ERROR: Failed to run locale-gen as root");
|
||||||
|
eprintln!("{}", String::from_utf8_lossy(&out.stderr));
|
||||||
|
return Ok(ExitCode::FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Disable styling for stdout and stderr since
|
// Disable styling for stdout and stderr since
|
||||||
|
|
Loading…
Add table
Reference in a new issue