lib/assert/assert_runner.rb in assert-2.3.2 vs lib/assert/assert_runner.rb in assert-2.3.3

- old
+ new

@@ -1,26 +1,59 @@ +require 'assert/cli' + module Assert class AssertRunner TEST_FILE_SUFFIXES = ['_tests.rb', '_test.rb'] USER_SETTINGS_FILE = ".assert/init.rb" LOCAL_SETTINGS_FILE = ".assert.rb" - def initialize(test_paths, test_options) - require 'assert' # inits config singleton with the default settings + DEFAULT_CHANGED_FILES_PROC = Proc.new do |test_paths| + # use git to determine which files have changes + files = [] + cmd = [ + "git diff --no-ext-diff --name-only", # changed files + "git ls-files --others --exclude-standard" # added files + ].map{ |c| "#{c} -- #{test_paths.join(' ')}" }.join(' && ') - apply_user_settings - apply_local_settings - apply_option_settings(test_options) - apply_env_settings + Assert::CLI.bench('Load only changed files') do + files = `#{cmd}`.split("\n") + end + puts Assert::CLI.debug_msg(" `#{cmd}`") if Assert.config.debug + files + end + def initialize(test_paths, test_options) + Assert::CLI.bench('Apply settings') do + apply_user_settings + apply_local_settings + apply_option_settings(test_options) + apply_env_settings + end + files = test_files(test_paths.empty? ? [*Assert.config.test_dir] : test_paths) - Assert.init(files, { - :test_dir_path => path_of(Assert.config.test_dir, files.first) - }) + init(files, path_of(Assert.config.test_dir, files.first)) end + def init(test_files, test_dir) + # load any test helper file + if test_dir && (h = File.join(test_dir, Config.test_helper)) && File.exists?(h) + Assert::CLI.bench('Require test helper'){ require h } + end + + # load the test files + Assert.view.fire(:before_load, test_files) + Assert::CLI.bench("Require #{test_files.count} test files") do + test_files.each{ |p| require p } + end + if Assert.config.debug + puts Assert::CLI.debug_msg("Test files:") + test_files.each{ |f| puts Assert::CLI.debug_msg(" #{f}") } + end + Assert.view.fire(:after_load) + end + def run Assert.runner.run(Assert.suite, Assert.view) end protected @@ -54,10 +87,9 @@ file_paths.select{ |p| is_test_file?(p) }.sort end def changed_test_files(test_paths) - puts "Loading only changed files:" if Assert.config.debug globbed_test_files(Assert.config.changed_files.call(test_paths)) end def globbed_test_files(test_paths) test_paths.inject(Set.new) do |paths, path|