From 03248e9edac1adad18f39b1a710f57bd0eda4c73 Mon Sep 17 00:00:00 2001 From: Jean SIMARD Date: Fri, 25 Jun 2021 15:33:04 +0200 Subject: [PATCH 01/11] [test] add binary tests for 'gtfs2ntfs' --- gtfs2ntfs/Cargo.toml | 4 + gtfs2ntfs/tests/fixtures/output/calendar.txt | 3 + .../tests/fixtures/output/comment_links.txt | 3 + gtfs2ntfs/tests/fixtures/output/comments.txt | 3 + .../fixtures/output/commercial_modes.txt | 2 + gtfs2ntfs/tests/fixtures/output/companies.txt | 3 + .../tests/fixtures/output/contributors.txt | 2 + gtfs2ntfs/tests/fixtures/output/datasets.txt | 2 + .../tests/fixtures/output/feed_infos.txt | 7 ++ gtfs2ntfs/tests/fixtures/output/lines.txt | 3 + gtfs2ntfs/tests/fixtures/output/networks.txt | 3 + .../tests/fixtures/output/object_codes.txt | 17 ++++ .../tests/fixtures/output/physical_modes.txt | 5 ++ gtfs2ntfs/tests/fixtures/output/routes.txt | 3 + .../tests/fixtures/output/stop_times.txt | 12 +++ gtfs2ntfs/tests/fixtures/output/stops.txt | 11 +++ gtfs2ntfs/tests/fixtures/output/transfers.txt | 82 +++++++++++++++++++ gtfs2ntfs/tests/fixtures/output/trips.txt | 5 ++ gtfs2ntfs/tests/gtfs2ntfs.rs | 37 +++++++++ 19 files changed, 207 insertions(+) create mode 100644 gtfs2ntfs/tests/fixtures/output/calendar.txt create mode 100644 gtfs2ntfs/tests/fixtures/output/comment_links.txt create mode 100644 gtfs2ntfs/tests/fixtures/output/comments.txt create mode 100644 gtfs2ntfs/tests/fixtures/output/commercial_modes.txt create mode 100644 gtfs2ntfs/tests/fixtures/output/companies.txt create mode 100644 gtfs2ntfs/tests/fixtures/output/contributors.txt create mode 100644 gtfs2ntfs/tests/fixtures/output/datasets.txt create mode 100644 gtfs2ntfs/tests/fixtures/output/feed_infos.txt create mode 100644 gtfs2ntfs/tests/fixtures/output/lines.txt create mode 100644 gtfs2ntfs/tests/fixtures/output/networks.txt create mode 100644 gtfs2ntfs/tests/fixtures/output/object_codes.txt create mode 100644 gtfs2ntfs/tests/fixtures/output/physical_modes.txt create mode 100644 gtfs2ntfs/tests/fixtures/output/routes.txt create mode 100644 gtfs2ntfs/tests/fixtures/output/stop_times.txt create mode 100644 gtfs2ntfs/tests/fixtures/output/stops.txt create mode 100644 gtfs2ntfs/tests/fixtures/output/transfers.txt create mode 100644 gtfs2ntfs/tests/fixtures/output/trips.txt create mode 100644 gtfs2ntfs/tests/gtfs2ntfs.rs diff --git a/gtfs2ntfs/Cargo.toml b/gtfs2ntfs/Cargo.toml index 1be7acf65..b6ec729fb 100644 --- a/gtfs2ntfs/Cargo.toml +++ b/gtfs2ntfs/Cargo.toml @@ -24,3 +24,7 @@ slog-term = "2.4" structopt = "0.3" transit_model = { path = "../" } lazy_static = "1" + +[dev-dependencies] +assert_cmd = "1" +tempfile = "3" diff --git a/gtfs2ntfs/tests/fixtures/output/calendar.txt b/gtfs2ntfs/tests/fixtures/output/calendar.txt new file mode 100644 index 000000000..d006cfce8 --- /dev/null +++ b/gtfs2ntfs/tests/fixtures/output/calendar.txt @@ -0,0 +1,3 @@ +service_id,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date +service:1,1,1,1,0,0,0,0,20180101,20180103 +service:2,0,0,0,0,1,1,0,20180105,20180106 diff --git a/gtfs2ntfs/tests/fixtures/output/comment_links.txt b/gtfs2ntfs/tests/fixtures/output/comment_links.txt new file mode 100644 index 000000000..e85aa5090 --- /dev/null +++ b/gtfs2ntfs/tests/fixtures/output/comment_links.txt @@ -0,0 +1,3 @@ +object_id,object_type,comment_id +stoparea:1,stop_area,stop:stoparea:1 +stop:11,stop_point,stop:stop:11 diff --git a/gtfs2ntfs/tests/fixtures/output/comments.txt b/gtfs2ntfs/tests/fixtures/output/comments.txt new file mode 100644 index 000000000..c467a3d7e --- /dev/null +++ b/gtfs2ntfs/tests/fixtures/output/comments.txt @@ -0,0 +1,3 @@ +comment_id,comment_type,comment_label,comment_name,comment_url +stop:stoparea:1,information,,stoparea:1_comment, +stop:stop:11,information,,stop:11_comment, diff --git a/gtfs2ntfs/tests/fixtures/output/commercial_modes.txt b/gtfs2ntfs/tests/fixtures/output/commercial_modes.txt new file mode 100644 index 000000000..8560e5b14 --- /dev/null +++ b/gtfs2ntfs/tests/fixtures/output/commercial_modes.txt @@ -0,0 +1,2 @@ +commercial_mode_id,commercial_mode_name +Metro,Metro diff --git a/gtfs2ntfs/tests/fixtures/output/companies.txt b/gtfs2ntfs/tests/fixtures/output/companies.txt new file mode 100644 index 000000000..a279bfebe --- /dev/null +++ b/gtfs2ntfs/tests/fixtures/output/companies.txt @@ -0,0 +1,3 @@ +company_id,company_name,company_address,company_url,company_mail,company_phone +1,mon agence,,http://kisio.org,, +2,my agency,,http://kisio.org,,0123456789 diff --git a/gtfs2ntfs/tests/fixtures/output/contributors.txt b/gtfs2ntfs/tests/fixtures/output/contributors.txt new file mode 100644 index 000000000..bfa64e0e1 --- /dev/null +++ b/gtfs2ntfs/tests/fixtures/output/contributors.txt @@ -0,0 +1,2 @@ +contributor_id,contributor_name,contributor_license,contributor_website +default_contributor,Default contributor,Unknown license, diff --git a/gtfs2ntfs/tests/fixtures/output/datasets.txt b/gtfs2ntfs/tests/fixtures/output/datasets.txt new file mode 100644 index 000000000..f262db430 --- /dev/null +++ b/gtfs2ntfs/tests/fixtures/output/datasets.txt @@ -0,0 +1,2 @@ +dataset_id,contributor_id,dataset_start_date,dataset_end_date,dataset_type,dataset_extrapolation,dataset_desc,dataset_system +default_dataset,default_contributor,20180101,20180106,,0,, diff --git a/gtfs2ntfs/tests/fixtures/output/feed_infos.txt b/gtfs2ntfs/tests/fixtures/output/feed_infos.txt new file mode 100644 index 000000000..67138039d --- /dev/null +++ b/gtfs2ntfs/tests/fixtures/output/feed_infos.txt @@ -0,0 +1,7 @@ +feed_info_param,feed_info_value +feed_creation_date,20190403 +feed_creation_time,17:19:00 +feed_creation_datetime,2019-04-03T17:19:00+00:00 +feed_end_date,20180106 +feed_start_date,20180101 +ntfs_version,0.11.4 diff --git a/gtfs2ntfs/tests/fixtures/output/lines.txt b/gtfs2ntfs/tests/fixtures/output/lines.txt new file mode 100644 index 000000000..0efd0ef58 --- /dev/null +++ b/gtfs2ntfs/tests/fixtures/output/lines.txt @@ -0,0 +1,3 @@ +line_id,line_code,line_name,forward_line_name,backward_line_name,line_color,line_text_color,line_sort_order,network_id,commercial_mode_id,geometry_id,line_opening_time,line_closing_time +route:2,ma route 1,ma route 1,,,,,,1,Metro,,23:50:00,31:40:00 +route:3,ma route 2,ma route 2,,,,,,2,Metro,,13:23:00,15:20:00 diff --git a/gtfs2ntfs/tests/fixtures/output/networks.txt b/gtfs2ntfs/tests/fixtures/output/networks.txt new file mode 100644 index 000000000..2138f1bb6 --- /dev/null +++ b/gtfs2ntfs/tests/fixtures/output/networks.txt @@ -0,0 +1,3 @@ +network_id,network_name,network_url,network_timezone,network_lang,network_phone,network_address,network_sort_order +1,mon agence,http://kisio.org,Europe/Paris,,,, +2,my agency,http://kisio.org,Europe/Paris,,0123456789,, diff --git a/gtfs2ntfs/tests/fixtures/output/object_codes.txt b/gtfs2ntfs/tests/fixtures/output/object_codes.txt new file mode 100644 index 000000000..175b5a706 --- /dev/null +++ b/gtfs2ntfs/tests/fixtures/output/object_codes.txt @@ -0,0 +1,17 @@ +object_type,object_id,object_system,object_code +stop_area,stoparea:1,source,stoparea:1 +stop_point,stop:11,source,stop:11 +stop_point,stop:22,source,stop:22 +stop_point,stop:31,source,stop:31 +stop_point,stop:32,source,stop:32 +stop_point,stop:33,source,stop:33 +stop_point,stop:51,source,stop:51 +stop_point,stop:52,source,stop:52 +stop_point,stop:53,source,stop:53 +stop_point,stop:61,source,stop:61 +network,1,source,1 +network,2,source,2 +trip,trip:4,source,trip:4 +trip,trip:5,source,trip:5 +trip,trip:3,source,trip:3 +trip,trip:6,source,trip:6 diff --git a/gtfs2ntfs/tests/fixtures/output/physical_modes.txt b/gtfs2ntfs/tests/fixtures/output/physical_modes.txt new file mode 100644 index 000000000..ee4377596 --- /dev/null +++ b/gtfs2ntfs/tests/fixtures/output/physical_modes.txt @@ -0,0 +1,5 @@ +physical_mode_id,physical_mode_name,co2_emission +Metro,Metro,3.0 +Bike,Bike,0.0 +BikeSharingService,BikeSharingService,0.0 +Car,Car,184.0 diff --git a/gtfs2ntfs/tests/fixtures/output/routes.txt b/gtfs2ntfs/tests/fixtures/output/routes.txt new file mode 100644 index 000000000..58a7ed07f --- /dev/null +++ b/gtfs2ntfs/tests/fixtures/output/routes.txt @@ -0,0 +1,3 @@ +route_id,route_name,direction_type,line_id,geometry_id,destination_id +route:2,ma route 1,forward,route:2,,stoparea:1 +route:3,ma route 2,forward,route:3,,stoparea:1 diff --git a/gtfs2ntfs/tests/fixtures/output/stop_times.txt b/gtfs2ntfs/tests/fixtures/output/stop_times.txt new file mode 100644 index 000000000..1855f7982 --- /dev/null +++ b/gtfs2ntfs/tests/fixtures/output/stop_times.txt @@ -0,0 +1,12 @@ +stop_id,trip_id,stop_sequence,arrival_time,departure_time,boarding_duration,alighting_duration,pickup_type,drop_off_type,datetime_estimated,local_zone_id,stop_headsign,stop_time_id,stop_time_precision +stop:11,trip:4,0,07:23:00,07:23:00,0,0,2,1,0,,,,0 +stop:22,trip:4,1,07:32:00,07:32:00,0,0,2,0,0,,,,0 +stop:33,trip:4,2,07:40:00,07:42:00,0,0,1,0,0,,,,0 +stop:51,trip:5,0,13:23:00,13:23:00,0,0,2,1,0,,,,0 +stop:52,trip:5,1,14:10:00,14:10:00,0,0,2,0,0,,,,0 +stop:53,trip:5,2,14:40:00,14:40:00,0,0,1,2,0,,,,0 +stop:31,trip:3,0,23:50:00,23:50:00,0,0,0,1,0,,,,0 +stop:32,trip:3,1,24:03:00,24:05:00,0,0,0,0,0,,,,0 +stop:33,trip:3,2,24:10:00,24:15:00,0,0,1,0,0,,,,0 +stop:61,trip:6,0,14:40:00,14:40:00,0,0,2,1,0,,,,0 +stop:61,trip:6,1,15:20:00,15:20:00,0,0,1,0,0,,,,0 diff --git a/gtfs2ntfs/tests/fixtures/output/stops.txt b/gtfs2ntfs/tests/fixtures/output/stops.txt new file mode 100644 index 000000000..9783258df --- /dev/null +++ b/gtfs2ntfs/tests/fixtures/output/stops.txt @@ -0,0 +1,11 @@ +stop_id,stop_name,stop_code,visible,fare_zone_id,stop_lon,stop_lat,location_type,parent_station,stop_timezone,geometry_id,equipment_id,level_id,platform_code +stop:11,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, +stop:22,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, +stop:31,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, +stop:32,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, +stop:33,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, +stop:51,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, +stop:52,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, +stop:53,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, +stop:61,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, +stoparea:1,plop,,1,,2.372987,48.844746,1,,,,,, diff --git a/gtfs2ntfs/tests/fixtures/output/transfers.txt b/gtfs2ntfs/tests/fixtures/output/transfers.txt new file mode 100644 index 000000000..3fdd056b7 --- /dev/null +++ b/gtfs2ntfs/tests/fixtures/output/transfers.txt @@ -0,0 +1,82 @@ +from_stop_id,to_stop_id,min_transfer_time,real_min_transfer_time,equipment_id +stop:11,stop:11,0,60, +stop:11,stop:22,0,60, +stop:11,stop:31,0,60, +stop:11,stop:32,0,60, +stop:11,stop:33,0,60, +stop:11,stop:51,0,60, +stop:11,stop:52,0,60, +stop:11,stop:53,0,60, +stop:11,stop:61,0,60, +stop:22,stop:11,0,60, +stop:22,stop:22,0,60, +stop:22,stop:31,0,60, +stop:22,stop:32,0,60, +stop:22,stop:33,0,60, +stop:22,stop:51,0,60, +stop:22,stop:52,0,60, +stop:22,stop:53,0,60, +stop:22,stop:61,0,60, +stop:31,stop:11,0,60, +stop:31,stop:22,0,60, +stop:31,stop:31,0,60, +stop:31,stop:32,0,60, +stop:31,stop:33,0,60, +stop:31,stop:51,0,60, +stop:31,stop:52,0,60, +stop:31,stop:53,0,60, +stop:31,stop:61,0,60, +stop:32,stop:11,0,60, +stop:32,stop:22,0,60, +stop:32,stop:31,0,60, +stop:32,stop:32,0,60, +stop:32,stop:33,0,60, +stop:32,stop:51,0,60, +stop:32,stop:52,0,60, +stop:32,stop:53,0,60, +stop:32,stop:61,0,60, +stop:33,stop:11,0,60, +stop:33,stop:22,0,60, +stop:33,stop:31,0,60, +stop:33,stop:32,0,60, +stop:33,stop:33,0,60, +stop:33,stop:51,0,60, +stop:33,stop:52,0,60, +stop:33,stop:53,0,60, +stop:33,stop:61,0,60, +stop:51,stop:11,0,60, +stop:51,stop:22,0,60, +stop:51,stop:31,0,60, +stop:51,stop:32,0,60, +stop:51,stop:33,0,60, +stop:51,stop:51,0,60, +stop:51,stop:52,0,60, +stop:51,stop:53,0,60, +stop:51,stop:61,0,60, +stop:52,stop:11,0,60, +stop:52,stop:22,0,60, +stop:52,stop:31,0,60, +stop:52,stop:32,0,60, +stop:52,stop:33,0,60, +stop:52,stop:51,0,60, +stop:52,stop:52,0,60, +stop:52,stop:53,0,60, +stop:52,stop:61,0,60, +stop:53,stop:11,0,60, +stop:53,stop:22,0,60, +stop:53,stop:31,0,60, +stop:53,stop:32,0,60, +stop:53,stop:33,0,60, +stop:53,stop:51,0,60, +stop:53,stop:52,0,60, +stop:53,stop:53,0,60, +stop:53,stop:61,0,60, +stop:61,stop:11,0,60, +stop:61,stop:22,0,60, +stop:61,stop:31,0,60, +stop:61,stop:32,0,60, +stop:61,stop:33,0,60, +stop:61,stop:51,0,60, +stop:61,stop:52,0,60, +stop:61,stop:53,0,60, +stop:61,stop:61,0,60, diff --git a/gtfs2ntfs/tests/fixtures/output/trips.txt b/gtfs2ntfs/tests/fixtures/output/trips.txt new file mode 100644 index 000000000..2a8a830fb --- /dev/null +++ b/gtfs2ntfs/tests/fixtures/output/trips.txt @@ -0,0 +1,5 @@ +trip_id,route_id,physical_mode_id,dataset_id,service_id,trip_headsign,trip_short_name,block_id,company_id,trip_property_id,geometry_id,journey_pattern_id +trip:4,route:2,Metro,default_dataset,service:1,pouet,,,1,,, +trip:5,route:3,Metro,default_dataset,service:2,pouet,,,2,,, +trip:3,route:2,Metro,default_dataset,service:1,pouet,,,1,,, +trip:6,route:3,Metro,default_dataset,service:2,pouet,,,2,,, diff --git a/gtfs2ntfs/tests/gtfs2ntfs.rs b/gtfs2ntfs/tests/gtfs2ntfs.rs new file mode 100644 index 000000000..ee74db038 --- /dev/null +++ b/gtfs2ntfs/tests/gtfs2ntfs.rs @@ -0,0 +1,37 @@ +use assert_cmd::prelude::*; +use std::process::Command; +use tempfile::TempDir; +use transit_model::test_utils::*; + +#[test] +fn test_gtfs2ntfs() { + let output_dir = TempDir::new().expect("create temp dir failed"); + Command::cargo_bin("gtfs2ntfs") + .expect("Failed to find binary 'gtfs2ntfs'") + .arg("--input") + .arg("../tests/fixtures/gtfs2ntfs/minimal/input") + .arg("--output") + .arg(output_dir.path().to_str().unwrap()) + .arg("--current-datetime") + .arg("2019-04-03T17:19:00Z") + .assert() + .success(); + compare_output_dir_with_expected(&output_dir, None, "tests/fixtures/output"); +} + +#[test] +fn test_gtfs2ntfs_create_output_directory() { + let output_dir = TempDir::new().expect("create temp dir failed"); + let unexisting_dir = output_dir.path().join("unexisting-folder"); + Command::cargo_bin("gtfs2ntfs") + .expect("Failed to find binary 'gtfs2ntfs'") + .arg("--input") + .arg("../tests/fixtures/gtfs2ntfs/minimal/input") + .arg("--output") + .arg(unexisting_dir.to_str().unwrap()) + .arg("--current-datetime") + .arg("2019-04-03T17:19:00Z") + .assert() + .success(); + compare_output_dir_with_expected(&unexisting_dir, None, "tests/fixtures/output"); +} From df668525bf3d05571f830ca415f306a1cbdada9b Mon Sep 17 00:00:00 2001 From: Jean SIMARD Date: Fri, 25 Jun 2021 16:36:35 +0200 Subject: [PATCH 02/11] [feature] output in ZIP format if extension is '.zip' --- gtfs2ntfs/src/main.rs | 9 ++++++++- gtfs2ntfs/tests/gtfs2ntfs.rs | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/gtfs2ntfs/src/main.rs b/gtfs2ntfs/src/main.rs index 686028a50..2826f6148 100644 --- a/gtfs2ntfs/src/main.rs +++ b/gtfs2ntfs/src/main.rs @@ -144,7 +144,14 @@ fn run(opt: Opt) -> Result<()> { None, )?; - transit_model::ntfs::write(&model, opt.output, opt.current_datetime)?; + match opt.output.extension() { + Some(ext) if ext == "zip" => { + transit_model::ntfs::write_to_zip(&model, opt.output, opt.current_datetime)?; + } + _ => { + transit_model::ntfs::write(&model, opt.output, opt.current_datetime)?; + } + }; Ok(()) } diff --git a/gtfs2ntfs/tests/gtfs2ntfs.rs b/gtfs2ntfs/tests/gtfs2ntfs.rs index ee74db038..469901c73 100644 --- a/gtfs2ntfs/tests/gtfs2ntfs.rs +++ b/gtfs2ntfs/tests/gtfs2ntfs.rs @@ -35,3 +35,21 @@ fn test_gtfs2ntfs_create_output_directory() { .success(); compare_output_dir_with_expected(&unexisting_dir, None, "tests/fixtures/output"); } + +#[test] +fn test_gtfs2ntfs_create_zip() { + let output_dir = TempDir::new().expect("create temp dir failed"); + let ntfs_zip = output_dir.path().join("ntfs.zip"); + assert!(!ntfs_zip.exists()); + Command::cargo_bin("gtfs2ntfs") + .expect("Failed to find binary 'gtfs2ntfs'") + .arg("--input") + .arg("../tests/fixtures/gtfs2ntfs/minimal/input") + .arg("--output") + .arg(ntfs_zip.to_str().unwrap()) + .arg("--current-datetime") + .arg("2019-04-03T17:19:00Z") + .assert() + .success(); + assert!(ntfs_zip.is_file()); +} From 3b271705cc283a81957ddc8898b4f890549f4c4d Mon Sep 17 00:00:00 2001 From: Jean SIMARD Date: Mon, 28 Jun 2021 16:35:39 +0200 Subject: [PATCH 03/11] [feature] output in ZIP format if extension is '.zip' for *2netexfr --- gtfs2netexfr/Cargo.toml | 4 ++ gtfs2netexfr/src/main.rs | 21 ++++++--- gtfs2netexfr/tests/gtfs2netexfr.rs | 55 ++++++++++++++++++++++ ntfs2netexfr/Cargo.toml | 4 ++ ntfs2netexfr/src/main.rs | 20 +++++--- ntfs2netexfr/tests/ntfs2netexfr.rs | 55 ++++++++++++++++++++++ src/netex_france/mod.rs | 73 ++++++++++++++++++++++++++++++ 7 files changed, 218 insertions(+), 14 deletions(-) create mode 100644 gtfs2netexfr/tests/gtfs2netexfr.rs create mode 100644 ntfs2netexfr/tests/ntfs2netexfr.rs diff --git a/gtfs2netexfr/Cargo.toml b/gtfs2netexfr/Cargo.toml index 52fce6da1..12b03ccf8 100644 --- a/gtfs2netexfr/Cargo.toml +++ b/gtfs2netexfr/Cargo.toml @@ -24,3 +24,7 @@ slog-term = "2.4" structopt = "0.3" transit_model = { path = "../", features = ["proj"] } lazy_static = "1" + +[dev-dependencies] +assert_cmd = "1" +tempfile = "3" diff --git a/gtfs2netexfr/src/main.rs b/gtfs2netexfr/src/main.rs index c5a1259e5..7708c7a8d 100644 --- a/gtfs2netexfr/src/main.rs +++ b/gtfs2netexfr/src/main.rs @@ -115,13 +115,20 @@ fn run(opt: Opt) -> Result<()> { let model = transit_model::gtfs::Reader::new(configuration).parse(opt.input)?; - let netex_exporter = transit_model::netex_france::Exporter::new( - &model, - opt.participant, - opt.stop_provider, - opt.current_datetime, - ); - netex_exporter.write(opt.output)?; + let mut config = transit_model::netex_france::WriteConfiguration::new(opt.participant) + .current_datetime(opt.current_datetime); + if let Some(stop_provider) = opt.stop_provider { + config = config.stop_provider(stop_provider); + } + match opt.output.extension() { + Some(ext) if ext == "zip" => { + transit_model::netex_france::write_to_zip(&model, opt.output, config)?; + } + _ => { + transit_model::netex_france::write(&model, opt.output, config)?; + } + }; + Ok(()) } diff --git a/gtfs2netexfr/tests/gtfs2netexfr.rs b/gtfs2netexfr/tests/gtfs2netexfr.rs new file mode 100644 index 000000000..a2e6bb5b0 --- /dev/null +++ b/gtfs2netexfr/tests/gtfs2netexfr.rs @@ -0,0 +1,55 @@ +use assert_cmd::prelude::*; +use std::process::Command; +use tempfile::TempDir; +use transit_model::test_utils::*; + +#[test] +fn test_gtfs2netexfr() { + let output_dir = TempDir::new().expect("create temp dir failed"); + Command::cargo_bin("gtfs2netexfr") + .expect("Failed to find binary 'gtfs2netexfr'") + .arg("--input") + .arg("../tests/fixtures/netex_france/input_gtfs") + .arg("--output") + .arg(output_dir.path().to_str().unwrap()) + .arg("--participant") + .arg("Participant") + .arg("--current-datetime") + .arg("2019-04-03T17:19:00Z") + .assert() + .success(); + compare_output_dir_with_expected(&output_dir, None, "../tests/fixtures/netex_france/output/"); + let network_folders = std::fs::read_dir(output_dir) + .unwrap() + .map(|dir_entry| dir_entry.unwrap()) + .map(|dir_entry| dir_entry.path()) + .filter(|path| path.is_dir()); + for network_folder in network_folders { + let folder_name = network_folder.file_name().unwrap(); + let expected_folder = format!( + "../tests/fixtures/netex_france/output/{}", + folder_name.to_str().unwrap() + ); + compare_output_dir_with_expected_content(&network_folder, None, &expected_folder); + } +} + +#[test] +fn test_gtfs2netexfr_create_zip() { + let output_dir = TempDir::new().expect("create temp dir failed"); + let netexfr_zip = output_dir.path().join("netexfr.zip"); + assert!(!netexfr_zip.exists()); + Command::cargo_bin("gtfs2netexfr") + .expect("Failed to find binary 'gtfs2netexfr'") + .arg("--input") + .arg("../tests/fixtures/netex_france/input_gtfs") + .arg("--output") + .arg(netexfr_zip.to_str().unwrap()) + .arg("--participant") + .arg("Participant") + .arg("--current-datetime") + .arg("2019-04-03T17:19:00Z") + .assert() + .success(); + assert!(netexfr_zip.is_file()); +} diff --git a/ntfs2netexfr/Cargo.toml b/ntfs2netexfr/Cargo.toml index 2f5332848..4f1419e68 100644 --- a/ntfs2netexfr/Cargo.toml +++ b/ntfs2netexfr/Cargo.toml @@ -24,3 +24,7 @@ slog-term = "2.4" structopt = "0.3" transit_model = { path = "../", features = ["proj"] } lazy_static = "1" + +[dev-dependencies] +assert_cmd = "1" +tempfile = "3" diff --git a/ntfs2netexfr/src/main.rs b/ntfs2netexfr/src/main.rs index 8c8f0c216..fdf22c6f1 100644 --- a/ntfs2netexfr/src/main.rs +++ b/ntfs2netexfr/src/main.rs @@ -89,13 +89,19 @@ fn run(opt: Opt) -> Result<()> { let model = transit_model::ntfs::read(opt.input)?; - let netex_exporter = transit_model::netex_france::Exporter::new( - &model, - opt.participant, - opt.stop_provider, - opt.current_datetime, - ); - netex_exporter.write(opt.output)?; + let mut config = transit_model::netex_france::WriteConfiguration::new(opt.participant) + .current_datetime(opt.current_datetime); + if let Some(stop_provider) = opt.stop_provider { + config = config.stop_provider(stop_provider); + } + match opt.output.extension() { + Some(ext) if ext == "zip" => { + transit_model::netex_france::write_to_zip(&model, opt.output, config)?; + } + _ => { + transit_model::netex_france::write(&model, opt.output, config)?; + } + }; Ok(()) } diff --git a/ntfs2netexfr/tests/ntfs2netexfr.rs b/ntfs2netexfr/tests/ntfs2netexfr.rs new file mode 100644 index 000000000..a40de916d --- /dev/null +++ b/ntfs2netexfr/tests/ntfs2netexfr.rs @@ -0,0 +1,55 @@ +use assert_cmd::prelude::*; +use std::process::Command; +use tempfile::TempDir; +use transit_model::test_utils::*; + +#[test] +fn test_ntfs2netexfr() { + let output_dir = TempDir::new().expect("create temp dir failed"); + Command::cargo_bin("ntfs2netexfr") + .expect("Failed to find binary 'ntfs2netexfr'") + .arg("--input") + .arg("../tests/fixtures/netex_france/input_ntfs") + .arg("--output") + .arg(output_dir.path().to_str().unwrap()) + .arg("--participant") + .arg("Participant") + .arg("--current-datetime") + .arg("2019-04-03T17:19:00Z") + .assert() + .success(); + compare_output_dir_with_expected(&output_dir, None, "../tests/fixtures/netex_france/output/"); + let network_folders = std::fs::read_dir(output_dir) + .unwrap() + .map(|dir_entry| dir_entry.unwrap()) + .map(|dir_entry| dir_entry.path()) + .filter(|path| path.is_dir()); + for network_folder in network_folders { + let folder_name = network_folder.file_name().unwrap(); + let expected_folder = format!( + "../tests/fixtures/netex_france/output/{}", + folder_name.to_str().unwrap() + ); + compare_output_dir_with_expected_content(&network_folder, None, &expected_folder); + } +} + +#[test] +fn test_ntfs2netexfr_create_zip() { + let output_dir = TempDir::new().expect("create temp dir failed"); + let netexfr_zip = output_dir.path().join("netexfr.zip"); + assert!(!netexfr_zip.exists()); + Command::cargo_bin("ntfs2netexfr") + .expect("Failed to find binary 'ntfs2netexfr'") + .arg("--input") + .arg("../tests/fixtures/netex_france/input_ntfs") + .arg("--output") + .arg(netexfr_zip.to_str().unwrap()) + .arg("--participant") + .arg("Participant") + .arg("--current-datetime") + .arg("2019-04-03T17:19:00Z") + .assert() + .success(); + assert!(netexfr_zip.is_file()); +} diff --git a/src/netex_france/mod.rs b/src/netex_france/mod.rs index 85ca6561a..592c6fd9b 100644 --- a/src/netex_france/mod.rs +++ b/src/netex_france/mod.rs @@ -35,3 +35,76 @@ mod stops; use stops::StopExporter; mod transfers; use transfers::TransferExporter; + +use crate::{model::Model, Result}; +use chrono::{DateTime, FixedOffset, TimeZone}; + +/// Configuration options for exporting a NeTEx France. +/// 3 options can be configured: +/// - participant (required): see [specifications](https://github.com/CanalTP/ntfs-specification/blob/master/ntfs_to_netex_france_specs.md) for more details +/// - stop_provider (optional): see [specifications](https://github.com/CanalTP/ntfs-specification/blob/master/ntfs_to_netex_france_specs.md) for more details. Default to no stop provider. +/// - current_datetime (optional): date of the export. Default to the current date of execution in UTC. +pub struct WriteConfiguration { + participant: String, + stop_provider: Option, + current_datetime: DateTime, +} + +impl WriteConfiguration { + /// Create a new `WriteConfiguration`. + pub fn new(participant: String) -> Self { + WriteConfiguration { + participant, + stop_provider: None, + current_datetime: chrono::FixedOffset::east(0) + .from_utc_datetime(&chrono::Utc::now().naive_utc()), + } + } + /// Setup the Stop Provider (see [specifications](https://github.com/CanalTP/ntfs-specification/blob/master/ntfs_to_netex_france_specs.md) for more details) + pub fn stop_provider(self, stop_provider: String) -> Self { + WriteConfiguration { + stop_provider: Some(stop_provider), + ..self + } + } + /// Setup the date and time of the export. + pub fn current_datetime(self, current_datetime: DateTime) -> Self { + WriteConfiguration { + current_datetime, + ..self + } + } +} + +/// Exports a `Model` to the +/// [NeTEx France](https://github.com/CanalTP/ntfs-specification/blob/master/ntfs_to_netex_france_specs.md) +/// files in the given directory. +pub fn write>( + model: &Model, + path: P, + config: WriteConfiguration, +) -> Result<()> { + let exporter = Exporter::new( + model, + config.participant, + config.stop_provider, + config.current_datetime, + ); + exporter.write(path)?; + Ok(()) +} + +/// Exports a `Model` to a +/// [NeTEx France](https://github.com/CanalTP/ntfs-specification/blob/master/ntfs_to_netex_france_specs.md) +/// ZIP archive at the given full path. +pub fn write_to_zip>( + model: &Model, + path: P, + config: WriteConfiguration, +) -> Result<()> { + let output_dir = tempfile::tempdir()?; + write(model, output_dir.path(), config)?; + crate::utils::zip_to(output_dir.path(), path)?; + output_dir.close()?; + Ok(()) +} From a211647b8c92f7e9fc243422e8c73eed939ee945 Mon Sep 17 00:00:00 2001 From: Jean SIMARD Date: Mon, 28 Jun 2021 16:54:08 +0200 Subject: [PATCH 04/11] [feature] output in ZIP format if extension is '.zip' for ntfs2ntfs --- ntfs2ntfs/Cargo.toml | 4 +++ ntfs2ntfs/src/main.rs | 9 +++++- ntfs2ntfs/tests/ntfs2ntfs.rs | 54 ++++++++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 ntfs2ntfs/tests/ntfs2ntfs.rs diff --git a/ntfs2ntfs/Cargo.toml b/ntfs2ntfs/Cargo.toml index a8d21d3fb..95f3cf901 100644 --- a/ntfs2ntfs/Cargo.toml +++ b/ntfs2ntfs/Cargo.toml @@ -24,3 +24,7 @@ slog-term = "2.4" structopt = "0.3" transit_model = { path = "../" } lazy_static = "1" + +[dev-dependencies] +assert_cmd = "1" +tempfile = "3" diff --git a/ntfs2ntfs/src/main.rs b/ntfs2ntfs/src/main.rs index 9b9059f66..23acb7aa2 100644 --- a/ntfs2ntfs/src/main.rs +++ b/ntfs2ntfs/src/main.rs @@ -96,7 +96,14 @@ fn run(opt: Opt) -> Result<()> { )?; if let Some(output) = opt.output { - transit_model::ntfs::write(&model, output, opt.current_datetime)?; + match output.extension() { + Some(ext) if ext == "zip" => { + transit_model::ntfs::write_to_zip(&model, output, opt.current_datetime)?; + } + _ => { + transit_model::ntfs::write(&model, output, opt.current_datetime)?; + } + }; } Ok(()) } diff --git a/ntfs2ntfs/tests/ntfs2ntfs.rs b/ntfs2ntfs/tests/ntfs2ntfs.rs new file mode 100644 index 000000000..1c58bad0a --- /dev/null +++ b/ntfs2ntfs/tests/ntfs2ntfs.rs @@ -0,0 +1,54 @@ +use assert_cmd::prelude::*; +use std::process::Command; +use tempfile::TempDir; + +#[test] +fn test_ntfs2ntfs() { + let output_dir = TempDir::new().expect("create temp dir failed"); + Command::cargo_bin("ntfs2ntfs") + .expect("Failed to find binary 'ntfs2ntfs'") + .arg("--input") + .arg("../tests/fixtures/minimal_ntfs/") + .arg("--output") + .arg(output_dir.path().to_str().unwrap()) + .arg("--current-datetime") + .arg("2019-04-03T17:19:00Z") + .assert() + .success(); + assert!(output_dir.path().join("feed_infos.txt").exists()) +} + +#[test] +fn test_ntfs2ntfs_create_output_directory() { + let output_dir = TempDir::new().expect("create temp dir failed"); + let unexisting_dir = output_dir.path().join("unexisting-folder"); + Command::cargo_bin("ntfs2ntfs") + .expect("Failed to find binary 'ntfs2ntfs'") + .arg("--input") + .arg("../tests/fixtures/minimal_ntfs/") + .arg("--output") + .arg(unexisting_dir.to_str().unwrap()) + .arg("--current-datetime") + .arg("2019-04-03T17:19:00Z") + .assert() + .success(); + assert!(unexisting_dir.join("feed_infos.txt").exists()) +} + +#[test] +fn test_ntfs2ntfs_create_zip() { + let output_dir = TempDir::new().expect("create temp dir failed"); + let ntfs_zip = output_dir.path().join("ntfs.zip"); + assert!(!ntfs_zip.exists()); + Command::cargo_bin("ntfs2ntfs") + .expect("Failed to find binary 'ntfs2ntfs'") + .arg("--input") + .arg("../tests/fixtures/minimal_ntfs/") + .arg("--output") + .arg(ntfs_zip.to_str().unwrap()) + .arg("--current-datetime") + .arg("2019-04-03T17:19:00Z") + .assert() + .success(); + assert!(ntfs_zip.is_file()); +} From f2190cd12087c8d4ddaa8afaf50159197c46e5ad Mon Sep 17 00:00:00 2001 From: Jean SIMARD Date: Mon, 28 Jun 2021 18:30:42 +0200 Subject: [PATCH 05/11] [feature] output in ZIP format if extension is '.zip' for ntfs2gtfs --- ntfs2gtfs/Cargo.toml | 4 +++ ntfs2gtfs/src/main.rs | 9 ++++++- ntfs2gtfs/tests/ntfs2gtfs.rs | 48 ++++++++++++++++++++++++++++++++++++ src/gtfs/mod.rs | 13 ++++++++++ 4 files changed, 73 insertions(+), 1 deletion(-) diff --git a/ntfs2gtfs/Cargo.toml b/ntfs2gtfs/Cargo.toml index 7a309de14..eedfed158 100644 --- a/ntfs2gtfs/Cargo.toml +++ b/ntfs2gtfs/Cargo.toml @@ -24,3 +24,7 @@ slog-term = "2.4" structopt = "0.3" transit_model = { path = "../" } lazy_static = "1" + +[dev-dependencies] +assert_cmd = "1" +tempfile = "3" diff --git a/ntfs2gtfs/src/main.rs b/ntfs2gtfs/src/main.rs index e86ebc03f..8f75b92be 100644 --- a/ntfs2gtfs/src/main.rs +++ b/ntfs2gtfs/src/main.rs @@ -74,7 +74,14 @@ fn run(opt: Opt) -> Result<()> { model = add_mode_to_line_code(model)?; } - transit_model::gtfs::write(model, opt.output)?; + match opt.output.extension() { + Some(ext) if ext == "zip" => { + transit_model::gtfs::write_to_zip(model, opt.output)?; + } + _ => { + transit_model::gtfs::write(model, opt.output)?; + } + }; Ok(()) } diff --git a/ntfs2gtfs/tests/ntfs2gtfs.rs b/ntfs2gtfs/tests/ntfs2gtfs.rs index 482ab319b..ca3504913 100644 --- a/ntfs2gtfs/tests/ntfs2gtfs.rs +++ b/ntfs2gtfs/tests/ntfs2gtfs.rs @@ -12,7 +12,10 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see +use assert_cmd::prelude::*; use ntfs2gtfs::add_mode_to_line_code; +use std::process::Command; +use tempfile::TempDir; use transit_model::test_utils::*; #[test] @@ -53,3 +56,48 @@ fn test_platforms_preserving() { ); }); } + +#[test] +fn test_ntfs2gtfs() { + let output_dir = TempDir::new().expect("create temp dir failed"); + Command::cargo_bin("ntfs2gtfs") + .expect("Failed to find binary 'ntfs2gtfs'") + .arg("--input") + .arg("tests/fixtures/input/") + .arg("--output") + .arg(output_dir.path().to_str().unwrap()) + .assert() + .success(); + assert!(output_dir.path().join("agency.txt").exists()) +} + +#[test] +fn test_ntfs2gtfs_create_output_directory() { + let output_dir = TempDir::new().expect("create temp dir failed"); + let unexisting_dir = output_dir.path().join("unexisting-folder"); + Command::cargo_bin("ntfs2gtfs") + .expect("Failed to find binary 'ntfs2gtfs'") + .arg("--input") + .arg("tests/fixtures/input/") + .arg("--output") + .arg(unexisting_dir.to_str().unwrap()) + .assert() + .success(); + assert!(unexisting_dir.join("agency.txt").exists()) +} + +#[test] +fn test_ntfs2gtfs_create_zip() { + let output_dir = TempDir::new().expect("create temp dir failed"); + let ntfs_zip = output_dir.path().join("ntfs.zip"); + assert!(!ntfs_zip.exists()); + Command::cargo_bin("ntfs2gtfs") + .expect("Failed to find binary 'ntfs2gtfs'") + .arg("--input") + .arg("tests/fixtures/input/") + .arg("--output") + .arg(ntfs_zip.to_str().unwrap()) + .assert() + .success(); + assert!(ntfs_zip.is_file()); +} diff --git a/src/gtfs/mod.rs b/src/gtfs/mod.rs index 50e7e2de8..166ba5654 100644 --- a/src/gtfs/mod.rs +++ b/src/gtfs/mod.rs @@ -562,3 +562,16 @@ pub fn write>(model: Model, path: P) -> Result<()> { Ok(()) } + +/// Exports a `Model` to [GTFS](https://gtfs.org/reference/static) files +/// in the given ZIP archive. +/// see [NTFS to GTFS conversion](https://github.com/CanalTP/transit_model/blob/master/src/documentation/ntfs2gtfs.md) +pub fn write_to_zip>(model: Model, path: P) -> Result<()> { + let path = path.as_ref(); + info!("Writing GTFS to ZIP File {:?}", path); + let input_tmp_dir = tempfile::tempdir()?; + write(model, input_tmp_dir.path())?; + zip_to(input_tmp_dir.path(), path)?; + input_tmp_dir.close()?; + Ok(()) +} From 676fa703f046dd48e8d1bdf1eef4ed389cd26483 Mon Sep 17 00:00:00 2001 From: Jean SIMARD Date: Tue, 29 Jun 2021 14:42:43 +0200 Subject: [PATCH 06/11] [test] test for file presence instead of content in gtfs2ntfs --- gtfs2ntfs/tests/fixtures/output/calendar.txt | 3 - .../tests/fixtures/output/comment_links.txt | 3 - gtfs2ntfs/tests/fixtures/output/comments.txt | 3 - .../fixtures/output/commercial_modes.txt | 2 - gtfs2ntfs/tests/fixtures/output/companies.txt | 3 - .../tests/fixtures/output/contributors.txt | 2 - gtfs2ntfs/tests/fixtures/output/datasets.txt | 2 - .../tests/fixtures/output/feed_infos.txt | 7 -- gtfs2ntfs/tests/fixtures/output/lines.txt | 3 - gtfs2ntfs/tests/fixtures/output/networks.txt | 3 - .../tests/fixtures/output/object_codes.txt | 17 ---- .../tests/fixtures/output/physical_modes.txt | 5 -- gtfs2ntfs/tests/fixtures/output/routes.txt | 3 - .../tests/fixtures/output/stop_times.txt | 12 --- gtfs2ntfs/tests/fixtures/output/stops.txt | 11 --- gtfs2ntfs/tests/fixtures/output/transfers.txt | 82 ------------------- gtfs2ntfs/tests/fixtures/output/trips.txt | 5 -- gtfs2ntfs/tests/gtfs2ntfs.rs | 5 +- 18 files changed, 2 insertions(+), 169 deletions(-) delete mode 100644 gtfs2ntfs/tests/fixtures/output/calendar.txt delete mode 100644 gtfs2ntfs/tests/fixtures/output/comment_links.txt delete mode 100644 gtfs2ntfs/tests/fixtures/output/comments.txt delete mode 100644 gtfs2ntfs/tests/fixtures/output/commercial_modes.txt delete mode 100644 gtfs2ntfs/tests/fixtures/output/companies.txt delete mode 100644 gtfs2ntfs/tests/fixtures/output/contributors.txt delete mode 100644 gtfs2ntfs/tests/fixtures/output/datasets.txt delete mode 100644 gtfs2ntfs/tests/fixtures/output/feed_infos.txt delete mode 100644 gtfs2ntfs/tests/fixtures/output/lines.txt delete mode 100644 gtfs2ntfs/tests/fixtures/output/networks.txt delete mode 100644 gtfs2ntfs/tests/fixtures/output/object_codes.txt delete mode 100644 gtfs2ntfs/tests/fixtures/output/physical_modes.txt delete mode 100644 gtfs2ntfs/tests/fixtures/output/routes.txt delete mode 100644 gtfs2ntfs/tests/fixtures/output/stop_times.txt delete mode 100644 gtfs2ntfs/tests/fixtures/output/stops.txt delete mode 100644 gtfs2ntfs/tests/fixtures/output/transfers.txt delete mode 100644 gtfs2ntfs/tests/fixtures/output/trips.txt diff --git a/gtfs2ntfs/tests/fixtures/output/calendar.txt b/gtfs2ntfs/tests/fixtures/output/calendar.txt deleted file mode 100644 index d006cfce8..000000000 --- a/gtfs2ntfs/tests/fixtures/output/calendar.txt +++ /dev/null @@ -1,3 +0,0 @@ -service_id,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date -service:1,1,1,1,0,0,0,0,20180101,20180103 -service:2,0,0,0,0,1,1,0,20180105,20180106 diff --git a/gtfs2ntfs/tests/fixtures/output/comment_links.txt b/gtfs2ntfs/tests/fixtures/output/comment_links.txt deleted file mode 100644 index e85aa5090..000000000 --- a/gtfs2ntfs/tests/fixtures/output/comment_links.txt +++ /dev/null @@ -1,3 +0,0 @@ -object_id,object_type,comment_id -stoparea:1,stop_area,stop:stoparea:1 -stop:11,stop_point,stop:stop:11 diff --git a/gtfs2ntfs/tests/fixtures/output/comments.txt b/gtfs2ntfs/tests/fixtures/output/comments.txt deleted file mode 100644 index c467a3d7e..000000000 --- a/gtfs2ntfs/tests/fixtures/output/comments.txt +++ /dev/null @@ -1,3 +0,0 @@ -comment_id,comment_type,comment_label,comment_name,comment_url -stop:stoparea:1,information,,stoparea:1_comment, -stop:stop:11,information,,stop:11_comment, diff --git a/gtfs2ntfs/tests/fixtures/output/commercial_modes.txt b/gtfs2ntfs/tests/fixtures/output/commercial_modes.txt deleted file mode 100644 index 8560e5b14..000000000 --- a/gtfs2ntfs/tests/fixtures/output/commercial_modes.txt +++ /dev/null @@ -1,2 +0,0 @@ -commercial_mode_id,commercial_mode_name -Metro,Metro diff --git a/gtfs2ntfs/tests/fixtures/output/companies.txt b/gtfs2ntfs/tests/fixtures/output/companies.txt deleted file mode 100644 index a279bfebe..000000000 --- a/gtfs2ntfs/tests/fixtures/output/companies.txt +++ /dev/null @@ -1,3 +0,0 @@ -company_id,company_name,company_address,company_url,company_mail,company_phone -1,mon agence,,http://kisio.org,, -2,my agency,,http://kisio.org,,0123456789 diff --git a/gtfs2ntfs/tests/fixtures/output/contributors.txt b/gtfs2ntfs/tests/fixtures/output/contributors.txt deleted file mode 100644 index bfa64e0e1..000000000 --- a/gtfs2ntfs/tests/fixtures/output/contributors.txt +++ /dev/null @@ -1,2 +0,0 @@ -contributor_id,contributor_name,contributor_license,contributor_website -default_contributor,Default contributor,Unknown license, diff --git a/gtfs2ntfs/tests/fixtures/output/datasets.txt b/gtfs2ntfs/tests/fixtures/output/datasets.txt deleted file mode 100644 index f262db430..000000000 --- a/gtfs2ntfs/tests/fixtures/output/datasets.txt +++ /dev/null @@ -1,2 +0,0 @@ -dataset_id,contributor_id,dataset_start_date,dataset_end_date,dataset_type,dataset_extrapolation,dataset_desc,dataset_system -default_dataset,default_contributor,20180101,20180106,,0,, diff --git a/gtfs2ntfs/tests/fixtures/output/feed_infos.txt b/gtfs2ntfs/tests/fixtures/output/feed_infos.txt deleted file mode 100644 index 67138039d..000000000 --- a/gtfs2ntfs/tests/fixtures/output/feed_infos.txt +++ /dev/null @@ -1,7 +0,0 @@ -feed_info_param,feed_info_value -feed_creation_date,20190403 -feed_creation_time,17:19:00 -feed_creation_datetime,2019-04-03T17:19:00+00:00 -feed_end_date,20180106 -feed_start_date,20180101 -ntfs_version,0.11.4 diff --git a/gtfs2ntfs/tests/fixtures/output/lines.txt b/gtfs2ntfs/tests/fixtures/output/lines.txt deleted file mode 100644 index 0efd0ef58..000000000 --- a/gtfs2ntfs/tests/fixtures/output/lines.txt +++ /dev/null @@ -1,3 +0,0 @@ -line_id,line_code,line_name,forward_line_name,backward_line_name,line_color,line_text_color,line_sort_order,network_id,commercial_mode_id,geometry_id,line_opening_time,line_closing_time -route:2,ma route 1,ma route 1,,,,,,1,Metro,,23:50:00,31:40:00 -route:3,ma route 2,ma route 2,,,,,,2,Metro,,13:23:00,15:20:00 diff --git a/gtfs2ntfs/tests/fixtures/output/networks.txt b/gtfs2ntfs/tests/fixtures/output/networks.txt deleted file mode 100644 index 2138f1bb6..000000000 --- a/gtfs2ntfs/tests/fixtures/output/networks.txt +++ /dev/null @@ -1,3 +0,0 @@ -network_id,network_name,network_url,network_timezone,network_lang,network_phone,network_address,network_sort_order -1,mon agence,http://kisio.org,Europe/Paris,,,, -2,my agency,http://kisio.org,Europe/Paris,,0123456789,, diff --git a/gtfs2ntfs/tests/fixtures/output/object_codes.txt b/gtfs2ntfs/tests/fixtures/output/object_codes.txt deleted file mode 100644 index 175b5a706..000000000 --- a/gtfs2ntfs/tests/fixtures/output/object_codes.txt +++ /dev/null @@ -1,17 +0,0 @@ -object_type,object_id,object_system,object_code -stop_area,stoparea:1,source,stoparea:1 -stop_point,stop:11,source,stop:11 -stop_point,stop:22,source,stop:22 -stop_point,stop:31,source,stop:31 -stop_point,stop:32,source,stop:32 -stop_point,stop:33,source,stop:33 -stop_point,stop:51,source,stop:51 -stop_point,stop:52,source,stop:52 -stop_point,stop:53,source,stop:53 -stop_point,stop:61,source,stop:61 -network,1,source,1 -network,2,source,2 -trip,trip:4,source,trip:4 -trip,trip:5,source,trip:5 -trip,trip:3,source,trip:3 -trip,trip:6,source,trip:6 diff --git a/gtfs2ntfs/tests/fixtures/output/physical_modes.txt b/gtfs2ntfs/tests/fixtures/output/physical_modes.txt deleted file mode 100644 index ee4377596..000000000 --- a/gtfs2ntfs/tests/fixtures/output/physical_modes.txt +++ /dev/null @@ -1,5 +0,0 @@ -physical_mode_id,physical_mode_name,co2_emission -Metro,Metro,3.0 -Bike,Bike,0.0 -BikeSharingService,BikeSharingService,0.0 -Car,Car,184.0 diff --git a/gtfs2ntfs/tests/fixtures/output/routes.txt b/gtfs2ntfs/tests/fixtures/output/routes.txt deleted file mode 100644 index 58a7ed07f..000000000 --- a/gtfs2ntfs/tests/fixtures/output/routes.txt +++ /dev/null @@ -1,3 +0,0 @@ -route_id,route_name,direction_type,line_id,geometry_id,destination_id -route:2,ma route 1,forward,route:2,,stoparea:1 -route:3,ma route 2,forward,route:3,,stoparea:1 diff --git a/gtfs2ntfs/tests/fixtures/output/stop_times.txt b/gtfs2ntfs/tests/fixtures/output/stop_times.txt deleted file mode 100644 index 1855f7982..000000000 --- a/gtfs2ntfs/tests/fixtures/output/stop_times.txt +++ /dev/null @@ -1,12 +0,0 @@ -stop_id,trip_id,stop_sequence,arrival_time,departure_time,boarding_duration,alighting_duration,pickup_type,drop_off_type,datetime_estimated,local_zone_id,stop_headsign,stop_time_id,stop_time_precision -stop:11,trip:4,0,07:23:00,07:23:00,0,0,2,1,0,,,,0 -stop:22,trip:4,1,07:32:00,07:32:00,0,0,2,0,0,,,,0 -stop:33,trip:4,2,07:40:00,07:42:00,0,0,1,0,0,,,,0 -stop:51,trip:5,0,13:23:00,13:23:00,0,0,2,1,0,,,,0 -stop:52,trip:5,1,14:10:00,14:10:00,0,0,2,0,0,,,,0 -stop:53,trip:5,2,14:40:00,14:40:00,0,0,1,2,0,,,,0 -stop:31,trip:3,0,23:50:00,23:50:00,0,0,0,1,0,,,,0 -stop:32,trip:3,1,24:03:00,24:05:00,0,0,0,0,0,,,,0 -stop:33,trip:3,2,24:10:00,24:15:00,0,0,1,0,0,,,,0 -stop:61,trip:6,0,14:40:00,14:40:00,0,0,2,1,0,,,,0 -stop:61,trip:6,1,15:20:00,15:20:00,0,0,1,0,0,,,,0 diff --git a/gtfs2ntfs/tests/fixtures/output/stops.txt b/gtfs2ntfs/tests/fixtures/output/stops.txt deleted file mode 100644 index 9783258df..000000000 --- a/gtfs2ntfs/tests/fixtures/output/stops.txt +++ /dev/null @@ -1,11 +0,0 @@ -stop_id,stop_name,stop_code,visible,fare_zone_id,stop_lon,stop_lat,location_type,parent_station,stop_timezone,geometry_id,equipment_id,level_id,platform_code -stop:11,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, -stop:22,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, -stop:31,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, -stop:32,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, -stop:33,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, -stop:51,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, -stop:52,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, -stop:53,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, -stop:61,pouet,,1,,2.372987,48.844746,0,stoparea:1,,,,, -stoparea:1,plop,,1,,2.372987,48.844746,1,,,,,, diff --git a/gtfs2ntfs/tests/fixtures/output/transfers.txt b/gtfs2ntfs/tests/fixtures/output/transfers.txt deleted file mode 100644 index 3fdd056b7..000000000 --- a/gtfs2ntfs/tests/fixtures/output/transfers.txt +++ /dev/null @@ -1,82 +0,0 @@ -from_stop_id,to_stop_id,min_transfer_time,real_min_transfer_time,equipment_id -stop:11,stop:11,0,60, -stop:11,stop:22,0,60, -stop:11,stop:31,0,60, -stop:11,stop:32,0,60, -stop:11,stop:33,0,60, -stop:11,stop:51,0,60, -stop:11,stop:52,0,60, -stop:11,stop:53,0,60, -stop:11,stop:61,0,60, -stop:22,stop:11,0,60, -stop:22,stop:22,0,60, -stop:22,stop:31,0,60, -stop:22,stop:32,0,60, -stop:22,stop:33,0,60, -stop:22,stop:51,0,60, -stop:22,stop:52,0,60, -stop:22,stop:53,0,60, -stop:22,stop:61,0,60, -stop:31,stop:11,0,60, -stop:31,stop:22,0,60, -stop:31,stop:31,0,60, -stop:31,stop:32,0,60, -stop:31,stop:33,0,60, -stop:31,stop:51,0,60, -stop:31,stop:52,0,60, -stop:31,stop:53,0,60, -stop:31,stop:61,0,60, -stop:32,stop:11,0,60, -stop:32,stop:22,0,60, -stop:32,stop:31,0,60, -stop:32,stop:32,0,60, -stop:32,stop:33,0,60, -stop:32,stop:51,0,60, -stop:32,stop:52,0,60, -stop:32,stop:53,0,60, -stop:32,stop:61,0,60, -stop:33,stop:11,0,60, -stop:33,stop:22,0,60, -stop:33,stop:31,0,60, -stop:33,stop:32,0,60, -stop:33,stop:33,0,60, -stop:33,stop:51,0,60, -stop:33,stop:52,0,60, -stop:33,stop:53,0,60, -stop:33,stop:61,0,60, -stop:51,stop:11,0,60, -stop:51,stop:22,0,60, -stop:51,stop:31,0,60, -stop:51,stop:32,0,60, -stop:51,stop:33,0,60, -stop:51,stop:51,0,60, -stop:51,stop:52,0,60, -stop:51,stop:53,0,60, -stop:51,stop:61,0,60, -stop:52,stop:11,0,60, -stop:52,stop:22,0,60, -stop:52,stop:31,0,60, -stop:52,stop:32,0,60, -stop:52,stop:33,0,60, -stop:52,stop:51,0,60, -stop:52,stop:52,0,60, -stop:52,stop:53,0,60, -stop:52,stop:61,0,60, -stop:53,stop:11,0,60, -stop:53,stop:22,0,60, -stop:53,stop:31,0,60, -stop:53,stop:32,0,60, -stop:53,stop:33,0,60, -stop:53,stop:51,0,60, -stop:53,stop:52,0,60, -stop:53,stop:53,0,60, -stop:53,stop:61,0,60, -stop:61,stop:11,0,60, -stop:61,stop:22,0,60, -stop:61,stop:31,0,60, -stop:61,stop:32,0,60, -stop:61,stop:33,0,60, -stop:61,stop:51,0,60, -stop:61,stop:52,0,60, -stop:61,stop:53,0,60, -stop:61,stop:61,0,60, diff --git a/gtfs2ntfs/tests/fixtures/output/trips.txt b/gtfs2ntfs/tests/fixtures/output/trips.txt deleted file mode 100644 index 2a8a830fb..000000000 --- a/gtfs2ntfs/tests/fixtures/output/trips.txt +++ /dev/null @@ -1,5 +0,0 @@ -trip_id,route_id,physical_mode_id,dataset_id,service_id,trip_headsign,trip_short_name,block_id,company_id,trip_property_id,geometry_id,journey_pattern_id -trip:4,route:2,Metro,default_dataset,service:1,pouet,,,1,,, -trip:5,route:3,Metro,default_dataset,service:2,pouet,,,2,,, -trip:3,route:2,Metro,default_dataset,service:1,pouet,,,1,,, -trip:6,route:3,Metro,default_dataset,service:2,pouet,,,2,,, diff --git a/gtfs2ntfs/tests/gtfs2ntfs.rs b/gtfs2ntfs/tests/gtfs2ntfs.rs index 469901c73..146732632 100644 --- a/gtfs2ntfs/tests/gtfs2ntfs.rs +++ b/gtfs2ntfs/tests/gtfs2ntfs.rs @@ -1,7 +1,6 @@ use assert_cmd::prelude::*; use std::process::Command; use tempfile::TempDir; -use transit_model::test_utils::*; #[test] fn test_gtfs2ntfs() { @@ -16,7 +15,7 @@ fn test_gtfs2ntfs() { .arg("2019-04-03T17:19:00Z") .assert() .success(); - compare_output_dir_with_expected(&output_dir, None, "tests/fixtures/output"); + assert!(output_dir.path().join("feed_infos.txt").is_file()); } #[test] @@ -33,7 +32,7 @@ fn test_gtfs2ntfs_create_output_directory() { .arg("2019-04-03T17:19:00Z") .assert() .success(); - compare_output_dir_with_expected(&unexisting_dir, None, "tests/fixtures/output"); + assert!(unexisting_dir.join("feed_infos.txt").is_file()); } #[test] From f8a633e736beda42dddbb966cf0342e4ef090cbf Mon Sep 17 00:00:00 2001 From: Jean SIMARD Date: Tue, 29 Jun 2021 14:58:44 +0200 Subject: [PATCH 07/11] [test] test for file presence instead of content in *2netexfr --- gtfs2netexfr/tests/gtfs2netexfr.rs | 35 +++++++++++++++++------------- ntfs2netexfr/tests/ntfs2netexfr.rs | 35 +++++++++++++++++------------- 2 files changed, 40 insertions(+), 30 deletions(-) diff --git a/gtfs2netexfr/tests/gtfs2netexfr.rs b/gtfs2netexfr/tests/gtfs2netexfr.rs index a2e6bb5b0..dca4d06e1 100644 --- a/gtfs2netexfr/tests/gtfs2netexfr.rs +++ b/gtfs2netexfr/tests/gtfs2netexfr.rs @@ -1,7 +1,6 @@ use assert_cmd::prelude::*; use std::process::Command; use tempfile::TempDir; -use transit_model::test_utils::*; #[test] fn test_gtfs2netexfr() { @@ -18,20 +17,26 @@ fn test_gtfs2netexfr() { .arg("2019-04-03T17:19:00Z") .assert() .success(); - compare_output_dir_with_expected(&output_dir, None, "../tests/fixtures/netex_france/output/"); - let network_folders = std::fs::read_dir(output_dir) - .unwrap() - .map(|dir_entry| dir_entry.unwrap()) - .map(|dir_entry| dir_entry.path()) - .filter(|path| path.is_dir()); - for network_folder in network_folders { - let folder_name = network_folder.file_name().unwrap(); - let expected_folder = format!( - "../tests/fixtures/netex_france/output/{}", - folder_name.to_str().unwrap() - ); - compare_output_dir_with_expected_content(&network_folder, None, &expected_folder); - } + assert!(output_dir.path().join("arrets.xml").is_file()); +} + +#[test] +fn test_gtfs2netexfr_without_dir() { + let output_dir = TempDir::new().expect("create temp dir failed"); + let unexisting_dir = output_dir.path().join("unexisting-dir"); + Command::cargo_bin("gtfs2netexfr") + .expect("Failed to find binary 'gtfs2netexfr'") + .arg("--input") + .arg("../tests/fixtures/netex_france/input_gtfs") + .arg("--output") + .arg(unexisting_dir.to_str().unwrap()) + .arg("--participant") + .arg("Participant") + .arg("--current-datetime") + .arg("2019-04-03T17:19:00Z") + .assert() + .success(); + assert!(unexisting_dir.join("arrets.xml").is_file()); } #[test] diff --git a/ntfs2netexfr/tests/ntfs2netexfr.rs b/ntfs2netexfr/tests/ntfs2netexfr.rs index a40de916d..3e5c84bef 100644 --- a/ntfs2netexfr/tests/ntfs2netexfr.rs +++ b/ntfs2netexfr/tests/ntfs2netexfr.rs @@ -1,7 +1,6 @@ use assert_cmd::prelude::*; use std::process::Command; use tempfile::TempDir; -use transit_model::test_utils::*; #[test] fn test_ntfs2netexfr() { @@ -18,20 +17,26 @@ fn test_ntfs2netexfr() { .arg("2019-04-03T17:19:00Z") .assert() .success(); - compare_output_dir_with_expected(&output_dir, None, "../tests/fixtures/netex_france/output/"); - let network_folders = std::fs::read_dir(output_dir) - .unwrap() - .map(|dir_entry| dir_entry.unwrap()) - .map(|dir_entry| dir_entry.path()) - .filter(|path| path.is_dir()); - for network_folder in network_folders { - let folder_name = network_folder.file_name().unwrap(); - let expected_folder = format!( - "../tests/fixtures/netex_france/output/{}", - folder_name.to_str().unwrap() - ); - compare_output_dir_with_expected_content(&network_folder, None, &expected_folder); - } + assert!(output_dir.path().join("arrets.xml").is_file()) +} + +#[test] +fn test_ntfs2netexfr_without_dir() { + let output_dir = TempDir::new().expect("create temp dir failed"); + let unexisting_dir = output_dir.path().join("unexisting-dir"); + Command::cargo_bin("ntfs2netexfr") + .expect("Failed to find binary 'ntfs2netexfr'") + .arg("--input") + .arg("../tests/fixtures/netex_france/input_ntfs") + .arg("--output") + .arg(unexisting_dir.to_str().unwrap()) + .arg("--participant") + .arg("Participant") + .arg("--current-datetime") + .arg("2019-04-03T17:19:00Z") + .assert() + .success(); + assert!(unexisting_dir.join("arrets.xml").is_file()) } #[test] From eaf29732f95cab70a5bdfd81cbdd44464f6c2b2d Mon Sep 17 00:00:00 2001 From: Jean SIMARD Date: Tue, 29 Jun 2021 15:01:16 +0200 Subject: [PATCH 08/11] [test] test for file presence instead of content in ntfs2gtfs --- ntfs2gtfs/tests/ntfs2gtfs.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ntfs2gtfs/tests/ntfs2gtfs.rs b/ntfs2gtfs/tests/ntfs2gtfs.rs index ca3504913..12742d6a1 100644 --- a/ntfs2gtfs/tests/ntfs2gtfs.rs +++ b/ntfs2gtfs/tests/ntfs2gtfs.rs @@ -68,7 +68,7 @@ fn test_ntfs2gtfs() { .arg(output_dir.path().to_str().unwrap()) .assert() .success(); - assert!(output_dir.path().join("agency.txt").exists()) + assert!(output_dir.path().join("agency.txt").is_file()) } #[test] @@ -83,14 +83,14 @@ fn test_ntfs2gtfs_create_output_directory() { .arg(unexisting_dir.to_str().unwrap()) .assert() .success(); - assert!(unexisting_dir.join("agency.txt").exists()) + assert!(unexisting_dir.join("agency.txt").is_file()) } #[test] fn test_ntfs2gtfs_create_zip() { let output_dir = TempDir::new().expect("create temp dir failed"); let ntfs_zip = output_dir.path().join("ntfs.zip"); - assert!(!ntfs_zip.exists()); + assert!(!ntfs_zip.is_file()); Command::cargo_bin("ntfs2gtfs") .expect("Failed to find binary 'ntfs2gtfs'") .arg("--input") From 0d9f15d841b40462ad5272323432855ebfe7d398 Mon Sep 17 00:00:00 2001 From: Jean SIMARD Date: Tue, 29 Jun 2021 15:02:56 +0200 Subject: [PATCH 09/11] [test] test for file presence instead of content in ntfs2ntfs --- ntfs2ntfs/tests/ntfs2ntfs.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ntfs2ntfs/tests/ntfs2ntfs.rs b/ntfs2ntfs/tests/ntfs2ntfs.rs index 1c58bad0a..0dfb8dd58 100644 --- a/ntfs2ntfs/tests/ntfs2ntfs.rs +++ b/ntfs2ntfs/tests/ntfs2ntfs.rs @@ -15,7 +15,7 @@ fn test_ntfs2ntfs() { .arg("2019-04-03T17:19:00Z") .assert() .success(); - assert!(output_dir.path().join("feed_infos.txt").exists()) + assert!(output_dir.path().join("feed_infos.txt").is_file()) } #[test] @@ -32,7 +32,7 @@ fn test_ntfs2ntfs_create_output_directory() { .arg("2019-04-03T17:19:00Z") .assert() .success(); - assert!(unexisting_dir.join("feed_infos.txt").exists()) + assert!(unexisting_dir.join("feed_infos.txt").is_file()) } #[test] From 4e2c0f28c495461a5302fc0fa51ab1ae078d8a5e Mon Sep 17 00:00:00 2001 From: Jean SIMARD Date: Tue, 29 Jun 2021 15:28:58 +0200 Subject: [PATCH 10/11] [feature] deprecate netex_france::Exporter --- Cargo.toml | 2 +- src/netex_france/mod.rs | 10 +++++----- tests/write_netex_france.rs | 13 ++++--------- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 14360075e..661cb28d7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] authors = ["Kisio Digital ", "Guillaume Pinot "] name = "transit_model" -version = "0.37.0" +version = "0.38.0" license = "AGPL-3.0-only" description = "Transit data management" repository = "https://github.com/CanalTP/transit_model" diff --git a/src/netex_france/mod.rs b/src/netex_france/mod.rs index 592c6fd9b..a5630b99a 100644 --- a/src/netex_france/mod.rs +++ b/src/netex_france/mod.rs @@ -19,7 +19,7 @@ use calendars::CalendarExporter; mod companies; use companies::CompanyExporter; mod exporter; -pub use exporter::Exporter; +use exporter::Exporter; mod lines; use lines::LineExporter; use lines::LineModes; @@ -52,18 +52,18 @@ pub struct WriteConfiguration { impl WriteConfiguration { /// Create a new `WriteConfiguration`. - pub fn new(participant: String) -> Self { + pub fn new>(participant: S) -> Self { WriteConfiguration { - participant, + participant: participant.into(), stop_provider: None, current_datetime: chrono::FixedOffset::east(0) .from_utc_datetime(&chrono::Utc::now().naive_utc()), } } /// Setup the Stop Provider (see [specifications](https://github.com/CanalTP/ntfs-specification/blob/master/ntfs_to_netex_france_specs.md) for more details) - pub fn stop_provider(self, stop_provider: String) -> Self { + pub fn stop_provider>(self, stop_provider: S) -> Self { WriteConfiguration { - stop_provider: Some(stop_provider), + stop_provider: Some(stop_provider.into()), ..self } } diff --git a/tests/write_netex_france.rs b/tests/write_netex_france.rs index 8929af704..ac1546391 100644 --- a/tests/write_netex_france.rs +++ b/tests/write_netex_france.rs @@ -19,15 +19,10 @@ use transit_model::{gtfs, model::Model, netex_france, ntfs, test_utils::*}; fn test_write_netex_france(model: Model) { test_in_tmp_dir(|output_dir| { - let participant_ref = String::from("Participant"); - let stop_provider_code = Some(String::from("ProviderCode")); - let netex_france_exporter = netex_france::Exporter::new( - &model, - participant_ref, - stop_provider_code, - get_test_datetime(), - ); - netex_france_exporter.write(output_dir).unwrap(); + let config = netex_france::WriteConfiguration::new("Participant") + .stop_provider("ProviderCode") + .current_datetime(get_test_datetime()); + netex_france::write(&model, &output_dir, config).unwrap(); compare_output_dir_with_expected_content( &output_dir, None, From 2ec42ff3911b50254ef24357d4c4545aa39c3064 Mon Sep 17 00:00:00 2001 From: Jean SIMARD Date: Tue, 29 Jun 2021 15:44:00 +0200 Subject: [PATCH 11/11] [test] add test for not-zip extensions --- gtfs2netexfr/tests/gtfs2netexfr.rs | 19 +++++++++++++++++++ gtfs2ntfs/tests/gtfs2ntfs.rs | 18 ++++++++++++++++++ ntfs2gtfs/tests/ntfs2gtfs.rs | 16 ++++++++++++++++ ntfs2netexfr/tests/ntfs2netexfr.rs | 20 ++++++++++++++++++++ ntfs2ntfs/tests/ntfs2ntfs.rs | 18 ++++++++++++++++++ 5 files changed, 91 insertions(+) diff --git a/gtfs2netexfr/tests/gtfs2netexfr.rs b/gtfs2netexfr/tests/gtfs2netexfr.rs index dca4d06e1..17e2b55ef 100644 --- a/gtfs2netexfr/tests/gtfs2netexfr.rs +++ b/gtfs2netexfr/tests/gtfs2netexfr.rs @@ -58,3 +58,22 @@ fn test_gtfs2netexfr_create_zip() { .success(); assert!(netexfr_zip.is_file()); } + +#[test] +fn test_gtfs2netexfr_create_not_zip_extension() { + let output_dir = TempDir::new().expect("create temp dir failed"); + let netexfr_foobar = output_dir.path().join("netexfr.foobar"); + Command::cargo_bin("gtfs2netexfr") + .expect("Failed to find binary 'gtfs2netexfr'") + .arg("--input") + .arg("../tests/fixtures/netex_france/input_gtfs") + .arg("--output") + .arg(netexfr_foobar.to_str().unwrap()) + .arg("--participant") + .arg("Participant") + .arg("--current-datetime") + .arg("2019-04-03T17:19:00Z") + .assert() + .success(); + assert!(netexfr_foobar.join("arrets.xml").is_file()); +} diff --git a/gtfs2ntfs/tests/gtfs2ntfs.rs b/gtfs2ntfs/tests/gtfs2ntfs.rs index 146732632..f7b076cc8 100644 --- a/gtfs2ntfs/tests/gtfs2ntfs.rs +++ b/gtfs2ntfs/tests/gtfs2ntfs.rs @@ -52,3 +52,21 @@ fn test_gtfs2ntfs_create_zip() { .success(); assert!(ntfs_zip.is_file()); } + +#[test] +fn test_gtfs2ntfs_create_not_zip_extension() { + let output_dir = TempDir::new().expect("create temp dir failed"); + let ntfs_foobar = output_dir.path().join("ntfs.foobar"); + assert!(!ntfs_foobar.exists()); + Command::cargo_bin("gtfs2ntfs") + .expect("Failed to find binary 'gtfs2ntfs'") + .arg("--input") + .arg("../tests/fixtures/gtfs2ntfs/minimal/input") + .arg("--output") + .arg(ntfs_foobar.to_str().unwrap()) + .arg("--current-datetime") + .arg("2019-04-03T17:19:00Z") + .assert() + .success(); + assert!(ntfs_foobar.join("feed_infos.txt").is_file()); +} diff --git a/ntfs2gtfs/tests/ntfs2gtfs.rs b/ntfs2gtfs/tests/ntfs2gtfs.rs index 12742d6a1..44393c528 100644 --- a/ntfs2gtfs/tests/ntfs2gtfs.rs +++ b/ntfs2gtfs/tests/ntfs2gtfs.rs @@ -101,3 +101,19 @@ fn test_ntfs2gtfs_create_zip() { .success(); assert!(ntfs_zip.is_file()); } + +#[test] +fn test_ntfs2gtfs_create_foobar() { + let output_dir = TempDir::new().expect("create temp dir failed"); + let ntfs_foobar = output_dir.path().join("ntfs.foobar"); + assert!(!ntfs_foobar.is_file()); + Command::cargo_bin("ntfs2gtfs") + .expect("Failed to find binary 'ntfs2gtfs'") + .arg("--input") + .arg("tests/fixtures/input/") + .arg("--output") + .arg(ntfs_foobar.to_str().unwrap()) + .assert() + .success(); + assert!(ntfs_foobar.join("agency.txt").is_file()); +} diff --git a/ntfs2netexfr/tests/ntfs2netexfr.rs b/ntfs2netexfr/tests/ntfs2netexfr.rs index 3e5c84bef..1609f090c 100644 --- a/ntfs2netexfr/tests/ntfs2netexfr.rs +++ b/ntfs2netexfr/tests/ntfs2netexfr.rs @@ -58,3 +58,23 @@ fn test_ntfs2netexfr_create_zip() { .success(); assert!(netexfr_zip.is_file()); } + +#[test] +fn test_ntfs2netexfr_create_foobar() { + let output_dir = TempDir::new().expect("create temp dir failed"); + let netexfr_foobar = output_dir.path().join("netexfr.foobar"); + assert!(!netexfr_foobar.exists()); + Command::cargo_bin("ntfs2netexfr") + .expect("Failed to find binary 'ntfs2netexfr'") + .arg("--input") + .arg("../tests/fixtures/netex_france/input_ntfs") + .arg("--output") + .arg(netexfr_foobar.to_str().unwrap()) + .arg("--participant") + .arg("Participant") + .arg("--current-datetime") + .arg("2019-04-03T17:19:00Z") + .assert() + .success(); + assert!(netexfr_foobar.join("arrets.xml").is_file()); +} diff --git a/ntfs2ntfs/tests/ntfs2ntfs.rs b/ntfs2ntfs/tests/ntfs2ntfs.rs index 0dfb8dd58..90882c591 100644 --- a/ntfs2ntfs/tests/ntfs2ntfs.rs +++ b/ntfs2ntfs/tests/ntfs2ntfs.rs @@ -52,3 +52,21 @@ fn test_ntfs2ntfs_create_zip() { .success(); assert!(ntfs_zip.is_file()); } + +#[test] +fn test_ntfs2ntfs_create_foobar() { + let output_dir = TempDir::new().expect("create temp dir failed"); + let ntfs_foobar = output_dir.path().join("ntfs.foobar"); + assert!(!ntfs_foobar.exists()); + Command::cargo_bin("ntfs2ntfs") + .expect("Failed to find binary 'ntfs2ntfs'") + .arg("--input") + .arg("../tests/fixtures/minimal_ntfs/") + .arg("--output") + .arg(ntfs_foobar.to_str().unwrap()) + .arg("--current-datetime") + .arg("2019-04-03T17:19:00Z") + .assert() + .success(); + assert!(ntfs_foobar.join("feed_infos.txt").is_file()); +}