From 30009356a65350a3f71cd1e26727b9ed113b422f Mon Sep 17 00:00:00 2001 From: Jakob Stoklund Olesen Date: Fri, 16 Sep 2016 17:00:55 -0700 Subject: [PATCH] Move subtest::new() into the parent module. This saves on importing of all the sub-modules that implement new test commands, and it provides a nice overview of what 'cton-util test' can do. --- src/tools/filetest/mod.rs | 17 +++++++++++++++++ src/tools/filetest/runner.rs | 3 ++- src/tools/filetest/subtest.rs | 17 +---------------- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/tools/filetest/mod.rs b/src/tools/filetest/mod.rs index b368959125..9126efbfc0 100644 --- a/src/tools/filetest/mod.rs +++ b/src/tools/filetest/mod.rs @@ -4,7 +4,10 @@ //! available test commands. use std::path::Path; +use cton_reader::TestCommand; use CommandResult; +use cat; +use print_cfg; use filetest::runner::TestRunner; pub mod subtest; @@ -34,3 +37,17 @@ pub fn run(files: Vec) -> CommandResult { runner.run() } + +/// Create a new subcommand trait object to match `parsed.command`. +/// +/// This function knows how to create all of the possible `test ` commands that can appear in +/// a .cton test file. +fn new_subtest(parsed: &TestCommand) -> subtest::Result> { + match parsed.command { + "cat" => cat::subtest(parsed), + "print-cfg" => print_cfg::subtest(parsed), + "domtree" => domtree::subtest(parsed), + "verifier" => verifier::subtest(parsed), + _ => Err(format!("unknown test command '{}'", parsed.command)), + } +} diff --git a/src/tools/filetest/runner.rs b/src/tools/filetest/runner.rs index 5f9fac9713..8c9ea87810 100644 --- a/src/tools/filetest/runner.rs +++ b/src/tools/filetest/runner.rs @@ -15,6 +15,7 @@ use utils::read_to_string; use cton_reader::parse_test; use cretonne::ir::Function; use cretonne::verify_function; +use filetest::new_subtest; use filetest::subtest::{self, SubTest, Context}; type TestResult = Result; @@ -218,7 +219,7 @@ impl Job { } // Parse the test commands. let mut tests = - try!(testfile.commands.iter().map(subtest::new).collect::>>()); + try!(testfile.commands.iter().map(new_subtest).collect::>>()); // Sort the tests so the mutators are at the end, and those that // don't need the verifier are at the front diff --git a/src/tools/filetest/subtest.rs b/src/tools/filetest/subtest.rs index cfc5cec5bf..b958193cd8 100644 --- a/src/tools/filetest/subtest.rs +++ b/src/tools/filetest/subtest.rs @@ -3,26 +3,11 @@ use std::result; use std::borrow::Cow; use cretonne::ir::Function; -use cton_reader::{TestCommand, Details}; +use cton_reader::Details; use filecheck::{self, CheckerBuilder, Checker, Value as FCValue}; pub type Result = result::Result; -/// Create a new subcommand trait object to match `parsed.command`. -pub fn new(parsed: &TestCommand) -> Result> { - use cat; - use print_cfg; - use filetest::domtree; - use filetest::verifier; - match parsed.command { - "cat" => cat::subtest(parsed), - "print-cfg" => print_cfg::subtest(parsed), - "domtree" => domtree::subtest(parsed), - "verifier" => verifier::subtest(parsed), - _ => Err(format!("unknown test command '{}'", parsed.command)), - } -} - /// Context for running a a test on a single function. pub struct Context<'a> { /// Additional details about the function from the parser.