protected JResult DoSettingsTest(ServiceSettings s, OnResolveSettings resolveSettings, OnAssertSettingsValidateRun postAction, string[] cmd) { Func<string, ExecutionElement, ExecutionElement> resolve = (dir, e) => { var ret = e.SClone(); ret.Program = Path.Combine(dir, e.Program); ret.WorkDir = e.WorkDir == null ? dir : Path.Combine(dir, e.WorkDir); if (ret.Termination != null) { if (ret.Termination.Timeout == null) ret.Termination.Timeout = "2"; if (ret.Termination.Execution != null) { var se = ret.Termination.Execution; se.Program = Path.Combine(dir, se.Program); se.WorkDir = se.WorkDir == null ? ret.WorkDir : Path.Combine(dir, se.WorkDir); } } else { ret.Termination = new TerminationElement { Timeout = "2" }; } resolveSettings(dir, ret); return ret; }; return TempFilesHolder.WithTempDirectory( dir => { var ee = resolve(dir, s.Execution); if (!File.Exists(ee.Program)) { File.WriteAllText(ee.Program, "mock"); } if (ee.Termination != null && ee.Termination.Execution != null && !File.Exists(ee.Termination.Execution.Program)) { File.WriteAllText(ee.Termination.Execution.Program, "smock"); } var r = ExecuteWithSettings(s, dir, cmd); postAction(r, s, ee, dir); return r; }); }
protected JResult DoValidateSettingsTest(ServiceSettings s, OnResolveSettings resolve, params string[] cmd) { return DoSettingsTest( s, resolve, (r, ss, ee, dir) => { Assert.That(r.ExitCode, Is.EqualTo(0)); AssertServiceParameters(s, r, ee); }, cmd); }