mirror of
https://seed.radicle.dev/rad:zwTxygwuz5LDGBq255RA2CbNGrz8.git
synced 2026-10-18 19:30:29 +08:00
refactor(src/adapter.rs): reduce code duplication in tests
Signed-off-by: Lars Wirzenius <liw@liw.fi>
This commit is contained in:
+80
-73
@@ -447,9 +447,9 @@ pub enum AdapterError {
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use std::{fs::write, io::ErrorKind, time::Duration};
|
||||
use std::{fs::write, io::ErrorKind, path::PathBuf, time::Duration};
|
||||
|
||||
use tempfile::{tempdir, NamedTempFile};
|
||||
use tempfile::{tempdir, NamedTempFile, TempDir};
|
||||
|
||||
use radicle::git::Oid;
|
||||
use radicle::prelude::RepoId;
|
||||
@@ -485,17 +485,24 @@ mod test {
|
||||
.build())
|
||||
}
|
||||
|
||||
#[allow(clippy::unwrap_used)]
|
||||
fn adapter(tmp: &TempDir, shell: &'static str) -> PathBuf {
|
||||
let bin = tmp.path().join("adapter.sh");
|
||||
mock_adapter(&bin, shell).unwrap();
|
||||
bin
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn adapter_reports_success() -> TestResult<()> {
|
||||
const ADAPTER: &str = r#"#!/bin/sh
|
||||
let tmp = tempdir()?;
|
||||
let bin = adapter(
|
||||
&tmp,
|
||||
r#"#!/bin/sh
|
||||
read
|
||||
echo '{"response":"triggered","run_id":{"id":"xyzzy"}}'
|
||||
echo '{"response":"finished","result":"success"}'
|
||||
"#;
|
||||
|
||||
let tmp = tempdir()?;
|
||||
let bin = tmp.path().join("adapter.sh");
|
||||
mock_adapter(&bin, ADAPTER)?;
|
||||
"#,
|
||||
);
|
||||
|
||||
let db = db()?;
|
||||
let mut run = run()?;
|
||||
@@ -509,15 +516,15 @@ echo '{"response":"finished","result":"success"}'
|
||||
|
||||
#[test]
|
||||
fn adapter_reports_failure() -> TestResult<()> {
|
||||
const ADAPTER: &str = r#"#!/bin/sh
|
||||
let tmp = tempdir()?;
|
||||
let bin = adapter(
|
||||
&tmp,
|
||||
r#"#!/bin/sh
|
||||
read
|
||||
echo '{"response":"triggered","run_id":{"id":"xyzzy"}}'
|
||||
echo '{"response":"finished","result":"failure"}'
|
||||
"#;
|
||||
|
||||
let tmp = tempdir()?;
|
||||
let bin = tmp.path().join("adapter.sh");
|
||||
mock_adapter(&bin, ADAPTER)?;
|
||||
"#,
|
||||
);
|
||||
|
||||
let db = db()?;
|
||||
let mut run = run()?;
|
||||
@@ -536,17 +543,17 @@ echo '{"response":"finished","result":"failure"}'
|
||||
|
||||
#[test]
|
||||
fn adapter_exits_nonzero() -> TestResult<()> {
|
||||
const ADAPTER: &str = r#"#!/bin/sh
|
||||
let tmp = tempdir()?;
|
||||
let bin = adapter(
|
||||
&tmp,
|
||||
r#"#!/bin/sh
|
||||
read
|
||||
echo '{"response":"triggered","run_id":{"id":"xyzzy"}}'
|
||||
echo '{"response":"finished","result":"failure"}'
|
||||
echo woe be me 1>&2
|
||||
exit 1
|
||||
"#;
|
||||
|
||||
let tmp = tempdir()?;
|
||||
let bin = tmp.path().join("adapter.sh");
|
||||
mock_adapter(&bin, ADAPTER)?;
|
||||
"#,
|
||||
);
|
||||
|
||||
let db = db()?;
|
||||
let mut run = run()?;
|
||||
@@ -562,13 +569,13 @@ exit 1
|
||||
|
||||
#[test]
|
||||
fn adapter_is_killed_before_any_messages() -> TestResult<()> {
|
||||
const ADAPTER: &str = r#"#!/bin/sh
|
||||
kill -9 $$
|
||||
"#;
|
||||
|
||||
let tmp = tempdir()?;
|
||||
let bin = tmp.path().join("adapter.sh");
|
||||
mock_adapter(&bin, ADAPTER)?;
|
||||
let bin = adapter(
|
||||
&tmp,
|
||||
r#"#!/bin/sh
|
||||
kill -9 $$
|
||||
"#,
|
||||
);
|
||||
|
||||
let db = db()?;
|
||||
let mut run = run()?;
|
||||
@@ -583,12 +590,12 @@ kill -9 $$
|
||||
|
||||
#[test]
|
||||
fn adapter_ends_ok_before_first_message() -> TestResult<()> {
|
||||
const ADAPTER: &str = r#"#!/bin/sh
|
||||
"#;
|
||||
|
||||
let tmp = tempdir()?;
|
||||
let bin = tmp.path().join("adapter.sh");
|
||||
mock_adapter(&bin, ADAPTER)?;
|
||||
let bin = adapter(
|
||||
&tmp,
|
||||
r#"#!/bin/sh
|
||||
"#,
|
||||
);
|
||||
|
||||
let db = db()?;
|
||||
let mut run = run()?;
|
||||
@@ -603,15 +610,15 @@ kill -9 $$
|
||||
|
||||
#[test]
|
||||
fn adapter_is_killed_before_first_message() -> TestResult<()> {
|
||||
const ADAPTER: &str = r#"#!/bin/sh
|
||||
let tmp = tempdir()?;
|
||||
let bin = adapter(
|
||||
&tmp,
|
||||
r#"#!/bin/sh
|
||||
read
|
||||
echo '{"response":"triggered","run_id":{"id":"xyzzy"}}'
|
||||
kill -9 $$
|
||||
"#;
|
||||
|
||||
let tmp = tempdir()?;
|
||||
let bin = tmp.path().join("adapter.sh");
|
||||
mock_adapter(&bin, ADAPTER)?;
|
||||
"#,
|
||||
);
|
||||
|
||||
let db = db()?;
|
||||
let mut run = run()?;
|
||||
@@ -626,14 +633,14 @@ kill -9 $$
|
||||
|
||||
#[test]
|
||||
fn adapter_ends_ok_before_second_message() -> TestResult<()> {
|
||||
const ADAPTER: &str = r#"#!/bin/sh
|
||||
let tmp = tempdir()?;
|
||||
let bin = adapter(
|
||||
&tmp,
|
||||
r#"#!/bin/sh
|
||||
read
|
||||
echo '{"response":"triggered","run_id":{"id":"xyzzy"}}'
|
||||
"#;
|
||||
|
||||
let tmp = tempdir()?;
|
||||
let bin = tmp.path().join("adapter.sh");
|
||||
mock_adapter(&bin, ADAPTER)?;
|
||||
"#,
|
||||
);
|
||||
|
||||
let db = db()?;
|
||||
let mut run = run()?;
|
||||
@@ -648,16 +655,16 @@ echo '{"response":"triggered","run_id":{"id":"xyzzy"}}'
|
||||
|
||||
#[test]
|
||||
fn adapter_is_killed_after_second_message() -> TestResult<()> {
|
||||
const ADAPTER: &str = r#"#!/bin/sh
|
||||
let tmp = tempdir()?;
|
||||
let bin = adapter(
|
||||
&tmp,
|
||||
r#"#!/bin/sh
|
||||
read
|
||||
echo '{"response":"triggered","run_id":{"id":"xyzzy"}}'
|
||||
echo '{"response":"finished","result":"success"}'
|
||||
kill -9 $$
|
||||
"#;
|
||||
|
||||
let tmp = tempdir()?;
|
||||
let bin = tmp.path().join("adapter.sh");
|
||||
mock_adapter(&bin, ADAPTER)?;
|
||||
"#,
|
||||
);
|
||||
|
||||
let db = db()?;
|
||||
let mut run = run()?;
|
||||
@@ -676,15 +683,15 @@ kill -9 $$
|
||||
|
||||
#[test]
|
||||
fn adapter_produces_as_bad_message() -> TestResult<()> {
|
||||
const ADAPTER: &str = r#"#!/bin/sh
|
||||
let tmp = tempdir()?;
|
||||
let bin = adapter(
|
||||
&tmp,
|
||||
r#"#!/bin/sh
|
||||
read
|
||||
echo '{"response":"triggered","run_id":{"id":"xyzzy"}}'
|
||||
echo '{"response":"finished","result":"success","bad":"field"}'
|
||||
"#;
|
||||
|
||||
let tmp = tempdir()?;
|
||||
let bin = tmp.path().join("adapter.sh");
|
||||
mock_adapter(&bin, ADAPTER)?;
|
||||
"#,
|
||||
);
|
||||
|
||||
let db = db()?;
|
||||
let mut run = run()?;
|
||||
@@ -702,14 +709,14 @@ echo '{"response":"finished","result":"success","bad":"field"}'
|
||||
|
||||
#[test]
|
||||
fn adapter_first_message_isnt_triggered() -> TestResult<()> {
|
||||
const ADAPTER: &str = r#"#!/bin/sh
|
||||
let tmp = tempdir()?;
|
||||
let bin = adapter(
|
||||
&tmp,
|
||||
r#"#!/bin/sh
|
||||
read
|
||||
echo '{"response":"finished","result":"success"}'
|
||||
"#;
|
||||
|
||||
let tmp = tempdir()?;
|
||||
let bin = tmp.path().join("adapter.sh");
|
||||
mock_adapter(&bin, ADAPTER)?;
|
||||
"#,
|
||||
);
|
||||
|
||||
let db = db()?;
|
||||
let mut run = run()?;
|
||||
@@ -729,16 +736,16 @@ echo '{"response":"finished","result":"success"}'
|
||||
|
||||
#[test]
|
||||
fn adapter_outputs_too_many_messages() -> TestResult<()> {
|
||||
const ADAPTER: &str = r#"#!/bin/sh
|
||||
let tmp = tempdir()?;
|
||||
let bin = adapter(
|
||||
&tmp,
|
||||
r#"#!/bin/sh
|
||||
read
|
||||
echo '{"response":"triggered","run_id":{"id":"xyzzy"}}'
|
||||
echo '{"response":"finished","result":"success"}'
|
||||
echo '{"response":"finished","result":"success"}'
|
||||
"#;
|
||||
|
||||
let tmp = tempdir()?;
|
||||
let bin = tmp.path().join("adapter.sh");
|
||||
mock_adapter(&bin, ADAPTER)?;
|
||||
"#,
|
||||
);
|
||||
|
||||
let db = db()?;
|
||||
let mut run = run()?;
|
||||
@@ -813,15 +820,15 @@ echo '{"response":"finished","result":"success"}'
|
||||
// paths and errors should happen when a binary can't be
|
||||
// loaded due to missing dynamic linker or library or such.
|
||||
|
||||
const ADAPTER: &str = r#"#!/bin/does-not-exist
|
||||
let tmp = tempdir()?;
|
||||
let bin = adapter(
|
||||
&tmp,
|
||||
r#"#!/bin/does-not-exist
|
||||
read
|
||||
echo '{"response":"triggered","run_id":{"id":"xyzzy"}}'
|
||||
echo '{"response":"finished","result":"success"}'
|
||||
"#;
|
||||
|
||||
let tmp = tempdir()?;
|
||||
let bin = tmp.path().join("adapter.sh");
|
||||
mock_adapter(&bin, ADAPTER)?;
|
||||
"#,
|
||||
);
|
||||
|
||||
let db = db()?;
|
||||
let mut run = run()?;
|
||||
|
||||
Reference in New Issue
Block a user