Class: DeepCover::Coverage::Persistence

Inherits:
Object
  • Object
show all
Defined in:
lib/deep_cover/coverage.rb

Constant Summary collapse

BASENAME =

rubocop:disable Security/MarshalLoad

'coverage.dc'
TRACKER_TEMPLATE =
'trackers%{unique}.dct'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dest_path, dirname) ⇒ Persistence

Returns a new instance of Persistence.



125
126
127
# File 'lib/deep_cover/coverage.rb', line 125

def initialize(dest_path, dirname)
  @dir_path = Pathname(dest_path).join(dirname).expand_path
end

Instance Attribute Details

#dir_pathObject (readonly)

Returns the value of attribute dir_path.



124
125
126
# File 'lib/deep_cover/coverage.rb', line 124

def dir_path
  @dir_path
end

Instance Method Details

#load(with_trackers: true) ⇒ Object



129
130
131
132
133
# File 'lib/deep_cover/coverage.rb', line 129

def load(with_trackers: true)
  saved?
  load_trackers if with_trackers
  load_coverage
end

#save(coverage) ⇒ Object



135
136
137
138
139
# File 'lib/deep_cover/coverage.rb', line 135

def save(coverage)
  create_if_needed
  delete_trackers
  save_coverage(coverage)
end

#save_trackers(global) ⇒ Object



141
142
143
144
145
146
147
148
149
150
151
152
153
# File 'lib/deep_cover/coverage.rb', line 141

def save_trackers(global)
  saved?
  trackers = eval(global) # rubocop:disable Security/Eval
  # Some testing involves more than one process, some of which don't run any of our covered code.
  # Don't save anything if that's the case
  return if trackers.nil?
  basename = format(TRACKER_TEMPLATE, unique: SecureRandom.urlsafe_base64)
  dir_path.join(basename).binwrite(Marshal.dump(
                                       version: DeepCover::VERSION,
                                       global: global,
                                       trackers: trackers,
  ))
end

#saved?Boolean

Returns:

  • (Boolean)


155
156
157
158
# File 'lib/deep_cover/coverage.rb', line 155

def saved?
  raise "Can't find folder '#{dir_path}'" unless dir_path.exist?
  self
end