pub fn bundle_gz() -> &'static [u8] {
include_bytes!("../../../vendor/relux-viewer.js.gz")
}
pub fn hljs_gz() -> &'static [u8] {
include_bytes!("../../../vendor/highlight-11.11.1.min.js.gz")
}
pub fn hljs_init_gz() -> &'static [u8] {
use std::io::Write;
use std::sync::OnceLock;
use flate2::Compression;
use flate2::write::GzEncoder;
static CELL: OnceLock<Vec<u8>> = OnceLock::new();
CELL.get_or_init(|| {
let mut encoder = GzEncoder::new(Vec::new(), Compression::best());
encoder
.write_all(crate::report::hljs_init::HLJS_RELUX_INIT.as_bytes())
.expect("write to Vec cannot fail");
encoder.finish().expect("finish to Vec cannot fail")
})
}
#[cfg(test)]
mod tests {
use super::*;
use flate2::read::GzDecoder;
use std::io::Read;
#[test]
fn embedded_bundle_is_valid_gzip_with_expected_entry() {
let bytes = bundle_gz();
assert!(!bytes.is_empty(), "embedded bundle is empty");
let mut decoder = GzDecoder::new(bytes);
let mut js = String::new();
decoder
.read_to_string(&mut js)
.expect("bundle is not valid gzip");
assert!(
js.contains("RELUX_DATA"),
"decompressed bundle missing 'RELUX_DATA' entry hook"
);
}
#[test]
fn hljs_bundle_is_valid_gzip_with_register_language_hook() {
let bytes = hljs_gz();
assert!(!bytes.is_empty(), "hljs bundle is empty");
let mut decoder = GzDecoder::new(bytes);
let mut js = String::new();
decoder
.read_to_string(&mut js)
.expect("hljs bundle is not valid gzip");
assert!(
js.contains("registerLanguage"),
"decompressed hljs bundle missing 'registerLanguage' entry hook"
);
}
}