about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-08-13 22:34:03 -0700
committerBrian Anderson <banderson@mozilla.com>2011-08-16 10:29:08 -0700
commit184eac90ab5e5e1e52d24b6711813bf3b66c1fea (patch)
tree89fd0cba27a43f1a1b646198dcc729bdbe3cf350
parent053b8bff5a81a0cb6c347f8c371fa5b66f48dbda (diff)
downloadrust-184eac90ab5e5e1e52d24b6711813bf3b66c1fea.tar.gz
rust-184eac90ab5e5e1e52d24b6711813bf3b66c1fea.zip
Add and use an ivec interface to std::test
-rw-r--r--src/comp/front/test.rs6
-rw-r--r--src/lib/test.rs13
2 files changed, 11 insertions, 8 deletions
diff --git a/src/comp/front/test.rs b/src/comp/front/test.rs
index 5d6cc62c37d..77cf7e3daed 100644
--- a/src/comp/front/test.rs
+++ b/src/comp/front/test.rs
@@ -135,7 +135,7 @@ We're going to be building a module that looks more or less like:
 
 mod __test {
 
-  fn main(vec[str] args) -> int {
+  fn main(args: [str]) -> int {
     std::test::test_main(args, tests())
   }
 
@@ -285,7 +285,7 @@ fn mk_test_desc_rec(cx: &test_ctxt, test: test) -> @ast::expr {
 fn mk_main(cx: &test_ctxt) -> @ast::item {
 
     let args_mt: ast::mt = {ty: @nospan(ast::ty_str), mut: ast::imm};
-    let args_ty: ast::ty = nospan(ast::ty_vec(args_mt));
+    let args_ty: ast::ty = nospan(ast::ty_ivec(args_mt));
 
     let args_arg: ast::arg =
         {mode: ast::val, ty: @args_ty, ident: "args", id: cx.next_node_id()};
@@ -355,7 +355,7 @@ fn mk_test_main_call(cx: &test_ctxt) -> @ast::expr {
     // Call std::test::test_main
     let test_main_path: ast::path =
         nospan({global: false,
-                idents: ~["std", "test", "test_main"],
+                idents: ~["std", "test", "test_main_ivec"],
                 types: ~[]});
 
     let test_main_path_expr_: ast::expr_ = ast::expr_path(test_main_path);
diff --git a/src/lib/test.rs b/src/lib/test.rs
index d6b151dd18f..cdd99874c8a 100644
--- a/src/lib/test.rs
+++ b/src/lib/test.rs
@@ -10,6 +10,7 @@ export test_name;
 export test_fn;
 export test_desc;
 export test_main;
+export test_main_ivec;
 export test_result;
 export test_opts;
 export tr_ok;
@@ -48,18 +49,20 @@ type test_desc = {name: test_name, fn: test_fn, ignore: bool};
 
 // The default console test runner. It accepts the command line
 // arguments and a vector of test_descs (generated at compile time).
-fn test_main(args: &vec[str], tests: &[test_desc]) {
-    let ivec_args =
-        { let iargs = ~[]; for arg: str in args { iargs += ~[arg] } iargs };
-    check (ivec::is_not_empty(ivec_args));
+fn test_main_ivec(args: &[str], tests: &[test_desc]) {
+    check (ivec::is_not_empty(args));
     let opts =
-        alt parse_opts(ivec_args) {
+        alt parse_opts(args) {
           either::left(o) { o }
           either::right(m) { fail m }
         };
     if !run_tests_console(opts, tests) { fail "Some tests failed"; }
 }
 
+fn test_main(args: &vec[str], tests: &[test_desc]) {
+    test_main_ivec(ivec::from_vec(args), tests);
+}
+
 type test_opts = {filter: option::t[str], run_ignored: bool};
 
 type opt_res = either::t[test_opts, str];