about summary refs log tree commit diff
path: root/src/libsyntax/test.rs
diff options
context:
space:
mode:
authorNick Cameron <ncameron@mozilla.com>2015-03-16 09:00:41 +1300
committerNick Cameron <ncameron@mozilla.com>2015-03-16 11:03:54 +1300
commit432011d1437ce046c25dde8a4db67dac63c19ed0 (patch)
treea58820426c5f3e925c3cdb0d11faf4d408ee37c4 /src/libsyntax/test.rs
parent170ccd615f976fc9e90a8f14ce6c373bfdf01533 (diff)
downloadrust-432011d1437ce046c25dde8a4db67dac63c19ed0.tar.gz
rust-432011d1437ce046c25dde8a4db67dac63c19ed0.zip
Fallout in testing.
Diffstat (limited to 'src/libsyntax/test.rs')
-rw-r--r--src/libsyntax/test.rs17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/libsyntax/test.rs b/src/libsyntax/test.rs
index 5e858d8a79f..991ab77419f 100644
--- a/src/libsyntax/test.rs
+++ b/src/libsyntax/test.rs
@@ -121,13 +121,11 @@ impl<'a> fold::Folder for TestHarnessGenerator<'a> {
         debug!("current path: {}",
                ast_util::path_name_i(&self.cx.path));
 
-        if is_test_fn(&self.cx, &*i) || is_bench_fn(&self.cx, &*i) {
+        let i = if is_test_fn(&self.cx, &*i) || is_bench_fn(&self.cx, &*i) {
             match i.node {
                 ast::ItemFn(_, ast::Unsafety::Unsafe, _, _, _) => {
                     let diag = self.cx.span_diagnostic;
-                    diag.span_fatal(i.span,
-                                    "unsafe functions cannot be used for \
-                                     tests");
+                    diag.span_fatal(i.span, "unsafe functions cannot be used for tests");
                 }
                 _ => {
                     debug!("this is a test function");
@@ -142,9 +140,18 @@ impl<'a> fold::Folder for TestHarnessGenerator<'a> {
                     self.tests.push(i.ident);
                     // debug!("have {} test/bench functions",
                     //        cx.testfns.len());
+
+                    // Make all tests public so we can call them from outside
+                    // the module (note that the tests are re-exported and must
+                    // be made public themselves to avoid privacy errors).
+                    let mut result = (*i).clone();
+                    result.vis = ast::Public;
+                    P(result)
                 }
             }
-        }
+        } else {
+            i
+        };
 
         // We don't want to recurse into anything other than mods, since
         // mods or tests inside of functions will break things