chiark / gitweb /
easier to reuse stuff from formal tests
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 30 Dec 2020 12:33:22 +0000 (12:33 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 30 Dec 2020 12:33:22 +0000 (12:33 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/config.rs
wdriver.rs
wdriver/wdt-simple.rs

index 416e15e37377aaf62f26160b0207ff991d577264..0022149420c896d08cc376c96e5d8231fc529101 100644 (file)
@@ -19,6 +19,7 @@ pub const DAEMON_STARTUP_REPORT : &str = "otter-daemon started";
 
 #[derive(Deserialize,Debug,Clone)]
 pub struct ServerConfigSpec {
+  pub change_directory: Option<String>,
   pub base_dir: Option<String>,
   pub save_dir: Option<String>,
   pub command_socket: Option<String>,
@@ -66,13 +67,19 @@ impl TryFrom<ServerConfigSpec> for WholeServerConfig {
   #[throws(Self::Error)]
   fn try_from(spec: ServerConfigSpec) -> WholeServerConfig {
     let ServerConfigSpec {
-      base_dir, save_dir, command_socket, debug,
+      change_directory, base_dir, save_dir, command_socket, debug,
       http_port, public_url, sse_wildcard_url, rocket_workers,
       template_dir, nwtemplate_dir, wasm_dir,
       log, bundled_sources, shapelibs, sendmail,
       debug_js_inject_file,
     } = spec;
 
+    if let Some(cd) = change_directory {
+      env::set_current_dir(&cd)
+        .context(cd)
+        .context("config change_directory")?;
+    }
+
     let defpath = |specd: Option<String>, leaf: &str| -> String {
       specd.unwrap_or_else(|| match &base_dir {
         Some(base) => format!("{}/{}", &base, &leaf),
index a77a5cfb63b8e2e0d0cc49fb4f45085bc2db629d..72e019f6e739b74739d0f5f7989e866db16ea534 100644 (file)
@@ -225,6 +225,7 @@ impl Substitutor for DirSubst {
       "url"    => URL.to_owned(),
       "src"    => self.src.clone(),
       "build"  => self.start_dir.clone(),
+      "abstmp" => self.abstmp.clone(),
       "target" => format!("{}/target", &self.start_dir),
       "specs"  => format!("{}/specs" , &self.src      ),
       _ => return None,
@@ -534,6 +535,7 @@ fn prepare_gameserver(cln: &cleanup_notify::Handle, ds: &DirSubst)
     ("command_socket", "command.socket"),
   ]);
   let config = subst.subst(r##"
+change_directory = "@abstmp@"
 base_dir = "@build@"
 public_url = "@url@"
 
index 9d06023724661b3ea25870619371771ad2c2c554..d7e55e1f856bdc9c17f2ff6bf487c5cc76fe4d12 100644 (file)
@@ -4,6 +4,10 @@
 
 use otter_webdriver_tests::*;
 
+// Reuse this setup, after a test:
+//   target/debug/daemon-otter tmp/wdt-simple/server-config.toml
+//   http://localhost:8000/?kmqAKPwK4TfReFjMor8MJhdRPBcwIBpe
+
 #[throws(AE)]
 fn main(){
   {