Class: DeepCover::Coverage::Persistence

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

Constant Summary collapse

BASENAME =
'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.



11
12
13
# File 'lib/deep_cover/coverage/persistence.rb', line 11

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.



10
11
12
# File 'lib/deep_cover/coverage/persistence.rb', line 10

def dir_path
  @dir_path
end

Instance Method Details

#load(with_trackers: true) ⇒ Object



15
16
17
18
19
20
# File 'lib/deep_cover/coverage/persistence.rb', line 15

def load(with_trackers: true)
  saved?
  cov = load_coverage
  cov.tracker_storage_per_path.tracker_hits_per_path = load_trackers if with_trackers
  cov
end

#save(coverage) ⇒ Object



22
23
24
25
26
# File 'lib/deep_cover/coverage/persistence.rb', line 22

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

#save_trackers(tracker_hits_per_path) ⇒ Object



28
29
30
31
32
33
34
35
# File 'lib/deep_cover/coverage/persistence.rb', line 28

def save_trackers(tracker_hits_per_path)
  saved?
  basename = format(TRACKER_TEMPLATE, unique: SecureRandom.urlsafe_base64)
  dir_path.join(basename).binwrite(Marshal.dump(
                                       version: DeepCover::VERSION,
                                       tracker_hits_per_path: tracker_hits_per_path,
  ))
end

#saved?Boolean

Returns:

  • (Boolean)


37
38
39
40
# File 'lib/deep_cover/coverage/persistence.rb', line 37

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