lib/physique/task_builders/test.rb in physique-0.3.3 vs lib/physique/task_builders/test.rb in physique-0.3.4

- old
+ new

@@ -1,37 +1,77 @@ +require 'active_support/core_ext/object/blank' + module Physique class TestConfig self.extend Albacore::ConfigDSL # Path to test runner executable attr_path :exe # Path to test runner executable attr_writer :files + # The test runner to use + attr_writer :runner + + # Additional parameters to pass to the test runner + attr_writer :parameters + def opts Map.new({ exe: @exe, - files: @files + runner: @runner, + files: @files, + parameters: @parameters + }).apply({ + runner: :nunit }) end end class TestsTasksBuilder < TasksBuilder def build_tasks add_test_tasks end def add_test_tasks - configuration = solution.compile.configuration - package_dir = solution.nuget.restore_location + options = solution.test + defaults = default_runner_config options desc 'Run unit tests' - test_runner :test => :compile do |tests| - tests.files = FileList["**/*.Tests/bin/#{configuration}/*.Tests.dll"] - tests.exe = locate_tool("#{package_dir}/NUnit.Runners.*/tools/nunit-console.exe") - tests.parameters.add('/labels') - tests.parameters.add('/trace=Verbose') + + if defaults && !defaults[:files].blank? + test_runner :test => :compile do |tests| + tests.files = options.files || defaults[:files] + tests.exe = options.exe || locate_tool(defaults[:exe]) + + defaults[:parameters].each do |p| + tests.parameters.add(p) + end + end + else + task :test => :compile do + puts 'No test assemblies were detected' + end end + end + + private + + def default_runner_config(options) + configuration = solution.compile.configuration + package_dir = solution.nuget.restore_location + + defaults = { + nunit: { + files: FileList["**/*.Tests/bin/#{configuration}/*.Tests.dll"], + exe: "#{package_dir}/NUnit.Runners.*/tools/nunit-console.exe", + parameters: %w(/labels /trace=Verbose)}, + nspec: { + files: FileList["**/*.Specs/bin/#{configuration}/*.Specs.dll"], + exe: "#{package_dir}/nspec.*/tools/NSpecRunner.exe", + parameters: []}} + + defaults[options.runner] end end end \ No newline at end of file