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