From 0be8a499fa29e860e984cad61a721be9ad28026e Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 20 Dec 2019 12:29:51 +0100 Subject: Move code for testing to submodule Signed-off-by: Matthias Beyer --- src/component.rs | 12 +- src/lib.rs | 5 +- src/testdata.rs | 304 -------------------------------------------------- src/testing/data.rs | 304 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/testing/mod.rs | 2 + src/testing/utils.rs | 16 +++ src/testutils.rs | 16 --- src/utils/dateutil.rs | 3 +- src/vcalendar.rs | 48 ++++---- src/vevent.rs | 40 +++---- 10 files changed, 374 insertions(+), 376 deletions(-) delete mode 100644 src/testdata.rs create mode 100644 src/testing/data.rs create mode 100644 src/testing/mod.rs create mode 100644 src/testing/utils.rs delete mode 100644 src/testutils.rs diff --git a/src/component.rs b/src/component.rs index 7de364c..d6e38b8 100644 --- a/src/component.rs +++ b/src/component.rs @@ -87,12 +87,12 @@ pub trait IcalComponent { #[cfg(test)] mod tests { use super::*; - use crate::testdata; + use crate::testing; use crate::IcalVCalendar; #[test] fn get_property_test() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); let event = cal.get_principal_event(); let prop_name = "SUMMARY"; let prop_value: String = event.get_property_by_name(prop_name).unwrap().get_value(); @@ -106,7 +106,7 @@ mod tests { #[test] fn get_property_test_lastmodified() { let cal = - IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY_LASTMODIFIED, None).unwrap(); + IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY_LASTMODIFIED, None).unwrap(); let event = cal.get_principal_event(); let prop_name = "LAST-MODIFIED"; let prop_value: String = event.get_property_by_name(prop_name).unwrap().get_value(); @@ -116,7 +116,7 @@ mod tests { #[test] fn get_property_test_cal() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); let prop_name = "PRODID"; let prop_value: String = cal.get_property_by_name(prop_name).unwrap().get_value(); @@ -128,7 +128,7 @@ mod tests { #[test] fn get_property_test_negative() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); let event = cal.get_principal_event(); let prop_name = "DESCRIPTION"; let prop = event.get_property_by_name(prop_name); @@ -138,7 +138,7 @@ mod tests { #[test] fn get_property_by_name_test() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); let event = cal.get_principal_event(); let prop_name = "NONSENSE"; let prop = event.get_property_by_name(prop_name); diff --git a/src/lib.rs b/src/lib.rs index d0fc056..eabeaa5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -43,10 +43,7 @@ pub mod vcalendar; pub mod vevent; #[cfg(test)] -pub mod testdata; - -#[cfg(test)] -pub mod testutils; +pub mod testing; pub use crate::component::IcalComponent; pub use crate::duration::IcalDuration; diff --git a/src/testdata.rs b/src/testdata.rs deleted file mode 100644 index 9237889..0000000 --- a/src/testdata.rs +++ /dev/null @@ -1,304 +0,0 @@ -// from https://tools.ietf.org/html/rfc5545#section-3.6.1 -pub static TEST_EVENT_MULTIDAY_ALLDAY: &str = indoc!( - " - BEGIN:VCALENDAR - VERSION:2.0 - PRODID:-//ABC Corporation//NONSGML My Product//EN - BEGIN:VEVENT - UID:20070423T123432Z-541111@example.com - DTSTAMP:20070423T123432Z - DTSTART;VALUE=DATE:20070628 - DTEND;VALUE=DATE:20070709 - SUMMARY:Festival International de Jazz de Montreal - LOCATION:LDB Lobby - TRANSP:TRANSPARENT - END:VEVENT - END:VCALENDAR -" -); - -pub static TEST_EVENT_MULTIDAY: &str = indoc!( - " - BEGIN:VCALENDAR - VERSION:2.0 - PRODID:-//ABC Corporation//NONSGML My Product//EN - BEGIN:VEVENT - UID:20070423T123432Z-541111@example.com - DTSTAMP:20070423T123432Z - DTSTART:20070628T132900 - DTEND:20070709T072900 - SUMMARY:Festival International de Jazz de Montreal - LOCATION:LDB Lobby - TRANSP:TRANSPARENT - END:VEVENT - END:VCALENDAR -" -); - -pub static TEST_EVENT_MULTIDAY_LASTMODIFIED: &str = indoc!( - " - BEGIN:VCALENDAR - VERSION:2.0 - PRODID:-//ABC Corporation//NONSGML My Product//EN - BEGIN:VEVENT - UID:20070423T123432Z-541111@example.com - DTSTAMP:20070423T123432Z - DTSTART;VALUE=DATE:20070628T132900 - DTEND;VALUE=DATE:20070709T072900 - SUMMARY:Festival International de Jazz de Montreal - LAST-MODIFIED:20070423T123432Z - LOCATION:LDB Lobby - TRANSP:TRANSPARENT - END:VEVENT - END:VCALENDAR -" -); - -pub static TEST_DTSTART_ONLY_DATE: &str = indoc!( - " - BEGIN:VCALENDAR - VERSION:2.0 - PRODID:-//ABC Corporation//NONSGML My Product//EN - BEGIN:VEVENT - UID:20070423T123432Z-541111@example.com - DTSTAMP:20070423T123432Z - DTSTART;VALUE=DATE:20070628 - SUMMARY:Festival International de Jazz de Montreal - LOCATION:LDB Lobby - TRANSP:TRANSPARENT - END:VEVENT - END:VCALENDAR -" -); - -pub static TEST_DTSTART_ONLY_DATETIME: &str = indoc!( - " - BEGIN:VCALENDAR - VERSION:2.0 - PRODID:-//ABC Corporation//NONSGML My Product//EN - BEGIN:VEVENT - UID:20070423T123432Z-541111@example.com - DTSTAMP:20070423T123432Z - DTSTART:20070628T132900 - SUMMARY:Festival International de Jazz de Montreal - LOCATION:LDB Lobby - TRANSP:TRANSPARENT - END:VEVENT - END:VCALENDAR -" -); - -pub static TEST_EVENT_EMPTY_SUMMARY: &str = indoc!( - " - BEGIN:VCALENDAR - VERSION:2.0 - PRODID:-//ABC Corporation//NONSGML My Product//EN - BEGIN:VEVENT - UID:20070423T123432Z-541111@example.com - DTSTAMP:20070423T123432Z - DTSTART;VALUE=DATE:20070628 - DTEND;VALUE=DATE:20070709 - SUMMARY: - LOCATION:LDB Lobby - TRANSP:TRANSPARENT - END:VEVENT - END:VCALENDAR -" -); - -pub static TEST_EVENT_NO_UID: &str = indoc!( - " - BEGIN:VCALENDAR - VERSION:2.0 - PRODID:-//ABC Corporation//NONSGML My Product//EN - BEGIN:VEVENT - DTSTAMP:20070423T123432Z - DTSTART;VALUE=DATE:20070628 - DTEND;VALUE=DATE:20070709 - SUMMARY:Festival International de Jazz de Montreal - LOCATION:LDB Lobby - TRANSP:TRANSPARENT - END:VEVENT - END:VCALENDAR -" -); - -pub static TEST_EVENT_NO_PRODID: &str = indoc!( - " - BEGIN:VCALENDAR - VERSION:2.0 - BEGIN:VEVENT - UID:20070423T123432Z-541111@example.com - DTSTAMP:20070423T123432Z - DTSTART;VALUE=DATE:20070628 - DTEND;VALUE=DATE:20070709 - SUMMARY:Festival International de Jazz de Montreal - LOCATION:LDB Lobby - TRANSP:TRANSPARENT - END:VEVENT - END:VCALENDAR -" -); - -// from https://tools.ietf.org/html/rfc5545#section-4 -pub static TEST_EVENT_ONE_MEETING: &str = indoc!( - r" - BEGIN:VCALENDAR - METHOD:xyz - VERSION:2.0 - PRODID:-//ABC Corporation//NONSGML My Product//EN - BEGIN:VEVENT - DTSTAMP:19970324T120000Z - SEQUENCE:0 - UID:uid3@example.com - ORGANIZER:mailto:jdoe@example.com - ATTENDEE;RSVP=TRUE:mailto:jsmith@example.com - DTSTART:19970324T123000Z - DTEND:19970324T210000Z - CATEGORIES:MEETING,PROJECT - CLASS:PUBLIC - SUMMARY:Calendaring Interoperability Planning Meeting - DESCRIPTION:Discuss how we can test c&s interoperability\n - using iCalendar and other IETF standards. - LOCATION:LDB Lobby - ATTACH;FMTTYPE=application/postscript:ftp://example.com/pub/conf/bkgrnd.ps - END:VEVENT - END:VCALENDAR - -" -); - -pub static TEST_EVENT_RECUR: &str = indoc!( - " - BEGIN:VCALENDAR - VERSION:2.0 - PRODID:-//ABC Corporation//NONSGML My Product//EN - BEGIN:VEVENT - UID:autocryptthursday - DTSTART;VALUE=DATE:20181011 - DURATION:P2D - SUMMARY:Autocrypt Thursdays - RRULE:FREQ=WEEKLY;COUNT=10 - END:VEVENT - END:VCALENDAR - -" -); - -pub static TEST_EVENT_WITH_TIMEZONE_COMPONENT: &str = indoc!( - " - BEGIN:VCALENDAR - VERSION:2.0 - PRODID:-//PIMUTILS.ORG//NONSGML khal / icalendar //EN - BEGIN:VTIMEZONE - TZID:Europe/Berlin - BEGIN:DAYLIGHT - DTSTART;VALUE=DATE-TIME:20180325T030000 - TZNAME:CEST - TZOFFSETFROM:+0100 - TZOFFSETTO:+0200 - END:DAYLIGHT - BEGIN:STANDARD - DTSTART;VALUE=DATE-TIME:20181028T020000 - TZNAME:CET - TZOFFSETFROM:+0200 - TZOFFSETTO:+0100 - END:STANDARD - END:VTIMEZONE - BEGIN:VEVENT - SUMMARY:Some Event - DTSTART;TZID=Europe/Berlin;VALUE=DATE-TIME:20181026T133000 - DTEND;TZID=Europe/Berlin;VALUE=DATE-TIME:20181026T160000 - DTSTAMP;VALUE=DATE-TIME:20181022T145405Z - UID:O2G1SKNFDGC1OZ1675I1A9OFQOFZXTNONYNO - SEQUENCE:1 - LOCATION:Some Location - END:VEVENT - END:VCALENDAR -" -); - -pub static TEST_MULTIPLE_EVENTS: &str = indoc!( - " - BEGIN:VCALENDAR - VERSION:2.0 - PRODID:-//ABC Corporation//NONSGML My Product//EN - BEGIN:VEVENT - UID:uid1 - DTSTAMP:20070423T123432Z - DTSTART;VALUE=DATE:20070628 - SUMMARY:First Event - END:VEVENT - BEGIN:VEVENT - UID:uid2 - DTSTAMP:20070423T123432Z - DTSTART;VALUE=DATE:20070628 - SUMMARY:Second Event - END:VEVENT - END:VCALENDAR -" -); - -pub static TEST_NO_DTSTART: &str = indoc!( - " - BEGIN:VCALENDAR - VERSION:2.0 - PRODID:-//ABC Corporation//NONSGML My Product//EN - BEGIN:VEVENT - UID:uid3 - DTSTAMP:20070423T123432Z - END:VEVENT - END:VCALENDAR -" -); - -pub static TEST_NO_SUMMARY: &str = indoc!( - " - BEGIN:VCALENDAR - VERSION:2.0 - PRODID:-//ABC Corporation//NONSGML My Product//EN - BEGIN:VEVENT - UID:uid3 - DTSTAMP:20070423T123432Z - DTSTART;VALUE=DATE:20070628 - END:VEVENT - END:VCALENDAR -" -); - -pub static TEST_BARE_EVENT: &str = indoc!( - " - BEGIN:VEVENT - UID:uid4 - DTSTAMP:20070423T123432Z - DTSTART;VALUE=DATE:20070628 - END:VEVENT -" -); - -pub static TEST_EVENT_WITH_X_LIC_ERROR: &str = indoc!( - " - BEGIN:VCALENDAR - PRODID:CommuniGate Pro 6.2.5 - VERSION:2.0 - BEGIN:VEVENT - DTSTAMP:20180821T103922Z - UID:1 - SUMMARY:Summary - DTSTART:20180516T093000Z - DTEND:20180516T110000Z - X-MICROSOFT-CDO-BUSYSTATUS:BUSY - LAST-MODIFIED:20180821T103105Z - CREATED:20180404T130941Z - PRIORITY:5 - STATUS:CONFIRMED - X-LIC-ERROR:No value for LOCATION property. Removing entire property: - END:VEVENT - END:VCALENDAR -" -); - -use chrono::{DateTime, TimeZone, Utc}; -lazy_static! { - pub static ref NOW_TEST: DateTime = Utc.ymd(2013, 01, 01).and_hms(1, 2, 3); -} diff --git a/src/testing/data.rs b/src/testing/data.rs new file mode 100644 index 0000000..9237889 --- /dev/null +++ b/src/testing/data.rs @@ -0,0 +1,304 @@ +// from https://tools.ietf.org/html/rfc5545#section-3.6.1 +pub static TEST_EVENT_MULTIDAY_ALLDAY: &str = indoc!( + " + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//ABC Corporation//NONSGML My Product//EN + BEGIN:VEVENT + UID:20070423T123432Z-541111@example.com + DTSTAMP:20070423T123432Z + DTSTART;VALUE=DATE:20070628 + DTEND;VALUE=DATE:20070709 + SUMMARY:Festival International de Jazz de Montreal + LOCATION:LDB Lobby + TRANSP:TRANSPARENT + END:VEVENT + END:VCALENDAR +" +); + +pub static TEST_EVENT_MULTIDAY: &str = indoc!( + " + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//ABC Corporation//NONSGML My Product//EN + BEGIN:VEVENT + UID:20070423T123432Z-541111@example.com + DTSTAMP:20070423T123432Z + DTSTART:20070628T132900 + DTEND:20070709T072900 + SUMMARY:Festival International de Jazz de Montreal + LOCATION:LDB Lobby + TRANSP:TRANSPARENT + END:VEVENT + END:VCALENDAR +" +); + +pub static TEST_EVENT_MULTIDAY_LASTMODIFIED: &str = indoc!( + " + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//ABC Corporation//NONSGML My Product//EN + BEGIN:VEVENT + UID:20070423T123432Z-541111@example.com + DTSTAMP:20070423T123432Z + DTSTART;VALUE=DATE:20070628T132900 + DTEND;VALUE=DATE:20070709T072900 + SUMMARY:Festival International de Jazz de Montreal + LAST-MODIFIED:20070423T123432Z + LOCATION:LDB Lobby + TRANSP:TRANSPARENT + END:VEVENT + END:VCALENDAR +" +); + +pub static TEST_DTSTART_ONLY_DATE: &str = indoc!( + " + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//ABC Corporation//NONSGML My Product//EN + BEGIN:VEVENT + UID:20070423T123432Z-541111@example.com + DTSTAMP:20070423T123432Z + DTSTART;VALUE=DATE:20070628 + SUMMARY:Festival International de Jazz de Montreal + LOCATION:LDB Lobby + TRANSP:TRANSPARENT + END:VEVENT + END:VCALENDAR +" +); + +pub static TEST_DTSTART_ONLY_DATETIME: &str = indoc!( + " + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//ABC Corporation//NONSGML My Product//EN + BEGIN:VEVENT + UID:20070423T123432Z-541111@example.com + DTSTAMP:20070423T123432Z + DTSTART:20070628T132900 + SUMMARY:Festival International de Jazz de Montreal + LOCATION:LDB Lobby + TRANSP:TRANSPARENT + END:VEVENT + END:VCALENDAR +" +); + +pub static TEST_EVENT_EMPTY_SUMMARY: &str = indoc!( + " + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//ABC Corporation//NONSGML My Product//EN + BEGIN:VEVENT + UID:20070423T123432Z-541111@example.com + DTSTAMP:20070423T123432Z + DTSTART;VALUE=DATE:20070628 + DTEND;VALUE=DATE:20070709 + SUMMARY: + LOCATION:LDB Lobby + TRANSP:TRANSPARENT + END:VEVENT + END:VCALENDAR +" +); + +pub static TEST_EVENT_NO_UID: &str = indoc!( + " + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//ABC Corporation//NONSGML My Product//EN + BEGIN:VEVENT + DTSTAMP:20070423T123432Z + DTSTART;VALUE=DATE:20070628 + DTEND;VALUE=DATE:20070709 + SUMMARY:Festival International de Jazz de Montreal + LOCATION:LDB Lobby + TRANSP:TRANSPARENT + END:VEVENT + END:VCALENDAR +" +); + +pub static TEST_EVENT_NO_PRODID: &str = indoc!( + " + BEGIN:VCALENDAR + VERSION:2.0 + BEGIN:VEVENT + UID:20070423T123432Z-541111@example.com + DTSTAMP:20070423T123432Z + DTSTART;VALUE=DATE:20070628 + DTEND;VALUE=DATE:20070709 + SUMMARY:Festival International de Jazz de Montreal + LOCATION:LDB Lobby + TRANSP:TRANSPARENT + END:VEVENT + END:VCALENDAR +" +); + +// from https://tools.ietf.org/html/rfc5545#section-4 +pub static TEST_EVENT_ONE_MEETING: &str = indoc!( + r" + BEGIN:VCALENDAR + METHOD:xyz + VERSION:2.0 + PRODID:-//ABC Corporation//NONSGML My Product//EN + BEGIN:VEVENT + DTSTAMP:19970324T120000Z + SEQUENCE:0 + UID:uid3@example.com + ORGANIZER:mailto:jdoe@example.com + ATTENDEE;RSVP=TRUE:mailto:jsmith@example.com + DTSTART:19970324T123000Z + DTEND:19970324T210000Z + CATEGORIES:MEETING,PROJECT + CLASS:PUBLIC + SUMMARY:Calendaring Interoperability Planning Meeting + DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. + LOCATION:LDB Lobby + ATTACH;FMTTYPE=application/postscript:ftp://example.com/pub/conf/bkgrnd.ps + END:VEVENT + END:VCALENDAR + +" +); + +pub static TEST_EVENT_RECUR: &str = indoc!( + " + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//ABC Corporation//NONSGML My Product//EN + BEGIN:VEVENT + UID:autocryptthursday + DTSTART;VALUE=DATE:20181011 + DURATION:P2D + SUMMARY:Autocrypt Thursdays + RRULE:FREQ=WEEKLY;COUNT=10 + END:VEVENT + END:VCALENDAR + +" +); + +pub static TEST_EVENT_WITH_TIMEZONE_COMPONENT: &str = indoc!( + " + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//PIMUTILS.ORG//NONSGML khal / icalendar //EN + BEGIN:VTIMEZONE + TZID:Europe/Berlin + BEGIN:DAYLIGHT + DTSTART;VALUE=DATE-TIME:20180325T030000 + TZNAME:CEST + TZOFFSETFROM:+0100 + TZOFFSETTO:+0200 + END:DAYLIGHT + BEGIN:STANDARD + DTSTART;VALUE=DATE-TIME:20181028T020000 + TZNAME:CET + TZOFFSETFROM:+0200 + TZOFFSETTO:+0100 + END:STANDARD + END:VTIMEZONE + BEGIN:VEVENT + SUMMARY:Some Event + DTSTART;TZID=Europe/Berlin;VALUE=DATE-TIME:20181026T133000 + DTEND;TZID=Europe/Berlin;VALUE=DATE-TIME:20181026T160000 + DTSTAMP;VALUE=DATE-TIME:20181022T145405Z + UID:O2G1SKNFDGC1OZ1675I1A9OFQOFZXTNONYNO + SEQUENCE:1 + LOCATION:Some Location + END:VEVENT + END:VCALENDAR +" +); + +pub static TEST_MULTIPLE_EVENTS: &str = indoc!( + " + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//ABC Corporation//NONSGML My Product//EN + BEGIN:VEVENT + UID:uid1 + DTSTAMP:20070423T123432Z + DTSTART;VALUE=DATE:20070628 + SUMMARY:First Event + END:VEVENT + BEGIN:VEVENT + UID:uid2 + DTSTAMP:20070423T123432Z + DTSTART;VALUE=DATE:20070628 + SUMMARY:Second Event + END:VEVENT + END:VCALENDAR +" +); + +pub static TEST_NO_DTSTART: &str = indoc!( + " + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//ABC Corporation//NONSGML My Product//EN + BEGIN:VEVENT + UID:uid3 + DTSTAMP:20070423T123432Z + END:VEVENT + END:VCALENDAR +" +); + +pub static TEST_NO_SUMMARY: &str = indoc!( + " + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//ABC Corporation//NONSGML My Product//EN + BEGIN:VEVENT + UID:uid3 + DTSTAMP:20070423T123432Z + DTSTART;VALUE=DATE:20070628 + END:VEVENT + END:VCALENDAR +" +); + +pub static TEST_BARE_EVENT: &str = indoc!( + " + BEGIN:VEVENT + UID:uid4 + DTSTAMP:20070423T123432Z + DTSTART;VALUE=DATE:20070628 + END:VEVENT +" +); + +pub static TEST_EVENT_WITH_X_LIC_ERROR: &str = indoc!( + " + BEGIN:VCALENDAR + PRODID:CommuniGate Pro 6.2.5 + VERSION:2.0 + BEGIN:VEVENT + DTSTAMP:20180821T103922Z + UID:1 + SUMMARY:Summary + DTSTART:20180516T093000Z + DTEND:20180516T110000Z + X-MICROSOFT-CDO-BUSYSTATUS:BUSY + LAST-MODIFIED:20180821T103105Z + CREATED:20180404T130941Z + PRIORITY:5 + STATUS:CONFIRMED + X-LIC-ERROR:No value for LOCATION property. Removing entire property: + END:VEVENT + END:VCALENDAR +" +); + +use chrono::{DateTime, TimeZone, Utc}; +lazy_static! { + pub static ref NOW_TEST: DateTime = Utc.ymd(2013, 01, 01).and_hms(1, 2, 3); +} diff --git a/src/testing/mod.rs b/src/testing/mod.rs new file mode 100644 index 0000000..6a768c5 --- /dev/null +++ b/src/testing/mod.rs @@ -0,0 +1,2 @@ +pub mod utils; +pub mod data; diff --git a/src/testing/utils.rs b/src/testing/utils.rs new file mode 100644 index 0000000..ade3ea1 --- /dev/null +++ b/src/testing/utils.rs @@ -0,0 +1,16 @@ +use assert_fs::fixture::{ChildPath, FixtureError}; +use assert_fs::prelude::*; +use assert_fs::TempDir; +use std::path::{Path, PathBuf}; + +pub fn path_to(artifact: &str) -> PathBuf { + [env!("CARGO_MANIFEST_DIR"), "testdata", artifact] + .iter() + .collect() +} + +pub fn touch_testfile(testdir: &TempDir, relative_path: &Path) -> Result { + let testfile = testdir.child(relative_path); + testfile.touch()?; + Ok(testfile) +} diff --git a/src/testutils.rs b/src/testutils.rs deleted file mode 100644 index ade3ea1..0000000 --- a/src/testutils.rs +++ /dev/null @@ -1,16 +0,0 @@ -use assert_fs::fixture::{ChildPath, FixtureError}; -use assert_fs::prelude::*; -use assert_fs::TempDir; -use std::path::{Path, PathBuf}; - -pub fn path_to(artifact: &str) -> PathBuf { - [env!("CARGO_MANIFEST_DIR"), "testdata", artifact] - .iter() - .collect() -} - -pub fn touch_testfile(testdir: &TempDir, relative_path: &Path) -> Result { - let testfile = testdir.child(relative_path); - testfile.touch()?; - Ok(testfile) -} diff --git a/src/utils/dateutil.rs b/src/utils/dateutil.rs index 0f17971..003b837 100644 --- a/src/utils/dateutil.rs +++ b/src/utils/dateutil.rs @@ -56,8 +56,7 @@ pub fn now() -> DateTime { #[cfg(test)] pub fn now() -> DateTime { - use crate::testdata; - *testdata::NOW_TEST + *crate::testing::data::NOW_TEST } pub fn week_from_str_end(date_str: &str) -> Result, String> { diff --git a/src/vcalendar.rs b/src/vcalendar.rs index 09752d5..845831d 100644 --- a/src/vcalendar.rs +++ b/src/vcalendar.rs @@ -406,7 +406,7 @@ impl Drop for IcalComponentOwner { #[cfg(test)] mod tests { use super::*; - use crate::testdata; + use crate::testing; #[test] fn test_from_str_empty() { @@ -415,39 +415,39 @@ mod tests { #[test] fn test_from_str_event() { - assert!(IcalVCalendar::from_str(testdata::TEST_BARE_EVENT, None).is_err()); + assert!(IcalVCalendar::from_str(testing::data::TEST_BARE_EVENT, None).is_err()); } #[test] fn event_iterator_element_count() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); assert_eq!(cal.events_iter().count(), 1) } #[test] fn event_iterator_element_count_with_other() { let cal = - IcalVCalendar::from_str(testdata::TEST_EVENT_WITH_TIMEZONE_COMPONENT, None).unwrap(); + IcalVCalendar::from_str(testing::data::TEST_EVENT_WITH_TIMEZONE_COMPONENT, None).unwrap(); assert_eq!(cal.events_iter().count(), 1) } #[test] fn load_serialize() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); let back = cal.to_string().replace("\r\n", "\n"); - assert_eq!(back.trim(), testdata::TEST_EVENT_MULTIDAY) + assert_eq!(back.trim(), testing::data::TEST_EVENT_MULTIDAY) } #[test] fn load_serialize_with_error() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_WITH_X_LIC_ERROR, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_WITH_X_LIC_ERROR, None).unwrap(); let back = cal.to_string().replace("\r\n", "\n"); - assert_eq!(back.trim(), testdata::TEST_EVENT_WITH_X_LIC_ERROR) + assert_eq!(back.trim(), testing::data::TEST_EVENT_WITH_X_LIC_ERROR) } #[test] fn with_dtstamp_test() { - let mut cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let mut cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); cal = cal.with_dtstamp_now(); let event = cal.get_principal_event(); @@ -460,13 +460,13 @@ mod tests { fn get_calendar_name_test() { let path = PathBuf::from("calname/event"); let cal = - IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY_ALLDAY, Some(&path)).unwrap(); + IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY_ALLDAY, Some(&path)).unwrap(); assert_eq!("calname".to_string(), cal.get_calendar_name().unwrap()) } #[test] fn test_get_all_properties_cal() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); let props = cal.get_properties_all(); assert_eq!(2, props.len()); @@ -474,7 +474,7 @@ mod tests { #[test] fn parse_checker_test_empty_summary() { - let c_str = CString::new(testdata::TEST_EVENT_EMPTY_SUMMARY).unwrap(); + let c_str = CString::new(testing::data::TEST_EVENT_EMPTY_SUMMARY).unwrap(); unsafe { let parsed_cal = ical::icalparser_parse_string(c_str.as_ptr()); assert!(IcalVCalendar::check_icalcomponent(parsed_cal).is_some()) @@ -483,7 +483,7 @@ mod tests { #[test] fn parse_checker_test_no_uid() { - let c_str = CString::new(testdata::TEST_EVENT_NO_UID).unwrap(); + let c_str = CString::new(testing::data::TEST_EVENT_NO_UID).unwrap(); unsafe { let parsed_cal = ical::icalparser_parse_string(c_str.as_ptr()); assert!(IcalVCalendar::check_icalcomponent(parsed_cal).is_some()) @@ -492,7 +492,7 @@ mod tests { #[test] fn parse_checker_test_no_prodid() { - let c_str = CString::new(testdata::TEST_EVENT_NO_PRODID).unwrap(); + let c_str = CString::new(testing::data::TEST_EVENT_NO_PRODID).unwrap(); unsafe { let parsed_cal = ical::icalparser_parse_string(c_str.as_ptr()); assert!(IcalVCalendar::check_icalcomponent(parsed_cal).is_some()) @@ -502,7 +502,7 @@ mod tests { #[test] fn test_with_last_modified_now() { let cal = - IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY_LASTMODIFIED, None).unwrap(); + IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY_LASTMODIFIED, None).unwrap(); let new_cal = cal.with_last_modified_now(); let event = new_cal.get_principal_event(); @@ -516,7 +516,7 @@ mod tests { #[test] fn test_with_last_modified_now_added() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); let new_cal = cal.with_last_modified_now(); let event = new_cal.get_principal_event(); @@ -530,7 +530,7 @@ mod tests { #[test] fn test_with_location() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); let location = "test"; let new_cal = cal.with_location(location); @@ -541,7 +541,7 @@ mod tests { //#[test] //fn test_with_internal_timestamp() { - //let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + //let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); // //let timestamp = IcalTime::floating_ymd(2018, 1, 1).and_hms(11, 30, 20); //let new_cal = cal.with_internal_timestamp(×tamp); @@ -553,7 +553,7 @@ mod tests { #[test] fn with_uid_test() { let path = PathBuf::from("test/path"); - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, Some(&path)).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, Some(&path)).unwrap(); let uid = "my_new_uid"; let new_cal = cal.with_uid(uid).unwrap(); @@ -570,7 +570,7 @@ mod tests { #[test] fn with_uid_multiple_test() { let path = PathBuf::from("test/path"); - let cal = IcalVCalendar::from_str(testdata::TEST_MULTIPLE_EVENTS, Some(&path)).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_MULTIPLE_EVENTS, Some(&path)).unwrap(); let uid = "my_new_uid"; let new_cal = cal.with_uid(uid); @@ -581,7 +581,7 @@ mod tests { #[test] fn with_keep_uid_test() { let path = PathBuf::from("test/path"); - let cal = IcalVCalendar::from_str(testdata::TEST_MULTIPLE_EVENTS, Some(&path)).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_MULTIPLE_EVENTS, Some(&path)).unwrap(); for uid in &["uid1", "uid2"] { let new_cal = cal.clone().with_keep_uid(uid); @@ -595,7 +595,7 @@ mod tests { #[test] fn clone_test() { let path = PathBuf::from("test/path"); - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, Some(&path)).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, Some(&path)).unwrap(); let cal2 = cal.clone().with_uid("my_new_uid").unwrap(); assert_ne!(cal.get_uid(), cal2.get_uid()); @@ -603,7 +603,7 @@ mod tests { #[test] fn parse_checker_test_negative() { - let c_str = CString::new(testdata::TEST_EVENT_NO_PRODID).unwrap(); + let c_str = CString::new(testing::data::TEST_EVENT_NO_PRODID).unwrap(); unsafe { let parsed_cal = ical::icalparser_parse_string(c_str.as_ptr()); assert!(IcalVCalendar::check_icalcomponent(parsed_cal).is_some()) @@ -612,7 +612,7 @@ mod tests { #[test] fn parse_checker_test() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); assert!(cal.check_for_errors().is_none()); } } diff --git a/src/vevent.rs b/src/vevent.rs index 97d4bcc..d8b345f 100644 --- a/src/vevent.rs +++ b/src/vevent.rs @@ -205,12 +205,12 @@ extern "C" fn recur_callback( #[cfg(test)] mod tests { use super::*; - use crate::testdata; + use crate::testing; use chrono::NaiveDate; #[test] fn test_get_all_properties() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); let event = cal.get_principal_event(); let props = event.get_properties_all(); @@ -219,7 +219,7 @@ mod tests { #[test] fn test_get_property_get_value() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY_ALLDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY_ALLDAY, None).unwrap(); let event = cal.get_principal_event(); let prop = event.get_properties_by_name("DTSTART"); @@ -234,7 +234,7 @@ mod tests { #[test] fn test_get_property_debug() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY_ALLDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY_ALLDAY, None).unwrap(); let event = cal.get_principal_event(); let prop = event .get_property(ical::icalproperty_kind_ICAL_DTSTART_PROPERTY) @@ -245,7 +245,7 @@ mod tests { #[test] fn test_get_summary() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); let event = cal.get_principal_event(); assert_eq!( @@ -256,7 +256,7 @@ mod tests { #[test] fn test_get_summary_none() { - let cal = IcalVCalendar::from_str(testdata::TEST_NO_SUMMARY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_NO_SUMMARY, None).unwrap(); let event = cal.get_principal_event(); assert_eq!(None, event.get_summary()); @@ -264,7 +264,7 @@ mod tests { #[test] fn test_get_dtstart() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); let event = cal.get_principal_event(); assert_eq!( @@ -275,7 +275,7 @@ mod tests { #[test] fn test_get_dtstart_negative() { - let cal = IcalVCalendar::from_str(testdata::TEST_NO_DTSTART, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_NO_DTSTART, None).unwrap(); let event = cal.get_principal_event(); assert!(event.get_dtstart().is_none()); @@ -283,7 +283,7 @@ mod tests { #[test] fn test_get_dtend() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); let event = cal.get_principal_event(); assert_eq!( @@ -294,7 +294,7 @@ mod tests { #[test] fn test_get_dtend_negative() { - let cal = IcalVCalendar::from_str(testdata::TEST_NO_DTSTART, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_NO_DTSTART, None).unwrap(); let event = cal.get_principal_event(); assert!(event.get_dtend().is_none()); @@ -302,7 +302,7 @@ mod tests { #[test] fn test_get_duration_internal_normal() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); let event = cal.get_principal_event(); assert_eq!( @@ -313,7 +313,7 @@ mod tests { #[test] fn test_get_duration_normal() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); let event = cal.get_principal_event(); assert_eq!( @@ -324,7 +324,7 @@ mod tests { #[test] fn test_get_duration_inernal_startdate_only() { - let cal = IcalVCalendar::from_str(testdata::TEST_DTSTART_ONLY_DATE, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_DTSTART_ONLY_DATE, None).unwrap(); let event = cal.get_principal_event(); assert!(event.get_duration_internal().is_none()); @@ -332,7 +332,7 @@ mod tests { #[test] fn test_get_duration_startdate_only() { - let cal = IcalVCalendar::from_str(testdata::TEST_DTSTART_ONLY_DATE, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_DTSTART_ONLY_DATE, None).unwrap(); let event = cal.get_principal_event(); assert_eq!( @@ -343,7 +343,7 @@ mod tests { #[test] fn test_get_duration_internal_startdatetime_only() { - let cal = IcalVCalendar::from_str(testdata::TEST_DTSTART_ONLY_DATETIME, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_DTSTART_ONLY_DATETIME, None).unwrap(); let event = cal.get_principal_event(); assert!(event.get_duration_internal().is_none()); @@ -351,7 +351,7 @@ mod tests { #[test] fn test_get_duration_startdatetime_only() { - let cal = IcalVCalendar::from_str(testdata::TEST_DTSTART_ONLY_DATETIME, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_DTSTART_ONLY_DATETIME, None).unwrap(); let event = cal.get_principal_event(); assert_eq!(Some(IcalDuration::from_seconds(0)), event.get_duration()); @@ -359,7 +359,7 @@ mod tests { #[test] fn test_get_description() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_ONE_MEETING, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_ONE_MEETING, None).unwrap(); let event = cal.get_principal_event(); assert_eq!( @@ -373,7 +373,7 @@ mod tests { #[test] fn test_get_description_none() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_MULTIDAY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_MULTIDAY, None).unwrap(); let event = cal.get_principal_event(); assert_eq!(None, event.get_description()); @@ -381,7 +381,7 @@ mod tests { #[test] fn test_get_location() { - let cal = IcalVCalendar::from_str(testdata::TEST_EVENT_ONE_MEETING, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_EVENT_ONE_MEETING, None).unwrap(); let event = cal.get_principal_event(); assert_eq!(Some("LDB Lobby".to_string()), event.get_location()); @@ -389,7 +389,7 @@ mod tests { #[test] fn test_get_location_none() { - let cal = IcalVCalendar::from_str(testdata::TEST_NO_SUMMARY, None).unwrap(); + let cal = IcalVCalendar::from_str(testing::data::TEST_NO_SUMMARY, None).unwrap(); let event = cal.get_principal_event(); assert_eq!(None, event.get_location()); -- cgit v1.2.3 From 0601ef796b9507f33470c69dcac2e239f212a768 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 20 Dec 2019 12:30:24 +0100 Subject: Remove unused code in testing module Signed-off-by: Matthias Beyer --- src/testing/mod.rs | 1 - src/testing/utils.rs | 16 ---------------- 2 files changed, 17 deletions(-) delete mode 100644 src/testing/utils.rs diff --git a/src/testing/mod.rs b/src/testing/mod.rs index 6a768c5..7a345e4 100644 --- a/src/testing/mod.rs +++ b/src/testing/mod.rs @@ -1,2 +1 @@ -pub mod utils; pub mod data; diff --git a/src/testing/utils.rs b/src/testing/utils.rs deleted file mode 100644 index ade3ea1..0000000 --- a/src/testing/utils.rs +++ /dev/null @@ -1,16 +0,0 @@ -use assert_fs::fixture::{ChildPath, FixtureError}; -use assert_fs::prelude::*; -use assert_fs::TempDir; -use std::path::{Path, PathBuf}; - -pub fn path_to(artifact: &str) -> PathBuf { - [env!("CARGO_MANIFEST_DIR"), "testdata", artifact] - .iter() - .collect() -} - -pub fn touch_testfile(testdir: &TempDir, relative_path: &Path) -> Result { - let testfile = testdir.child(relative_path); - testfile.touch()?; - Ok(testfile) -} -- cgit v1.2.3 From 0eff577442a7876027d7e637486be16baaa217e9 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 20 Dec 2019 12:33:25 +0100 Subject: Rename: IcalVCalendar::with_normalize() -> ::normalized() Signed-off-by: Matthias Beyer --- src/vcalendar.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vcalendar.rs b/src/vcalendar.rs index 845831d..bbd388a 100644 --- a/src/vcalendar.rs +++ b/src/vcalendar.rs @@ -91,7 +91,7 @@ impl IcalVCalendar { } } - pub fn with_normalize(self) -> Self { + pub fn normalized(self) -> Self { unsafe { ical::icalcomponent_normalize(self.get_ptr()); } -- cgit v1.2.3 From 7799f802bee0c82783ee926be5ec85f8dbe75b75 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 20 Dec 2019 12:34:42 +0100 Subject: Implement ToString rather than providing own ::to_string() function Signed-off-by: Matthias Beyer --- src/vcalendar.rs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/vcalendar.rs b/src/vcalendar.rs index bbd388a..f925df3 100644 --- a/src/vcalendar.rs +++ b/src/vcalendar.rs @@ -2,6 +2,7 @@ use std::ffi::{CStr, CString}; use std::io; use std::path::{Path, PathBuf}; use std::rc::Rc; +use std::string::ToString; use super::IcalComponent; use super::IcalTime; @@ -98,13 +99,6 @@ impl IcalVCalendar { self } - pub fn to_string(&self) -> String { - unsafe { - let ical_cstr = CStr::from_ptr(ical::icalcomponent_as_ical_string(self.get_ptr())); - ical_cstr.to_string_lossy().into_owned() - } - } - pub fn get_uid(&self) -> String { unsafe { let uid_cstr = CStr::from_ptr(ical::icalcomponent_get_uid( @@ -358,6 +352,15 @@ impl IcalVCalendar { } } +impl ToString for IcalVCalendar { + fn to_string(&self) -> String { + unsafe { + let ical_cstr = CStr::from_ptr(ical::icalcomponent_as_ical_string(self.get_ptr())); + ical_cstr.to_string_lossy().into_owned() + } + } +} + impl<'a> IcalEventIter<'a> { fn from_vcalendar(cal: &'a IcalVCalendar) -> Self { let vevent_kind = ical::icalcomponent_kind_ICAL_VEVENT_COMPONENT; -- cgit v1.2.3 From 6e3201c2fd298cbfdba8e6de8fce41fd239b9412 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 20 Dec 2019 12:42:06 +0100 Subject: Make function private Signed-off-by: Matthias Beyer --- src/utils/dateutil.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/dateutil.rs b/src/utils/dateutil.rs index 003b837..c515016 100644 --- a/src/utils/dateutil.rs +++ b/src/utils/dateutil.rs @@ -4,7 +4,7 @@ use crate::utils::fileutil; use std::env; use std::path::PathBuf; -pub fn date_from_str(date_str: &str) -> ParseResult> { +fn date_from_str(date_str: &str) -> ParseResult> { if date_str == "today" || date_str == "now" { return Ok(Local::now().date()); } -- cgit v1.2.3 From 2612eefb2a71444d3a45f21de9782f756111bd3e Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 20 Dec 2019 12:42:06 +0100 Subject: Make function private Signed-off-by: Matthias Beyer --- src/utils/dateutil.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/dateutil.rs b/src/utils/dateutil.rs index c515016..bc70c02 100644 --- a/src/utils/dateutil.rs +++ b/src/utils/dateutil.rs @@ -20,7 +20,7 @@ pub fn datetime_from_str(datetime_str: &str) -> ParseResult> { Ok(Local.from_local_datetime(naive_datetime).unwrap()) } -pub fn week_from_str_begin(date_str: &str) -> Result, String> { +fn week_from_str_begin(date_str: &str) -> Result, String> { let now = Local::now(); if date_str == "toweek" || date_str == "thisweek" { return Ok(Local.isoywd(now.year(), now.iso_week().week(), Weekday::Mon)); -- cgit v1.2.3 From 508c4c4993581d5a364a36daf84a5199a1436db0 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 20 Dec 2019 12:42:06 +0100 Subject: Remove dead code Signed-off-by: Matthias Beyer --- src/utils/dateutil.rs | 16 +--------------- src/utils/fileutil.rs | 50 +------------------------------------------------- src/utils/misc.rs | 18 ------------------ 3 files changed, 2 insertions(+), 82 deletions(-) diff --git a/src/utils/dateutil.rs b/src/utils/dateutil.rs index bc70c02..7d3146a 100644 --- a/src/utils/dateutil.rs +++ b/src/utils/dateutil.rs @@ -59,7 +59,7 @@ pub fn now() -> DateTime { *crate::testing::data::NOW_TEST } -pub fn week_from_str_end(date_str: &str) -> Result, String> { +fn week_from_str_end(date_str: &str) -> Result, String> { let now = Local::now(); if date_str == "toweek" || date_str == "thisweek" { return Ok(Local.isoywd(now.year(), now.iso_week().week(), Weekday::Sun)); @@ -75,13 +75,6 @@ pub fn week_from_str_end(date_str: &str) -> Result, String> { Err("Could not parse '{}' as week".to_string()) } -pub fn datetime_from_timestamp(timestamp: &str) -> Option> { - let timestamp_i64 = timestamp.parse::().ok()?; - let naive_datetime = NaiveDateTime::from_timestamp_opt(timestamp_i64, 0)?; - let utc_time: DateTime = DateTime::from_utc(naive_datetime, Utc); - Some(utc_time.with_timezone(&Local)) -} - #[cfg(test)] mod tests { use super::*; @@ -141,11 +134,4 @@ mod tests { week_from_str_end("nonsense").unwrap(); } - #[test] - fn test_datetime_from_timestamp() { - let timestamp = "1547234687"; - let dt_from_ts = datetime_from_timestamp(timestamp).unwrap(); - let dt = Utc.ymd(2019, 01, 11).and_hms(19, 24, 47); - assert_eq!(dt, dt_from_ts); - } } diff --git a/src/utils/fileutil.rs b/src/utils/fileutil.rs index aac3ab6..052b72f 100644 --- a/src/utils/fileutil.rs +++ b/src/utils/fileutil.rs @@ -1,55 +1,7 @@ -use std::fs::OpenOptions; use std::io::prelude::*; -use std::io::{BufRead, BufReader}; -use std::path::{Path, PathBuf}; +use std::path::Path; use std::{fs, io}; -pub fn file_iter(dir: &Path) -> impl Iterator { - use walkdir::WalkDir; - - WalkDir::new(dir) - .follow_links(true) - .into_iter() - .filter_map(|e| e.ok()) - .filter(|e| e.file_type().is_file()) - .map(|entry| entry.into_path()) -} - -pub fn dir_iter(dir: &Path) -> impl Iterator { - use walkdir::WalkDir; - - let dir = dir.to_path_buf(); - WalkDir::new(&dir) - .follow_links(true) - .into_iter() - .filter_map(|e| e.ok()) - .filter(|e| e.file_type().is_dir()) - .filter(move |f| f.path() != dir) - .map(|entry| entry.into_path()) -} - -pub fn write_file(filepath: &Path, contents: &str) -> io::Result<()> { - let mut file = fs::File::create(filepath)?; - file.write_all(contents.as_bytes()) -} - -pub fn append_file(filepath: &Path, contents: &str) -> io::Result<()> { - let mut file = OpenOptions::new() - .append(true) - .create(true) - .open(filepath)?; - file.write_all(contents.as_bytes()) -} - -pub fn read_lines_from_file( - filepath: &Path, -) -> io::Result> { - let f = fs::File::open(filepath)?; - let f = BufReader::new(f); - let lines: Result, io::Error> = f.lines().collect(); - lines.map(|result| result.into_iter()) -} - pub fn read_file_to_string(path: &Path) -> io::Result { let mut file = fs::File::open(&path)?; let mut contents = String::new(); diff --git a/src/utils/misc.rs b/src/utils/misc.rs index f02ddeb..d5b0551 100644 --- a/src/utils/misc.rs +++ b/src/utils/misc.rs @@ -1,4 +1,3 @@ -use chrono::prelude::*; use std::fmt::Display; use std::time; @@ -19,23 +18,6 @@ pub fn format_duration(duration: &time::Duration) -> impl Display { duration.as_millis() } -pub fn get_bucket_for_date(date: Date) -> String { - date.format("%G-W%V").to_string() -} - -#[cfg(not(test))] -pub fn make_new_uid() -> String { - use uuid::Uuid; - - let suffix = "@khaleesi"; - format!("{}{}", Uuid::new_v4().to_hyphenated_ref(), suffix) -} - -#[cfg(test)] -pub fn make_new_uid() -> String { - "11111111-2222-3333-4444-444444444444@khaleesi".to_string() -} - #[cfg(test)] mod tests { use super::*; -- cgit v1.2.3 From d4f30821e72c5f257db52b61d8448a49df405182 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 20 Dec 2019 12:46:52 +0100 Subject: Make utils module private Signed-off-by: Matthias Beyer --- src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index eabeaa5..89c64df 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -38,9 +38,9 @@ pub mod duration; pub mod property; pub mod time; pub mod timezone; -pub mod utils; pub mod vcalendar; pub mod vevent; +mod utils; #[cfg(test)] pub mod testing; -- cgit v1.2.3