feat(tvix/derivation): derive Default for Derivation
Some of the fields in a Derivation struct stay empty, and manually creating BTreeMap or vec for it is annoying. Derive Default instead, so we can use the defaults instead of writing more by hand. Change-Id: I5d41b4b55c8187cb101eb4266451a470008e0067 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7788 Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
This commit is contained in:
parent
f04829a1bb
commit
1e2c859840
2 changed files with 21 additions and 32 deletions
|
@ -7,7 +7,7 @@ use std::{collections::BTreeMap, fmt, fmt::Write};
|
|||
use tvix_store::nixbase32::NIXBASE32;
|
||||
use tvix_store::store_path::{ParseStorePathError, StorePath, STORE_DIR};
|
||||
|
||||
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
pub struct Derivation {
|
||||
#[serde(rename = "args")]
|
||||
pub arguments: Vec<String>,
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
use crate::derivation::Derivation;
|
||||
use crate::output::{Hash, Output};
|
||||
use std::collections::BTreeMap;
|
||||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
use std::path::Path;
|
||||
|
@ -191,8 +190,14 @@ fn output_paths(name: &str, drv_path: &str) {
|
|||
#[test]
|
||||
fn output_path_construction() {
|
||||
// create the bar derivation
|
||||
let mut bar_drv = Derivation {
|
||||
builder: ":".to_string(),
|
||||
system: ":".to_string(),
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
// assemble bar env
|
||||
let mut bar_env: BTreeMap<String, String> = BTreeMap::new();
|
||||
let bar_env = &mut bar_drv.environment;
|
||||
bar_env.insert("builder".to_string(), ":".to_string());
|
||||
bar_env.insert("name".to_string(), "bar".to_string());
|
||||
bar_env.insert("out".to_string(), "".to_string()); // will be calculated
|
||||
|
@ -205,8 +210,7 @@ fn output_path_construction() {
|
|||
bar_env.insert("system".to_string(), ":".to_string());
|
||||
|
||||
// assemble bar outputs
|
||||
let mut bar_outputs: BTreeMap<String, Output> = BTreeMap::new();
|
||||
bar_outputs.insert(
|
||||
bar_drv.outputs.insert(
|
||||
"out".to_string(),
|
||||
Output {
|
||||
path: "".to_string(), // will be calculated
|
||||
|
@ -218,17 +222,6 @@ fn output_path_construction() {
|
|||
},
|
||||
);
|
||||
|
||||
// assemble bar itself
|
||||
let mut bar_drv = Derivation {
|
||||
arguments: vec![],
|
||||
builder: ":".to_string(),
|
||||
environment: bar_env,
|
||||
input_derivations: BTreeMap::new(),
|
||||
input_sources: vec![],
|
||||
outputs: bar_outputs,
|
||||
system: ":".to_string(),
|
||||
};
|
||||
|
||||
// calculate bar output paths
|
||||
let bar_calc_result = bar_drv.calculate_output_paths(
|
||||
"bar",
|
||||
|
@ -254,8 +247,15 @@ fn output_path_construction() {
|
|||
.calculate_derivation_path("bar")
|
||||
.expect("must succeed");
|
||||
|
||||
// create foo derivation
|
||||
let mut foo_drv = Derivation {
|
||||
builder: ":".to_string(),
|
||||
system: ":".to_string(),
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
// assemble foo env
|
||||
let mut foo_env: BTreeMap<String, String> = BTreeMap::new();
|
||||
let foo_env = &mut foo_drv.environment;
|
||||
foo_env.insert("bar".to_string(), bar_output_path.to_string());
|
||||
foo_env.insert("builder".to_string(), ":".to_string());
|
||||
foo_env.insert("name".to_string(), "foo".to_string());
|
||||
|
@ -263,8 +263,7 @@ fn output_path_construction() {
|
|||
foo_env.insert("system".to_string(), ":".to_string());
|
||||
|
||||
// asssemble foo outputs
|
||||
let mut foo_outputs: BTreeMap<String, Output> = BTreeMap::new();
|
||||
foo_outputs.insert(
|
||||
foo_drv.outputs.insert(
|
||||
"out".to_string(),
|
||||
Output {
|
||||
path: "".to_string(), // will be calculated
|
||||
|
@ -273,19 +272,9 @@ fn output_path_construction() {
|
|||
);
|
||||
|
||||
// assemble foo input_derivations
|
||||
let mut foo_input_derivations: BTreeMap<String, Vec<String>> = BTreeMap::new();
|
||||
foo_input_derivations.insert(bar_drv_path.to_absolute_path(), vec!["out".to_string()]);
|
||||
|
||||
// assemble foo itself
|
||||
let mut foo_drv = Derivation {
|
||||
arguments: vec![],
|
||||
builder: ":".to_string(),
|
||||
environment: foo_env,
|
||||
input_derivations: foo_input_derivations,
|
||||
input_sources: vec![],
|
||||
outputs: foo_outputs,
|
||||
system: ":".to_string(),
|
||||
};
|
||||
foo_drv
|
||||
.input_derivations
|
||||
.insert(bar_drv_path.to_absolute_path(), vec!["out".to_string()]);
|
||||
|
||||
// calculate foo output paths
|
||||
let foo_calc_result = foo_drv.calculate_output_paths(
|
||||
|
|
Loading…
Reference in a new issue