From 84224775c83312c022a503cf162121f404327bca Mon Sep 17 00:00:00 2001 From: Travis Collins Date: Fri, 8 Jul 2022 17:22:17 -0600 Subject: [PATCH] add --create flag --- README.md | 9 +++++++++ lib/turbo_tests/cli.rb | 9 +++++++++ lib/turbo_tests/runner.rb | 8 ++++++++ spec/turbo_tests_spec.rb | 22 ++++++++++++++++++++++ 4 files changed, 48 insertions(+) diff --git a/README.md b/README.md index 0b0b124..5c3a299 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,14 @@ Or install it yourself as: $ gem install turbo_tests ``` +## Setup + +Create test databases + +```bash +$ bundle exec turbo_tests --create +``` + ## Usage Execute tests: @@ -85,6 +93,7 @@ Options: --runtime-log FILE Location of previously recorded test runtimes -v, --verbose More output --fail-fast=[N] + --create Create test databases ``` ## Development diff --git a/lib/turbo_tests/cli.rb b/lib/turbo_tests/cli.rb index 52beab2..b0ff113 100644 --- a/lib/turbo_tests/cli.rb +++ b/lib/turbo_tests/cli.rb @@ -16,6 +16,7 @@ def run runtime_log = nil verbose = false fail_fast = nil + create = false OptionParser.new { |opts| opts.banner = <<~BANNER @@ -76,8 +77,16 @@ def run end fail_fast = n.nil? || n < 1 ? 1 : n end + + opts.on("--create", "Create databases") do + create = true + end }.parse!(@argv) + if create + return TurboTests::Runner.create(count) + end + requires.each { |f| require(f) } if formatters.empty? diff --git a/lib/turbo_tests/runner.rb b/lib/turbo_tests/runner.rb index 92259dc..9a90a83 100644 --- a/lib/turbo_tests/runner.rb +++ b/lib/turbo_tests/runner.rb @@ -2,6 +2,7 @@ require "json" require "parallel_tests/rspec/runner" +require "parallel_tests/tasks" require_relative "../utils/hash_extension" @@ -9,6 +10,13 @@ module TurboTests class Runner using CoreExtensions + def self.create(count) + ENV["PARALLEL_TEST_FIRST_IS_1"] = "true" + command = ["bundle", "exec", "rake", "db:create", "RAILS_ENV=#{ParallelTests::Tasks.rails_env}"] + args = { count: count.to_s } + ParallelTests::Tasks.run_in_parallel(command, args) + end + def self.run(opts = {}) files = opts[:files] formatters = opts[:formatters] diff --git a/spec/turbo_tests_spec.rb b/spec/turbo_tests_spec.rb index 0ee2784..541ca3a 100644 --- a/spec/turbo_tests_spec.rb +++ b/spec/turbo_tests_spec.rb @@ -2,4 +2,26 @@ it "has a version number" do expect(TurboTests::VERSION).not_to be nil end + + describe "create" do + context "with nil count" do + it "creates databases" do + expect(ParallelTests::Tasks) + .to receive(:run_in_parallel) + .with(["bundle", "exec", "rake", "db:create", "RAILS_ENV=test"], {:count=>""}) + + TurboTests::Runner.create(nil) + end + end + + context "with count" do + it "creates databases" do + expect(ParallelTests::Tasks) + .to receive(:run_in_parallel) + .with(["bundle", "exec", "rake", "db:create", "RAILS_ENV=test"], {:count=>"4"}) + + TurboTests::Runner.create(4) + end + end + end end