|
1 | 1 | use std::{ |
2 | | - collections::{BTreeMap, BTreeSet, btree_map}, |
| 2 | + collections::{BTreeMap, BTreeSet}, |
3 | 3 | str::FromStr, |
| 4 | + vec, |
4 | 5 | }; |
5 | 6 |
|
6 | 7 | use regex::Regex; |
@@ -168,6 +169,15 @@ impl From<EnvVarSet> for Vec<EnvVar> { |
168 | 169 | } |
169 | 170 | } |
170 | 171 |
|
| 172 | +impl IntoIterator for EnvVarSet { |
| 173 | + type IntoIter = vec::IntoIter<Self::Item>; |
| 174 | + type Item = EnvVar; |
| 175 | + |
| 176 | + fn into_iter(self) -> Self::IntoIter { |
| 177 | + Vec::from(self).into_iter() |
| 178 | + } |
| 179 | +} |
| 180 | + |
171 | 181 | /// Resolves dependencies between environment variables and provides sort keys which take these |
172 | 182 | /// dependencies into account |
173 | 183 | pub struct EnvVarDependencyResolver<'a> { |
@@ -492,15 +502,6 @@ impl<'a> EnvVarDependencyResolver<'a> { |
492 | 502 | } |
493 | 503 | } |
494 | 504 |
|
495 | | -impl IntoIterator for EnvVarSet { |
496 | | - type IntoIter = btree_map::IntoValues<EnvVarName, Self::Item>; |
497 | | - type Item = EnvVar; |
498 | | - |
499 | | - fn into_iter(self) -> Self::IntoIter { |
500 | | - self.0.into_values() |
501 | | - } |
502 | | -} |
503 | | - |
504 | 505 | #[cfg(test)] |
505 | 506 | mod tests { |
506 | 507 | use std::str::FromStr; |
@@ -692,89 +693,67 @@ mod tests { |
692 | 693 | } |
693 | 694 |
|
694 | 695 | #[test] |
695 | | - fn test_envvarset_with_references() { |
| 696 | + fn test_vec_envvar_from_envvarset() { |
696 | 697 | let env_var_set = EnvVarSet::new() |
697 | | - .with_value(&EnvVarName::from_str_unsafe("ENV1"), "value1") |
698 | | - // valid reference to a later variable |
699 | | - .with_value(&EnvVarName::from_str_unsafe("ENV2"), "$(ENV3)") |
700 | | - // valid reference to a later variable |
701 | | - .with_value(&EnvVarName::from_str_unsafe("ENV3"), "$(ENV4)") |
702 | | - // valid reference to an earlier variable |
703 | | - .with_value(&EnvVarName::from_str_unsafe("ENV4"), "$(ENV1)") |
704 | | - // invalid reference |
705 | | - .with_value(&EnvVarName::from_str_unsafe("ENV5"), "$(ENV?)") |
706 | | - // Same keys are allowed in Kubernetes, but not in `EnvVarSet`. |
707 | | - // The existing ENV1 is overridden. |
708 | | - .with_value(&EnvVarName::from_str_unsafe("ENV6"), "value6") |
709 | | - .with_value(&EnvVarName::from_str_unsafe("ENV6"), "$(ENV6)") |
710 | | - // multiple references |
711 | | - .with_value( |
712 | | - &EnvVarName::from_str_unsafe("ENV7"), |
713 | | - "$(ENV5) $(ENV8) $(ENV2)", |
714 | | - ) |
715 | | - // multiple references with escaped and invalid references |
716 | | - .with_value( |
717 | | - &EnvVarName::from_str_unsafe("ENV8"), |
718 | | - "$(ENV1) $$(ENV9) $() $(ENV2)", |
719 | | - ) |
720 | | - // No value |
721 | | - .with_field_path(&EnvVarName::from_str_unsafe("ENV9"), &FieldPathEnvVar::Name); |
| 698 | + .with_value(&EnvVarName::from_str_unsafe("ENV1"), "$(ENV2)") |
| 699 | + .with_value(&EnvVarName::from_str_unsafe("ENV2"), "value 2") |
| 700 | + .with_value(&EnvVarName::from_str_unsafe("ENV3"), "value 3"); |
722 | 701 |
|
723 | 702 | assert_eq!( |
724 | 703 | vec![ |
725 | | - EnvVar { |
726 | | - name: "ENV1".to_owned(), |
727 | | - value: Some("value1".to_owned()), |
728 | | - value_from: None |
729 | | - }, |
730 | | - EnvVar { |
731 | | - name: "ENV4".to_owned(), |
732 | | - value: Some("$(ENV1)".to_owned()), |
733 | | - value_from: None |
734 | | - }, |
735 | | - EnvVar { |
736 | | - name: "ENV3".to_owned(), |
737 | | - value: Some("$(ENV4)".to_owned()), |
738 | | - value_from: None |
739 | | - }, |
740 | 704 | EnvVar { |
741 | 705 | name: "ENV2".to_owned(), |
742 | | - value: Some("$(ENV3)".to_owned()), |
743 | | - value_from: None |
744 | | - }, |
745 | | - EnvVar { |
746 | | - name: "ENV5".to_owned(), |
747 | | - value: Some("$(ENV?)".to_owned()), |
| 706 | + value: Some("value 2".to_owned()), |
748 | 707 | value_from: None |
749 | 708 | }, |
750 | 709 | EnvVar { |
751 | | - name: "ENV6".to_owned(), |
752 | | - value: Some("$(ENV6)".to_owned()), |
753 | | - value_from: None |
754 | | - }, |
755 | | - EnvVar { |
756 | | - name: "ENV8".to_owned(), |
757 | | - value: Some("$(ENV1) $$(ENV9) $() $(ENV2)".to_owned()), |
| 710 | + name: "ENV1".to_owned(), |
| 711 | + value: Some("$(ENV2)".to_owned()), |
758 | 712 | value_from: None |
759 | 713 | }, |
760 | 714 | EnvVar { |
761 | | - name: "ENV7".to_owned(), |
762 | | - value: Some("$(ENV5) $(ENV8) $(ENV2)".to_owned()), |
| 715 | + name: "ENV3".to_owned(), |
| 716 | + value: Some("value 3".to_owned()), |
763 | 717 | value_from: None |
764 | 718 | }, |
765 | | - EnvVar { |
766 | | - name: "ENV9".to_owned(), |
767 | | - value: None, |
768 | | - value_from: Some(EnvVarSource { |
769 | | - field_ref: Some(ObjectFieldSelector { |
770 | | - field_path: FieldPathEnvVar::Name.to_string(), |
771 | | - ..ObjectFieldSelector::default() |
772 | | - }), |
773 | | - ..EnvVarSource::default() |
774 | | - }), |
775 | | - }, |
776 | 719 | ], |
777 | 720 | Vec::from(env_var_set) |
778 | 721 | ); |
779 | 722 | } |
| 723 | + |
| 724 | + #[test] |
| 725 | + fn test_envvarset_intoiterator() { |
| 726 | + let env_var_set = EnvVarSet::new() |
| 727 | + .with_value(&EnvVarName::from_str_unsafe("ENV1"), "$(ENV2)") |
| 728 | + .with_value(&EnvVarName::from_str_unsafe("ENV2"), "value 2") |
| 729 | + .with_value(&EnvVarName::from_str_unsafe("ENV3"), "value 3"); |
| 730 | + |
| 731 | + let mut iter = env_var_set.into_iter(); |
| 732 | + |
| 733 | + assert_eq!( |
| 734 | + Some(EnvVar { |
| 735 | + name: "ENV2".to_owned(), |
| 736 | + value: Some("value 2".to_owned()), |
| 737 | + value_from: None |
| 738 | + }), |
| 739 | + iter.next() |
| 740 | + ); |
| 741 | + assert_eq!( |
| 742 | + Some(EnvVar { |
| 743 | + name: "ENV1".to_owned(), |
| 744 | + value: Some("$(ENV2)".to_owned()), |
| 745 | + value_from: None |
| 746 | + }), |
| 747 | + iter.next() |
| 748 | + ); |
| 749 | + assert_eq!( |
| 750 | + Some(EnvVar { |
| 751 | + name: "ENV3".to_owned(), |
| 752 | + value: Some("value 3".to_owned()), |
| 753 | + value_from: None |
| 754 | + }), |
| 755 | + iter.next() |
| 756 | + ); |
| 757 | + assert_eq!(None, iter.next()); |
| 758 | + } |
780 | 759 | } |
0 commit comments