Index: tracing-subscriber/Cargo.toml
===================================================================
--- tracing-subscriber.orig/Cargo.toml
+++ tracing-subscriber/Cargo.toml
@@ -202,21 +202,25 @@ path = "tests/vec_subscriber_filter_inte
 
 [[bench]]
 name = "enter"
+required-features = ["fmt", "std"]
 path = "benches/enter.rs"
 harness = false
 
 [[bench]]
 name = "filter"
+required-features = ["env-filter", "std"]
 path = "benches/filter.rs"
 harness = false
 
 [[bench]]
 name = "filter_log"
+required-features = ["env-filter", "std"]
 path = "benches/filter_log.rs"
 harness = false
 
 [[bench]]
 name = "fmt"
+required-features = ["fmt", "std"]
 path = "benches/fmt.rs"
 harness = false
 
Index: tracing-subscriber/src/fmt/fmt_layer.rs
===================================================================
--- tracing-subscriber.orig/src/fmt/fmt_layer.rs
+++ tracing-subscriber/src/fmt/fmt_layer.rs
@@ -1313,6 +1313,7 @@ mod test {
         re.replace_all(s.as_str(), "timing").to_string()
     }
 
+    #[cfg(feature = "ansi")]
     #[test]
     fn format_error_print_to_stderr() {
         struct AlwaysError;
@@ -1350,6 +1351,7 @@ mod test {
         );
     }
 
