Class: Liri::Common::UnitTest::Rspec

Inherits:
Object
  • Object
show all
Defined in:
lib/common/unit_test/rspec.rb

Constant Summary collapse

TESTS_FOLDER_NAME =
'spec'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source_code_folder_path) ⇒ Rspec

Returns a new instance of Rspec.



8
9
10
11
# File 'lib/common/unit_test/rspec.rb', line 8

def initialize(source_code_folder_path)
  @source_code_folder_path = source_code_folder_path
  @tests_folder_path = File.join(source_code_folder_path, TESTS_FOLDER_NAME)
end

Instance Attribute Details

#tests_folder_pathObject (readonly)

Returns the value of attribute tests_folder_path.



6
7
8
# File 'lib/common/unit_test/rspec.rb', line 6

def tests_folder_path
  @tests_folder_path
end

Instance Method Details

#all_testsObject

Retorna un hash con todos los tests. Ex.: 2=>“spec/hash_spec.rb:13”, 3=>“spec/hash_spec.rb:24”, …, 29=>“spec/liri_spec.rb:62”



14
15
16
17
18
19
20
21
22
23
# File 'lib/common/unit_test/rspec.rb', line 14

def all_tests
  tests_count = 1
  tests_hash = {}
  sorted_test_files = test_files.sort
  sorted_test_files.each do |test_file|
    tests_hash[tests_count] = test_file.sub(@source_code_folder_path + '/', '')
    tests_count += 1
  end
  tests_hash
end

#run_tests(tests) ⇒ Object

Recibe un arreglo de rutas a las pruebas unitarias Ejecuta las pruebas unitarias y retorna el resultado como un hash



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/common/unit_test/rspec.rb', line 27

def run_tests(tests)
  # Se puede ejecutar comandos en líneas de comandos usando system(cli_command) o %x|cli_command|
  # system devuelve true, false o nil, %x devuelve la salida del comando ejecutado
  # From:
  #      https://www.rubyguides.com/2018/12/ruby-system/

  #system("bundle exec rspec #{tests_paths} --format progress --out rspec_result.txt --no-color")
  # El comando chdir hace que el directorio de trabajo se mueva a la carpeta en donde se descomprimió el código fuente para poder ejecutar las pruebas
  Dir.chdir(@source_code_folder_path) do
    # Descomentar para la depuración en entorno de desarrollo (Creo que aún así no se puede depurar)
    # raw_tests_result = %x|bundle exec rspec #{tests.join(' ')} --format progress|
    # Descomentar para el entorno de producción
    raw_tests_result = ''
    Liri::Common::Benchmarking.start(start_msg: "Running tests batch. Wait... ") do
      raw_tests_result = %x|bash -lc 'rvm use #{Liri.current_folder_ruby_and_gemset}; rspec #{tests.join(' ')}'|
    end

    return raw_tests_result
  end
end