Skip to content

Commit 384b0e5

Browse files
committed
tests/inst: convert more sh-inline to xshell
Part of #2857
1 parent 7a32b86 commit 384b0e5

2 files changed

Lines changed: 86 additions & 62 deletions

File tree

tests/inst/src/destructive.rs

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ use ostree_ext::ostree;
2525
use rand::seq::SliceRandom;
2626
use rand::Rng;
2727
use serde::{Deserialize, Serialize};
28-
use sh_inline::bash;
2928
use std::collections::BTreeMap;
3029
use std::io::Write;
3130
use std::path::Path;
@@ -132,12 +131,15 @@ impl InterruptStrategy {
132131

133132
/// TODO add readonly sysroot handling into base ostree
134133
fn testinit() -> Result<()> {
134+
let sh = xshell::Shell::new()?;
135135
assert!(std::path::Path::new("/run/ostree-booted").exists());
136-
bash!(
137-
r"if ! test -w /sysroot; then
136+
cmd!(
137+
sh,
138+
"if ! test -w /sysroot; then
138139
mount -o remount,rw /sysroot
139140
fi"
140-
)?;
141+
)
142+
.run()?;
141143
Ok(())
142144
}
143145

@@ -146,16 +148,14 @@ fi"
146148
/// reworked the tree mutation to operate on an ostree repo
147149
/// rather than a filesystem.
148150
fn generate_update(commit: &str) -> Result<()> {
151+
let sh = xshell::Shell::new()?;
149152
println!("Generating update from {}", commit);
150153
crate::treegen::update_os_tree(SRVREPO, TESTREF, TREEGEN_PERCENTAGE)
151154
.context("Failed to generate new content")?;
152155
// Amortize the prune across multiple runs; we don't want to leak space,
153156
// but traversing all the objects is expensive. So here we only prune 1/5 of the time.
154157
if rand::thread_rng().gen_ratio(1, 5) {
155-
bash!(
156-
"ostree --repo=${srvrepo} prune --refs-only --depth=1",
157-
srvrepo = SRVREPO
158-
)?;
158+
cmd!(sh, "ostree --repo=${SRVREPO} prune --refs-only --depth=1").run()?;
159159
}
160160
Ok(())
161161
}
@@ -165,17 +165,23 @@ fn generate_update(commit: &str) -> Result<()> {
165165
/// and then teach our webserver to redirect to the system for objects it doesn't
166166
/// have.
167167
fn generate_srv_repo(commit: &str) -> Result<()> {
168-
bash!(
169-
r#"
170-
ostree --repo=${srvrepo} init --mode=archive
171-
ostree --repo=${srvrepo} config set archive.zlib-level 1
172-
ostree --repo=${srvrepo} pull-local /sysroot/ostree/repo ${commit}
173-
ostree --repo=${srvrepo} refs --create=${testref} ${commit}
174-
"#,
175-
srvrepo = SRVREPO,
176-
commit = commit,
177-
testref = TESTREF
168+
let sh = xshell::Shell::new()?;
169+
cmd!(sh, "ostree --repo=${SRVREPO} init --mode=archive").run()?;
170+
cmd!(
171+
sh,
172+
"ostree --repo=${SRVREPO} config set archive.zlib-level 1"
178173
)
174+
.run()?;
175+
cmd!(
176+
sh,
177+
"ostree --repo=${SRVREPO} pull-local /sysroot/ostree/repo ${commit}"
178+
)
179+
.run()?;
180+
cmd!(
181+
sh,
182+
"ostree --repo=${SRVREPO} refs --create=${TESTREF} ${commit}"
183+
)
184+
.run()
179185
.context("Failed to generate srv repo")?;
180186
generate_update(commit)?;
181187
Ok(())
@@ -200,11 +206,14 @@ struct RebootStats {
200206
}
201207

202208
fn upgrade_and_finalize() -> Result<()> {
203-
bash!(
209+
let sh = xshell::Shell::new()?;
210+
cmd!(
211+
sh,
204212
"rpm-ostree upgrade
205213
systemctl start ostree-finalize-staged
206214
systemctl stop ostree-finalize-staged"
207215
)
216+
.run()
208217
.context("Upgrade and finalize failed")?;
209218
Ok(())
210219
}
@@ -309,9 +318,10 @@ fn parse_and_validate_reboot_mark<M: AsRef<str>>(
309318
}
310319

311320
fn validate_pending_commit(pending_commit: &str, commitstates: &CommitStates) -> Result<()> {
321+
let sh = xshell::Shell::new()?;
312322
if pending_commit != commitstates.target {
313-
bash!("rpm-ostree status -v")?;
314-
bash!("ostree show ${pending_commit}", pending_commit)?;
323+
cmd!(sh, "rpm-ostree status -v").run()?;
324+
cmd!(sh, "ostree show ${pending_commit}").run()?;
315325
anyhow::bail!(
316326
"Expected target commit={} but pending={} ({:?})",
317327
commitstates.target,
@@ -622,17 +632,9 @@ pub(crate) fn itest_transactionality() -> Result<()> {
622632
// FIXME: make this saner
623633
let origref = ORIGREF;
624634
let testref = TESTREF;
625-
bash!(
626-
"
627-
ostree admin set-origin testrepo ${url} ${testref}
628-
ostree refs --create testrepo:${testref} ${commit}
629-
ostree refs --create=${origref} ${commit}
630-
",
631-
url,
632-
origref,
633-
testref,
634-
commit
635-
)?;
635+
cmd!(sh, "ostree admin set-origin testrepo ${url} ${testref}").run()?;
636+
cmd!(sh, "ostree refs --create testrepo:${testref} ${commit}").run()?;
637+
cmd!(sh, "ostree refs --create=${origref} ${commit}").run()?;
636638
// We gather a single "cycle time" at start as a way of gauging how
637639
// long an upgrade should take, so we know when to interrupt. This
638640
// obviously has some pitfalls, mainly when there are e.g. other competing

tests/inst/src/repobin.rs

Lines changed: 52 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,28 @@ use std::path::Path;
55

66
use crate::test::*;
77
use anyhow::{Context, Result};
8-
use sh_inline::{bash, bash_command};
8+
use sh_inline::bash_command;
99
use with_procspawn_tempdir::with_procspawn_tempdir;
10+
use xshell::cmd;
1011

1112
pub(crate) fn itest_basic() -> Result<()> {
12-
bash!(r"ostree --help >/dev/null")?;
13+
let sh = xshell::Shell::new()?;
14+
cmd!(sh, "ostree --help >/dev/null").run()?;
1315
Ok(())
1416
}
1517

1618
#[with_procspawn_tempdir]
1719
pub(crate) fn itest_nofifo() -> Result<()> {
20+
let sh = xshell::Shell::new()?;
1821
assert!(std::path::Path::new(".procspawn-tmpdir").exists());
19-
bash!(
20-
r"ostree --repo=repo init --mode=archive
22+
cmd!(
23+
sh,
24+
"ostree --repo=repo init --mode=archive
2125
mkdir tmproot
2226
mkfifo tmproot/afile
2327
"
24-
)?;
28+
)
29+
.run()?;
2530
cmd_fails_with(
2631
bash_command!(
2732
r#"ostree --repo=repo commit -b fifotest -s "commit fifo" --tree=dir=./tmproot"#
@@ -34,60 +39,73 @@ pub(crate) fn itest_nofifo() -> Result<()> {
3439

3540
#[with_procspawn_tempdir]
3641
pub(crate) fn itest_mtime() -> Result<()> {
37-
bash!(
38-
r"ostree --repo=repo init --mode=archive
42+
let sh = xshell::Shell::new()?;
43+
cmd!(
44+
sh,
45+
"ostree --repo=repo init --mode=archive
3946
mkdir tmproot
4047
echo afile > tmproot/afile
4148
ostree --repo=repo commit -b test --tree=dir=tmproot >/dev/null
4249
"
43-
)?;
50+
)
51+
.run()?;
4452
let ts = Path::new("repo").metadata()?.modified().unwrap();
4553
std::thread::sleep(std::time::Duration::from_secs(1));
46-
bash!(r#"ostree --repo=repo commit -b test -s "bump mtime" --tree=dir=tmproot >/dev/null"#)?;
54+
cmd!(
55+
sh,
56+
"ostree --repo=repo commit -b test -s 'bump mtime' --tree=dir=tmproot >/dev/null"
57+
)
58+
.run()?;
4759
assert_ne!(ts, Path::new("repo").metadata()?.modified().unwrap());
4860
Ok(())
4961
}
5062

5163
#[with_procspawn_tempdir]
5264
pub(crate) fn itest_extensions() -> Result<()> {
53-
bash!(r"ostree --repo=repo init --mode=bare")?;
65+
let sh = xshell::Shell::new()?;
66+
cmd!(sh, "ostree --repo=repo init --mode=bare").run()?;
5467
assert!(Path::new("repo/extensions").exists());
5568
Ok(())
5669
}
5770

5871
#[with_procspawn_tempdir]
5972
pub(crate) fn itest_pull_basicauth() -> Result<()> {
73+
let sh = xshell::Shell::new()?;
6074
let opts = TestHttpServerOpts {
6175
basicauth: true,
6276
..Default::default()
6377
};
6478
let serverrepo = Path::new("server/repo");
6579
std::fs::create_dir_all(&serverrepo)?;
6680
with_webserver_in(&serverrepo, &opts, move |addr| {
67-
let baseuri = http::Uri::from_maybe_shared(format!("http://{}/", addr).into_bytes())?;
81+
let baseuri =
82+
http::Uri::from_maybe_shared(format!("http://{}/", addr).into_bytes())?.to_string();
6883
let unauthuri =
69-
http::Uri::from_maybe_shared(format!("http://unknown:badpw@{}/", addr).into_bytes())?;
84+
http::Uri::from_maybe_shared(format!("http://unknown:badpw@{}/", addr).into_bytes())?
85+
.to_string();
7086
let authuri = http::Uri::from_maybe_shared(
7187
format!("http://{}@{}/", TEST_HTTP_BASIC_AUTH, addr).into_bytes(),
72-
)?;
88+
)?
89+
.to_string();
7390
let osroot = Path::new("osroot");
7491
crate::treegen::mkroot(&osroot)?;
75-
bash!(
76-
r#"ostree --repo=${serverrepo} init --mode=archive
77-
ostree --repo=${serverrepo} commit -b os --tree=dir=${osroot} >/dev/null
78-
mkdir client
79-
cd client
80-
ostree --repo=repo init --mode=archive
81-
ostree --repo=repo remote add --set=gpg-verify=false origin-unauth ${baseuri}
82-
ostree --repo=repo remote add --set=gpg-verify=false origin-badauth ${unauthuri}
83-
ostree --repo=repo remote add --set=gpg-verify=false origin-goodauth ${authuri}
84-
"#,
85-
osroot = osroot,
86-
serverrepo = serverrepo,
87-
baseuri = baseuri.to_string(),
88-
unauthuri = unauthuri.to_string(),
89-
authuri = authuri.to_string()
90-
)?;
92+
93+
cmd!(sh, "ostree --repo=${serverrepo} init --mode=archive").run()?;
94+
cmd!(
95+
sh,
96+
"ostree --repo=${serverrepo} commit -b os --tree=dir=${osroot} >/dev/null"
97+
)
98+
.run()?;
99+
cmd!(sh, "mkdir client").run()?;
100+
cmd!(sh, "ostree --repo=client/repo init --mode=archive").run()?;
101+
cmd!(
102+
sh,
103+
"ostree --repo=client/repo remote add --set=gpg-verify=false origin-unauth ${baseuri}"
104+
)
105+
.run()?;
106+
cmd!(sh, "ostree --repo=client/repo remote add --set=gpg-verify=false origin-badauth ${unauthuri}").run()?;
107+
cmd!(sh, "ostree --repo=client/repo remote add --set=gpg-verify=false origin-goodauth ${authuri}").run()?;
108+
91109
for rem in &["unauth", "badauth"] {
92110
cmd_fails_with(
93111
bash_command!(
@@ -99,7 +117,11 @@ pub(crate) fn itest_pull_basicauth() -> Result<()> {
99117
)
100118
.context(rem)?;
101119
}
102-
bash!(r#"ostree --repo=client/repo pull origin-goodauth os >/dev/null"#,)?;
120+
cmd!(
121+
sh,
122+
"ostree --repo=client/repo pull origin-goodauth os >/dev/null"
123+
)
124+
.run()?;
103125
Ok(())
104126
})?;
105127
Ok(())

0 commit comments

Comments
 (0)