refactor(nix-compat/derivation): drop non_unicode test

The previous CLs did already absorb all the logic into the common tests,
no need to write this here again.

Change-Id: I7ba84ba86d5445ed247e5d11d5e59b7fa815670e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9732
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
This commit is contained in:
Florian Klink 2023-07-31 16:20:13 +02:00 committed by flokli
parent 398cf8e7ce
commit c3fad811f4

View file

@ -5,7 +5,7 @@ use crate::derivation::parser::Error::ParseError;
use crate::derivation::Derivation;
use crate::store_path::StorePath;
use bstr::{BStr, BString};
use std::collections::{BTreeMap, BTreeSet};
use std::collections::BTreeSet;
use std::fs::File;
use std::io::Read;
use std::path::Path;
@ -414,83 +414,3 @@ fn output_path_construction() {
.expect("must succeed")
);
}
/// This constructs a Derivation using cp1252 encoding and ensures the
/// calculated derivation path matches the one Nix does calculate, as
/// well as the ATerm serialization.
/// We can't add this as a test_case to `output_paths`, as the JSON parser
/// refuses to parse our JSONs.
/// It looks like more recent versions of Nix also seem to not produce these
/// JSON files anymore, however, it still happily produces the .drv files in
/// the store.
#[test_case(
"cp1252",
vec![0xc5, 0xc4, 0xd6],
"/nix/store/drr2mjp9fp9vvzsf5f9p0a80j33dxy7m-cp1252",
"m1vfixn8iprlf0v9abmlrz7mjw1xj8kp-cp1252.drv";
"cp1252"
)]
#[test_case(
"latin1",
vec![0xc5, 0xc4, 0xd6],
"/nix/store/x1f6jfq9qgb6i8jrmpifkn9c64fg4hcm-latin1",
"x6p0hg79i3wg0kkv7699935f7rrj9jf3-latin1.drv";
"latin1"
)]
fn non_unicode(name: &str, chars: Vec<u8>, exp_output_path: &str, exp_derivation_path: &str) {
// construct the Derivation
let mut outputs: BTreeMap<String, Output> = BTreeMap::new();
outputs.insert(
"out".to_string(),
Output {
path: exp_output_path.to_string(),
..Default::default()
},
);
let mut environment: BTreeMap<String, BString> = BTreeMap::new();
environment.insert("builder".to_string(), ":".into());
environment.insert("chars".to_string(), chars.into());
environment.insert("name".to_string(), name.into());
environment.insert("out".to_string(), exp_output_path.into());
environment.insert("system".to_string(), ":".into());
let derivation: Derivation = Derivation {
builder: ":".to_string(),
environment,
outputs,
system: ":".to_string(),
..Default::default()
};
// check the derivation_path matches what Nix calculated.
let actual_drv_path = derivation.calculate_derivation_path(name).unwrap();
assert_eq!(exp_derivation_path.to_string(), actual_drv_path.to_string());
// Now wipe the output path info, and ensure we calculate the same output
// path.
{
let mut derivation = derivation_with_trimmed_output_paths(&derivation);
let calculated_derivation_or_fod_hash = derivation.derivation_or_fod_hash(|_| {
panic!("No parents expected");
});
derivation
.calculate_output_paths(name, &calculated_derivation_or_fod_hash)
.unwrap();
assert_eq!(
exp_output_path.to_string(),
derivation.outputs.get("out").unwrap().path,
"expected calculated output path to match"
);
}
// Construct the ATerm representation and compare with our fixture.
{
let aterm_bytes = read_file(&format!("{}/ok/{}", RESOURCES_PATHS, exp_derivation_path));
assert_eq!(
aterm_bytes,
BStr::new(&derivation.to_aterm_bytes()),
"expected ATerm serialization to match",
);
}
}