Class: TestCollection

Inherits:
Object
  • Object
show all
Defined in:
lib/sfb_scripts/test_running/test_collection.rb

Constant Summary collapse

MultipleWorkingDirectoriesError =
Class.new(StandardError)

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tests_data) ⇒ TestCollection

Returns a new instance of TestCollection.



16
17
18
19
20
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 16

def initialize(tests_data)
  @tests = tests_data.map do |test_data|
    create_test_case(test_data)
  end.compact
end

Instance Attribute Details

#testsObject (readonly)

Returns the value of attribute tests.



14
15
16
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 14

def tests
  @tests
end

Class Method Details

.from_file_path(file_path) ⇒ Object



10
11
12
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 10

def self.from_file_path(file_path)
  new(file_path).from_file_path
end

.parse(grep_result) ⇒ Object



5
6
7
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 5

def self.parse(grep_result)
  new(grep_result[:file], line: grep_result[:line]).parse
end

Instance Method Details

#[](*args) ⇒ Object



38
39
40
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 38

def [](*args)
  tests[*args]
end

#empty?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 22

def empty?
  tests.empty?
end

#firstObject



34
35
36
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 34

def first
  tests.first
end

#full_pathsObject



50
51
52
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 50

def full_paths
  @full_paths ||= tests.map {|t| t.full_path }.uniq
end

#in_one_engine?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 46

def in_one_engine?
  working_dirs.size == 1
end

#in_one_file?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 42

def in_one_file?
  full_paths.size == 1
end

#include_selenium?Boolean

Returns:

  • (Boolean)


66
67
68
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 66

def include_selenium?
  ! selenium_tests.empty?
end

#present?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 26

def present?
  ! empty?
end

#relative_pathsObject



54
55
56
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 54

def relative_paths
  @relative_paths ||= tests.map {|t| t.relative_path }.uniq
end

#relative_paths_in(working_directory) ⇒ Object



62
63
64
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 62

def relative_paths_in(working_directory)
  tests.select {|t| t.working_dir == working_directory}.map {|t| t.relative_path }.uniq
end

#remove_selenium!Object



70
71
72
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 70

def remove_selenium!
  @tests = tests - selenium_tests
end

#selenium_testsObject



74
75
76
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 74

def selenium_tests
  tests.select {|t| t.full_path.match(/selenium/)}
end

#sizeObject



30
31
32
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 30

def size
  tests.size
end

#working_dirObject



78
79
80
81
82
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 78

def working_dir
  raise MultipleWorkingDirectoriesError.new("Can't run tests for more than one engine") unless working_dirs.size == 1

  return working_dirs.first
end

#working_dirsObject



58
59
60
# File 'lib/sfb_scripts/test_running/test_collection.rb', line 58

def working_dirs
  @working_dirs ||= tests.map {|t| t.working_dir }.uniq
end