diff options
Diffstat (limited to 'src/builder.rs')
-rw-r--r-- | src/builder.rs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/builder.rs b/src/builder.rs index ea9bd32..cb924ac 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -1190,6 +1190,20 @@ impl LogsOptionsBuilder { self } + #[cfg(feature = "chrono")] + pub fn since<Tz>( + &mut self, + timestamp: &chrono::DateTime<Tz>, + ) -> &mut Self + where + Tz: chrono::TimeZone, + { + self.params + .insert("since", timestamp.timestamp().to_string()); + self + } + + #[cfg(not(feature = "chrono"))] pub fn since( &mut self, timestamp: i64, @@ -1712,6 +1726,32 @@ mod tests { ); } + #[cfg(feature = "chrono")] + #[test] + fn logs_options() { + let timestamp = chrono::NaiveDateTime::from_timestamp(2_147_483_647, 0); + let since = chrono::DateTime::<chrono::Utc>::from_utc(timestamp, chrono::Utc); + + let options = LogsOptionsBuilder::default() + .follow(true) + .stdout(true) + .stderr(true) + .timestamps(true) + .tail("all") + .since(&since) + .build(); + + let serialized = options.serialize().unwrap(); + + assert!(serialized.contains("follow=true")); + assert!(serialized.contains("stdout=true")); + assert!(serialized.contains("stderr=true")); + assert!(serialized.contains("timestamps=true")); + assert!(serialized.contains("tail=all")); + assert!(serialized.contains("since=2147483647")); + } + + #[cfg(not(feature = "chrono"))] #[test] fn logs_options() { let options = LogsOptionsBuilder::default() |