diff --git a/test/distributed_exec.jl b/test/distributed_exec.jl
index 166ea6df962b03..7b5c983da1bf91 100644
--- a/test/distributed_exec.jl
+++ b/test/distributed_exec.jl
@@ -1906,7 +1906,7 @@ end end
 include("splitrange.jl")
 
 # Clear all workers for timeout tests (issue #45785)
-rmprocs(workers())
+nprocs() > 1 && rmprocs(workers())
 begin
     # First, assert that we get no messages when we close a cooperative worker
     w = only(addprocs(1))
@@ -1920,6 +1920,8 @@ begin
         remote_do(w) do
             # Cause the 'exit()' message that `rmprocs()` sends to do nothing
             Core.eval(Base, :(exit() = nothing))
+            # Hide the trace that `rmprocs()` will cause this worker to show
+            redirect_stderr(devnull)
         end
         wait(rmprocs([w]))
     end
@@ -1927,5 +1929,5 @@ end
 
 # Run topology tests last after removing all workers, since a given
 # cluster at any time only supports a single topology.
-rmprocs(workers())
+nprocs() > 1 && rmprocs(workers())
 include("topology.jl")
diff --git a/test/topology.jl b/test/topology.jl
index fc969323bc5874..a24efb2642162e 100644
--- a/test/topology.jl
+++ b/test/topology.jl
@@ -134,7 +134,7 @@ for (i, (from,to)) in enumerate(combinations)
 end
 
 # With lazy=false, all connections ought to be setup during `addprocs`
-rmprocs(workers())
+nprocs() > 1 && rmprocs(workers())
 addprocs_with_testenv(8; lazy=false)
 def_count_conn()
 @test sum(asyncmap(p->remotecall_fetch(count_connected_workers,p), workers())) == 64