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…
	
	Add table
		Add a link
		
	
		Reference in a new issue