304 lines
9.7 KiB
Rust
304 lines
9.7 KiB
Rust
use l10nregistry_tests::{FileSource, RegistrySetup, TestFileFetcher};
|
|
use unic_langid::LanguageIdentifier;
|
|
|
|
static FTL_RESOURCE_TOOLKIT: &str = "toolkit/global/textActions.ftl";
|
|
static FTL_RESOURCE_BROWSER: &str = "branding/brand.ftl";
|
|
|
|
#[test]
|
|
fn test_get_sources_for_resource() {
|
|
let en_us: LanguageIdentifier = "en-US".parse().unwrap();
|
|
let setup = RegistrySetup::new(
|
|
"test",
|
|
vec![
|
|
FileSource::new("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"),
|
|
FileSource::new("browser", None, vec![en_us.clone()], "browser/{locale}/"),
|
|
],
|
|
vec![en_us.clone()],
|
|
);
|
|
let fetcher = TestFileFetcher::new();
|
|
let (_, reg) = fetcher.get_registry_and_environment(setup);
|
|
|
|
{
|
|
let metasources = reg
|
|
.try_borrow_metasources()
|
|
.expect("Unable to borrow metasources.");
|
|
|
|
let toolkit = metasources.file_source_by_name(0, "toolkit").unwrap();
|
|
let browser = metasources.file_source_by_name(0, "browser").unwrap();
|
|
let toolkit_resource_id = FTL_RESOURCE_TOOLKIT.into();
|
|
|
|
let mut i = metasources.get_sources_for_resource(0, &en_us, &toolkit_resource_id);
|
|
|
|
assert_eq!(i.next(), Some(toolkit));
|
|
assert_eq!(i.next(), Some(browser));
|
|
assert_eq!(i.next(), None);
|
|
|
|
assert!(browser
|
|
.fetch_file_sync(&en_us, &FTL_RESOURCE_TOOLKIT.into(), false)
|
|
.is_none());
|
|
|
|
let mut i = metasources.get_sources_for_resource(0, &en_us, &toolkit_resource_id);
|
|
assert_eq!(i.next(), Some(toolkit));
|
|
assert_eq!(i.next(), None);
|
|
|
|
assert!(toolkit
|
|
.fetch_file_sync(&en_us, &FTL_RESOURCE_TOOLKIT.into(), false)
|
|
.is_some());
|
|
|
|
let mut i = metasources.get_sources_for_resource(0, &en_us, &toolkit_resource_id);
|
|
assert_eq!(i.next(), Some(toolkit));
|
|
assert_eq!(i.next(), None);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn test_generate_bundles_for_lang_sync() {
|
|
let en_us: LanguageIdentifier = "en-US".parse().unwrap();
|
|
let setup = RegistrySetup::new(
|
|
"test",
|
|
vec![
|
|
FileSource::new("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"),
|
|
FileSource::new("browser", None, vec![en_us.clone()], "browser/{locale}/"),
|
|
],
|
|
vec![en_us.clone()],
|
|
);
|
|
let fetcher = TestFileFetcher::new();
|
|
let (_, reg) = fetcher.get_registry_and_environment(setup);
|
|
|
|
let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
|
|
let mut i = reg.generate_bundles_for_lang_sync(en_us.clone(), paths);
|
|
|
|
assert!(i.next().is_some());
|
|
assert!(i.next().is_none());
|
|
}
|
|
|
|
#[test]
|
|
fn test_generate_bundles_sync() {
|
|
let en_us: LanguageIdentifier = "en-US".parse().unwrap();
|
|
let setup = RegistrySetup::new(
|
|
"test",
|
|
vec![
|
|
FileSource::new("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"),
|
|
FileSource::new("browser", None, vec![en_us.clone()], "browser/{locale}/"),
|
|
],
|
|
vec![en_us.clone()],
|
|
);
|
|
let fetcher = TestFileFetcher::new();
|
|
let (_, reg) = fetcher.get_registry_and_environment(setup);
|
|
|
|
let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
|
|
let lang_ids = vec![en_us];
|
|
let mut i = reg.generate_bundles_sync(lang_ids.into_iter(), paths);
|
|
|
|
assert!(i.next().is_some());
|
|
assert!(i.next().is_none());
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn test_generate_bundles_for_lang() {
|
|
use futures::stream::StreamExt;
|
|
|
|
let en_us: LanguageIdentifier = "en-US".parse().unwrap();
|
|
let setup = RegistrySetup::new(
|
|
"test",
|
|
vec![
|
|
FileSource::new("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"),
|
|
FileSource::new("browser", None, vec![en_us.clone()], "browser/{locale}/"),
|
|
],
|
|
vec![en_us.clone()],
|
|
);
|
|
let fetcher = TestFileFetcher::new();
|
|
let (_, reg) = fetcher.get_registry_and_environment(setup);
|
|
|
|
let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
|
|
let mut i = reg
|
|
.generate_bundles_for_lang(en_us, paths)
|
|
.expect("Failed to get GenerateBundles.");
|
|
|
|
assert!(i.next().await.is_some());
|
|
assert!(i.next().await.is_none());
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn test_generate_bundles() {
|
|
use futures::stream::StreamExt;
|
|
|
|
let en_us: LanguageIdentifier = "en-US".parse().unwrap();
|
|
let setup = RegistrySetup::new(
|
|
"test",
|
|
vec![
|
|
FileSource::new("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"),
|
|
FileSource::new("browser", None, vec![en_us.clone()], "browser/{locale}/"),
|
|
],
|
|
vec![en_us.clone()],
|
|
);
|
|
let fetcher = TestFileFetcher::new();
|
|
let (_, reg) = fetcher.get_registry_and_environment(setup);
|
|
|
|
let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
|
|
let langs = vec![en_us];
|
|
let mut i = reg
|
|
.generate_bundles(langs.into_iter(), paths)
|
|
.expect("Failed to get GenerateBundles.");
|
|
|
|
assert!(i.next().await.is_some());
|
|
assert!(i.next().await.is_none());
|
|
}
|
|
|
|
#[test]
|
|
fn test_manage_sources() {
|
|
let en_us: LanguageIdentifier = "en-US".parse().unwrap();
|
|
let setup = RegistrySetup::new(
|
|
"test",
|
|
vec![
|
|
FileSource::new("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"),
|
|
FileSource::new("browser", None, vec![en_us.clone()], "browser/{locale}/"),
|
|
],
|
|
vec![en_us.clone()],
|
|
);
|
|
let fetcher = TestFileFetcher::new();
|
|
let (_, reg) = fetcher.get_registry_and_environment(setup);
|
|
|
|
let lang_ids = vec![en_us];
|
|
|
|
let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
|
|
|
|
let mut i = reg.generate_bundles_sync(lang_ids.clone().into_iter(), paths);
|
|
|
|
assert!(i.next().is_some());
|
|
assert!(i.next().is_none());
|
|
|
|
reg.clone()
|
|
.remove_sources(vec!["toolkit"])
|
|
.expect("Failed to remove a source.");
|
|
|
|
let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
|
|
let mut i = reg.generate_bundles_sync(lang_ids.clone().into_iter(), paths);
|
|
assert!(i.next().is_none());
|
|
|
|
let paths = vec![FTL_RESOURCE_BROWSER.into()];
|
|
let mut i = reg.generate_bundles_sync(lang_ids.clone().into_iter(), paths);
|
|
assert!(i.next().is_some());
|
|
assert!(i.next().is_none());
|
|
|
|
reg.register_sources(vec![fetcher.get_test_file_source(
|
|
"toolkit",
|
|
None,
|
|
lang_ids.clone(),
|
|
"browser/{locale}/",
|
|
)])
|
|
.expect("Failed to register a source.");
|
|
|
|
let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
|
|
let mut i = reg.generate_bundles_sync(lang_ids.clone().into_iter(), paths);
|
|
assert!(i.next().is_none());
|
|
|
|
reg.update_sources(vec![fetcher.get_test_file_source(
|
|
"toolkit",
|
|
None,
|
|
lang_ids.clone(),
|
|
"toolkit/{locale}/",
|
|
)])
|
|
.expect("Failed to update a source.");
|
|
|
|
let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
|
|
let mut i = reg.generate_bundles_sync(lang_ids.clone().into_iter(), paths);
|
|
assert!(i.next().is_some());
|
|
assert!(i.next().is_none());
|
|
}
|
|
|
|
#[test]
|
|
fn test_generate_bundles_with_metasources_sync() {
|
|
let en_us: LanguageIdentifier = "en-US".parse().unwrap();
|
|
let setup = RegistrySetup::new(
|
|
"test",
|
|
vec![
|
|
FileSource::new(
|
|
"toolkit",
|
|
Some("app"),
|
|
vec![en_us.clone()],
|
|
"toolkit/{locale}/",
|
|
),
|
|
FileSource::new(
|
|
"browser",
|
|
Some("app"),
|
|
vec![en_us.clone()],
|
|
"browser/{locale}/",
|
|
),
|
|
FileSource::new(
|
|
"toolkit",
|
|
Some("langpack"),
|
|
vec![en_us.clone()],
|
|
"toolkit/{locale}/",
|
|
),
|
|
FileSource::new(
|
|
"browser",
|
|
Some("langpack"),
|
|
vec![en_us.clone()],
|
|
"browser/{locale}/",
|
|
),
|
|
],
|
|
vec![en_us.clone()],
|
|
);
|
|
let fetcher = TestFileFetcher::new();
|
|
let (_, reg) = fetcher.get_registry_and_environment(setup);
|
|
|
|
let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
|
|
let lang_ids = vec![en_us];
|
|
let mut i = reg.generate_bundles_sync(lang_ids.into_iter(), paths);
|
|
|
|
assert!(i.next().is_some());
|
|
assert!(i.next().is_some());
|
|
assert!(i.next().is_none());
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn test_generate_bundles_with_metasources() {
|
|
use futures::stream::StreamExt;
|
|
|
|
let en_us: LanguageIdentifier = "en-US".parse().unwrap();
|
|
|
|
let setup = RegistrySetup::new(
|
|
"test",
|
|
vec![
|
|
FileSource::new(
|
|
"toolkit",
|
|
Some("app"),
|
|
vec![en_us.clone()],
|
|
"toolkit/{locale}/",
|
|
),
|
|
FileSource::new(
|
|
"browser",
|
|
Some("app"),
|
|
vec![en_us.clone()],
|
|
"browser/{locale}/",
|
|
),
|
|
FileSource::new(
|
|
"toolkit",
|
|
Some("langpack"),
|
|
vec![en_us.clone()],
|
|
"toolkit/{locale}/",
|
|
),
|
|
FileSource::new(
|
|
"browser",
|
|
Some("langpack"),
|
|
vec![en_us.clone()],
|
|
"browser/{locale}/",
|
|
),
|
|
],
|
|
vec![en_us.clone()],
|
|
);
|
|
|
|
let fetcher = TestFileFetcher::new();
|
|
let (_, reg) = fetcher.get_registry_and_environment(setup);
|
|
|
|
let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
|
|
let langs = vec![en_us];
|
|
let mut i = reg
|
|
.generate_bundles(langs.into_iter(), paths)
|
|
.expect("Failed to get GenerateBundles.");
|
|
|
|
assert!(i.next().await.is_some());
|
|
assert!(i.next().await.is_some());
|
|
assert!(i.next().await.is_none());
|
|
}
|