+    #[cfg(feature = "ansi")]
     #[test]
     fn format_error_ignore_if_log_internal_errors_is_false() {
         struct AlwaysError;
@@ -1376,6 +1378,7 @@ mod test {
         assert_eq!("", actual.as_str());
     }
 
+    #[cfg(feature = "ansi")]
     #[test]
     fn synthesize_span_none() {
         let make_writer = MockMakeWriter::default();
@@ -1395,6 +1398,7 @@ mod test {
         assert_eq!("", actual.as_str());
     }
 
+    #[cfg(feature = "ansi")]
     #[test]
     fn synthesize_span_active() {
         let make_writer = MockMakeWriter::default();
@@ -1418,6 +1422,7 @@ mod test {
         );
     }
 
+    #[cfg(feature = "ansi")]
     #[test]
     fn synthesize_span_close() {
         let make_writer = MockMakeWriter::default();
@@ -1440,6 +1445,7 @@ mod test {
         );
     }
 
+    #[cfg(feature = "ansi")]
     #[test]
     fn synthesize_span_close_no_timing() {
         let make_writer = MockMakeWriter::default();
@@ -1463,6 +1469,7 @@ mod test {
         );
     }
 
+    #[cfg(feature = "ansi")]
     #[test]
     fn synthesize_span_full() {
         let make_writer = MockMakeWriter::default();
@@ -1488,6 +1495,7 @@ mod test {
         );
     }
 
+    #[cfg(feature = "ansi")]
     #[test]
     fn make_writer_based_on_meta() {
         struct MakeByTarget {
Index: tracing-subscriber/src/fmt/format/mod.rs
===================================================================
--- tracing-subscriber.orig/src/fmt/format/mod.rs
+++ tracing-subscriber/src/fmt/format/mod.rs
@@ -1784,6 +1784,7 @@ pub(super) mod test {
         assert_info_hello(subscriber, make_writer, "hello\n")
     }
 
+    #[cfg(feature = "ansi")]
     fn test_ansi<T>(
         is_ansi: bool,
         expected: &str,
@@ -1806,13 +1807,14 @@ pub(super) mod test {
         builder: crate::fmt::SubscriberBuilder<DefaultFields, Format<T>>,
     ) where
         Format<T, MockTime>: FormatEvent<crate::Registry, DefaultFields>,
-        T: Send + Sync,
+        T: Send + Sync + 'static,
     {
         let make_writer = MockMakeWriter::default();
-        let subscriber = builder.with_writer(make_writer).with_timer(MockTime);
+        let subscriber = builder.with_writer(make_writer.clone()).with_timer(MockTime);
         run_test(subscriber, make_writer, expected)
     }
 
+    #[cfg(feature = "ansi")]
     fn test_without_level<T>(
         expected: &str,
         builder: crate::fmt::SubscriberBuilder<DefaultFields, Format<T>>,
@@ -1829,6 +1831,7 @@ pub(super) mod test {
         run_test(subscriber, make_writer, expected);
     }
 
+    #[cfg(feature = "ansi")]
     #[test]
     fn with_line_number_and_file_name() {
         let make_writer = MockMakeWriter::default();
@@ -1854,6 +1857,7 @@ pub(super) mod test {
         assert!(expected.is_match(&res),"string {:?} did not match pattern {:?}",res,expected);
     }
 
+    #[cfg(feature = "ansi")]
     #[test]
     fn with_line_number() {
         let make_writer = MockMakeWriter::default();
@@ -1873,6 +1877,7 @@ pub(super) mod test {
         assert!(expected.is_match(&res));
     }
 
+    #[cfg(feature = "ansi")]
     #[test]
     fn with_filename() {
         let make_writer = MockMakeWriter::default();
@@ -1889,6 +1894,7 @@ pub(super) mod test {
         assert_info_hello(subscriber, make_writer, expected);
     }
 
+    #[cfg(feature = "ansi")]
     #[test]
     fn with_thread_ids() {
         let make_writer = MockMakeWriter::default();
@@ -1903,6 +1909,7 @@ pub(super) mod test {
         assert_info_hello_ignore_numeric(subscriber, make_writer, expected);
     }
 
+    #[cfg(feature = "ansi")]
     #[test]
     fn pretty_default() {
         let make_writer = MockMakeWriter::default();
@@ -1947,6 +1954,7 @@ pub(super) mod test {
         assert_eq!(expected, result_cleaned)
     }
 
+    #[cfg(feature = "ansi")]
     fn test_overridden_parents<T>(
         expected: &str,
         builder: crate::fmt::SubscriberBuilder<DefaultFields, Format<T>>,
@@ -1970,6 +1978,7 @@ pub(super) mod test {
         assert_eq!(expected, make_writer.get_string());
     }
 
+    #[cfg(feature = "ansi")]
     fn test_overridden_parents_in_scope<T>(
         expected1: &str,
         expected2: &str,
@@ -2009,6 +2018,7 @@ pub(super) mod test {
     mod default {
         use super::*;
 
+        #[cfg(feature = "ansi")]
         #[test]
         fn with_thread_ids() {
             let make_writer = MockMakeWriter::default();
@@ -2044,18 +2054,21 @@ pub(super) mod test {
             test_without_ansi(expected, crate::fmt::Subscriber::builder())
         }
 
+        #[cfg(feature = "ansi")]
         #[test]
         fn without_level() {
             let expected = "fake time tracing_subscriber::fmt::format::test: hello\n";
             test_without_level(expected, crate::fmt::Subscriber::builder())
         }
 
+        #[cfg(feature = "ansi")]
         #[test]
         fn overridden_parents() {
             let expected = "fake time span1{span=1}:span2{span=2}: tracing_subscriber::fmt::format::test: hello\n";
             test_overridden_parents(expected, crate::fmt::Subscriber::builder())
         }
 
+        #[cfg(feature = "ansi")]
         #[test]
         fn overridden_parents_in_scope() {
             test_overridden_parents_in_scope(
@@ -2090,18 +2103,21 @@ pub(super) mod test {
             test_without_ansi(expected, crate::fmt::Subscriber::builder().compact())
         }
 
+        #[cfg(feature = "ansi")]
         #[test]
         fn without_level() {
             let expected = "fake time tracing_subscriber::fmt::format::test: hello\n";
             test_without_level(expected, crate::fmt::Subscriber::builder().compact());
         }
 
+        #[cfg(feature = "ansi")]
         #[test]
         fn overridden_parents() {
             let expected = "fake time span1:span2: tracing_subscriber::fmt::format::test: hello span=1 span=2\n";
             test_overridden_parents(expected, crate::fmt::Subscriber::builder().compact())
         }
 
+        #[cfg(feature = "ansi")]
         #[test]
         fn overridden_parents_in_scope() {
             test_overridden_parents_in_scope(
@@ -2115,6 +2131,7 @@ pub(super) mod test {
     mod pretty {
         use super::*;
 
+        #[cfg(feature = "ansi")]
         #[test]
         fn pretty_default() {
             let make_writer = MockMakeWriter::default();
Index: tracing-subscriber/tests/env_filter/main.rs
===================================================================
--- tracing-subscriber.orig/tests/env_filter/main.rs
+++ tracing-subscriber/tests/env_filter/main.rs
@@ -1,4 +1,4 @@
-#![cfg(feature = "env-filter")]
+#![cfg(all(feature = "env-filter", feature = "registry"))]
 
 mod per_layer;
 
Index: tracing-subscriber/tests/ansi_escaping.rs
===================================================================
--- tracing-subscriber.orig/tests/ansi_escaping.rs
+++ tracing-subscriber/tests/ansi_escaping.rs
@@ -1,3 +1,4 @@
+#![cfg(all(feature = "fmt", feature = "std"))]
 use std::sync::{Arc, Mutex};
 use tracing_subscriber::fmt::MakeWriter;
 
