From c6f6b3a804558a3759d0e0cc169bd1401535f80e Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 18 May 2021 01:39:05 +0100 Subject: [PATCH] apitest: Move much bundle processing into main.rs Signed-off-by: Ian Jackson --- apitest/at-bundles.rs | 50 +------------------------------------- apitest/main.rs | 56 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 49 deletions(-) diff --git a/apitest/at-bundles.rs b/apitest/at-bundles.rs index 61dd3a4f..217fe094 100644 --- a/apitest/at-bundles.rs +++ b/apitest/at-bundles.rs @@ -7,57 +7,9 @@ use crate::*; type Ctx = UsualCtx; impl Ctx { - #[throws(Explode)] - fn check_library_item(&mut self, itemlib: &str, item: &str, - desc: &str) { - let ds = self.su().ds.also(&[ - ("itemlib", itemlib), - ("item", item ), - ]); - let command = ds.ss("library-add --lib @itemlib@ @table@ @item@")?; - let added = self.some_library_add(&command)?; - assert_eq!( added.len(), 1 ); - - let output: String = self.otter(&ds.ss("list-pieces @table@")?)?.into(); - assert_eq!( Regex::new( - &format!( - r#"(?m)(?:[^\w-]|^){}[^\w-].*\W{}(?:\W|$)"#, - item, desc, - ) - )? - .find_iter(&output).count(), - 1, - "got: {}", &output); - } - #[throws(Explode)] fn bundles(&mut self) { - let bundle_file = self.su().ds.example_bundle(); - let ds = self.su().ds.also(&[("bundle", &bundle_file)]); - self.otter(&ds.ss("upload-bundle @table@ @bundle@")?)?; - let mut bundles = self.otter(&ds.ss("list-bundles @table@")?)?; - let bundles = String::from(&mut bundles); - assert!(bundles.starts_with("00000.zip Loaded")); - self.otter(&ds.ss("download-bundle @table@ 0")?)?; - let st = Command::new("cmp").args(&[&bundle_file, "00000.zip"]).status()?; - if ! st.success() { panic!("cmp failed {}", st) } - - self.check_library_item("lemon","example-lemon","a lemon")?; - - self.stop_and_restart_server()?; - - let id = - self.su().mgmt_conn().list_pieces()? - .0.iter() - .find(|pi| pi.itemname.as_str() == "example-lemon") - .unwrap() - .piece; - self.su().mgmt_conn().alter_game(vec![MGI::DeletePiece(id)], None)?; - - self.check_library_item("lemon","example-lemon","a lemon")?; - - self.otter(&ds.ss("clear-game @table@")?)?; - self.reset_game(&ds.ss("reset @table@ demo")?)?; + self.upload_and_check_bundle("lemon","example-lemon","a lemon")?; } } diff --git a/apitest/main.rs b/apitest/main.rs index 7b726996..7ef77d2c 100644 --- a/apitest/main.rs +++ b/apitest/main.rs @@ -562,6 +562,62 @@ impl UsualCtx { assert_eq!(st.signal(), Some(nix::sys::signal::SIGTERM as i32)); su.restart_gameserver()?; } + + #[throws(Explode)] + pub fn check_library_item(&mut self, itemlib: &str, item: &str, + desc: &str) { + let ds = self.su().ds.also(&[ + ("itemlib", itemlib), + ("item", item ), + ]); + let command = ds.ss("library-add --lib @itemlib@ @table@ @item@")?; + let added = self.some_library_add(&command)?; + assert_eq!( added.len(), 1 ); + + let output: String = self.otter(&ds.ss("list-pieces @table@")?)?.into(); + assert_eq!( Regex::new( + &format!( + r#"(?m)(?:[^\w-]|^){}[^\w-].*\W{}(?:\W|$)"#, + item, desc, + ) + )? + .find_iter(&output).count(), + 1, + "got: {}", &output); + } + + #[throws(Explode)] + pub fn upload_and_check_bundle(&mut self, + libname: &str, item: &str, + desc: &str) + { + let bundle_file = self.su().ds.example_bundle(); + let ds = self.su().ds.also(&[("bundle", &bundle_file)]); + self.otter(&ds.ss("upload-bundle @table@ @bundle@")?)?; + let mut bundles = self.otter(&ds.ss("list-bundles @table@")?)?; + let bundles = String::from(&mut bundles); + assert!(bundles.starts_with("00000.zip Loaded")); + self.otter(&ds.ss("download-bundle @table@ 0")?)?; + let st = Command::new("cmp").args(&[&bundle_file, "00000.zip"]).status()?; + if ! st.success() { panic!("cmp failed {}", st) } + + self.check_library_item(libname,item,desc)?; + + self.stop_and_restart_server()?; + + let id = + self.su().mgmt_conn().list_pieces()? + .0.iter() + .find(|pi| pi.itemname.as_str() == item) + .unwrap() + .piece; + self.su().mgmt_conn().alter_game(vec![MGI::DeletePiece(id)], None)?; + + self.check_library_item(libname,item,desc)?; + + self.otter(&ds.ss("clear-game @table@")?)?; + self.reset_game(&ds.ss("reset @table@ demo")?)?; + } } impl UsualCtx { -- 2.30.2