test_bench-session 2.0.0.0 → 2.1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/lib/test_bench/session/controls/comment.rb +93 -4
  3. data/lib/test_bench/session/controls/detail.rb +79 -4
  4. data/lib/test_bench/session/controls/event.rb +7 -0
  5. data/lib/test_bench/session/controls/events/commented.rb +91 -10
  6. data/lib/test_bench/session/controls/events/context_finished.rb +49 -11
  7. data/lib/test_bench/session/controls/events/context_skipped.rb +26 -8
  8. data/lib/test_bench/session/controls/events/context_started.rb +44 -9
  9. data/lib/test_bench/session/controls/events/detailed.rb +91 -10
  10. data/lib/test_bench/session/controls/{capture_sink/event.rb → events/event_data.rb} +2 -2
  11. data/lib/test_bench/session/controls/events/failed.rb +27 -15
  12. data/lib/test_bench/session/controls/events/fixture_finished.rb +32 -11
  13. data/lib/test_bench/session/controls/events/fixture_started.rb +26 -8
  14. data/lib/test_bench/session/controls/events/test_finished.rb +49 -11
  15. data/lib/test_bench/session/controls/events/test_skipped.rb +26 -8
  16. data/lib/test_bench/session/controls/events/test_started.rb +44 -9
  17. data/lib/test_bench/session/controls/events.rb +15 -9
  18. data/lib/test_bench/session/controls/exception.rb +28 -10
  19. data/lib/test_bench/session/controls/failure.rb +5 -16
  20. data/lib/test_bench/session/controls/fixture.rb +7 -4
  21. data/lib/test_bench/session/controls/output/detail.rb +29 -0
  22. data/lib/test_bench/session/controls/output.rb +55 -0
  23. data/lib/test_bench/session/controls/random.rb +1 -1
  24. data/lib/test_bench/session/controls/result.rb +15 -4
  25. data/lib/test_bench/session/controls/{capture_sink → substitute}/path.rb +6 -3
  26. data/lib/test_bench/session/controls/title.rb +24 -12
  27. data/lib/test_bench/session/controls.rb +12 -12
  28. data/lib/test_bench/session/events.rb +7 -14
  29. data/lib/test_bench/session/output/get.rb +27 -0
  30. data/lib/test_bench/session/output/writer/buffer/interactive/viewport.rb +164 -0
  31. data/lib/test_bench/session/output/writer/buffer/interactive.rb +139 -0
  32. data/lib/test_bench/session/output/writer/buffer.rb +27 -0
  33. data/lib/test_bench/session/output/writer/defaults.rb +17 -0
  34. data/lib/test_bench/session/output/writer/substitute.rb +17 -0
  35. data/lib/test_bench/session/output/writer.rb +95 -0
  36. data/lib/test_bench/session/output.rb +375 -0
  37. data/lib/test_bench/session/projection.rb +28 -0
  38. data/lib/test_bench/session/session.rb +51 -65
  39. data/lib/test_bench/session/store.rb +59 -0
  40. data/lib/test_bench/session/substitute/path.rb +63 -0
  41. data/lib/test_bench/session/substitute/sink.rb +104 -0
  42. data/lib/test_bench/session/substitute.rb +17 -34
  43. data/lib/test_bench/session.rb +16 -5
  44. metadata +22 -17
  45. data/lib/test_bench/session/controls/capture_sink/record.rb +0 -19
  46. data/lib/test_bench/session/controls/events/aborted.rb +0 -29
  47. data/lib/test_bench/session/controls/events/file_finished.rb +0 -32
  48. data/lib/test_bench/session/controls/events/file_started.rb +0 -29
  49. data/lib/test_bench/session/controls/events/finished.rb +0 -32
  50. data/lib/test_bench/session/controls/events/started.rb +0 -29
  51. data/lib/test_bench/session/controls/file.rb +0 -58
  52. data/lib/test_bench/session/telemetry/capture_sink/path.rb +0 -65
  53. data/lib/test_bench/session/telemetry/capture_sink/record.rb +0 -39
  54. data/lib/test_bench/session/telemetry/capture_sink.rb +0 -63
@@ -0,0 +1,63 @@
1
+ module TestBench
2
+ class Session
3
+ module Substitute
4
+ class Path
5
+ def segments
6
+ @segments ||= []
7
+ end
8
+ attr_writer :segments
9
+
10
+ def match?(*segments, segment)
11
+ if not segment == self.segments.last
12
+ return false
13
+ end
14
+
15
+ segment_iterator = self.segments.to_enum
16
+
17
+ control_segments = [*segments, segment]
18
+
19
+ control_segments.all? do |control_segment|
20
+ begin
21
+ next_segment = segment_iterator.next
22
+ end until next_segment == control_segment
23
+ true
24
+
25
+ rescue StopIteration
26
+ false
27
+ end
28
+ end
29
+
30
+ def push_segment(segment)
31
+ segments << segment
32
+ end
33
+ alias :push :push_segment
34
+ alias :<< :push
35
+
36
+ def pop_segment(compare_segment=nil)
37
+ segments.pop
38
+ end
39
+ alias :pop :pop_segment
40
+
41
+ def copy(receiver)
42
+ path = self.class.new
43
+
44
+ segments.each do |segment|
45
+ path << segment
46
+ end
47
+
48
+ receiver.path = path
49
+ path
50
+ end
51
+
52
+ def eql?(compare)
53
+ if compare.is_a?(self.class)
54
+ segments == compare.segments
55
+ else
56
+ false
57
+ end
58
+ end
59
+ alias :== :eql?
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,104 @@
1
+ module TestBench
2
+ class Session
3
+ module Substitute
4
+ class Sink
5
+ include Telemetry::Sink
6
+ include Events
7
+
8
+ def records
9
+ @records ||= []
10
+ end
11
+ attr_writer :records
12
+
13
+ def path
14
+ @path ||= Path.new
15
+ end
16
+ attr_writer :path
17
+
18
+ def receive(event_data)
19
+ event_type = event_data.type
20
+
21
+ case event_data.type
22
+ when :TestStarted, :ContextStarted
23
+ title, * = event_data.data
24
+ path.push(title)
25
+ when :TestFinished, :ContextFinished
26
+ title, * = event_data.data
27
+ path.pop(title)
28
+ end
29
+
30
+ record = Record.new(event_data)
31
+ path.copy(record)
32
+
33
+ case event_data.type
34
+ when :TestFinished, :ContextFinished
35
+ title, * = event_data.data
36
+ record.path.push(title)
37
+ when :Commented, :Detailed
38
+ comment_text, * = event_data.data
39
+ record.path.push(comment_text)
40
+ end
41
+
42
+ records.push(record)
43
+
44
+ record
45
+ end
46
+
47
+ def received?(event_data=nil)
48
+ if not event_data.nil?
49
+ records.any? do |record|
50
+ record.event_data == event_data
51
+ end
52
+ else
53
+ records.any?
54
+ end
55
+ end
56
+
57
+ def one_event?(event_class, *path_segments, **attributes)
58
+ event_sink = event_sink(*path_segments)
59
+ event_sink.one_event?(event_class, **attributes)
60
+ end
61
+
62
+ def one_event(event_class, *path_segments, **attributes)
63
+ event_sink = event_sink(*path_segments)
64
+ event_sink.one_event(event_class, **attributes)
65
+ end
66
+
67
+ def any_event?(event_class, *path_segments, **attributes)
68
+ event_sink = event_sink(*path_segments)
69
+ event_sink.any_event?(event_class, **attributes)
70
+ end
71
+ alias :event? :any_event?
72
+
73
+ def events(event_class, *path_segments, **attributes)
74
+ event_sink = event_sink(*path_segments)
75
+ event_sink.events(event_class, **attributes)
76
+ end
77
+
78
+ def event_sink(*path_segments)
79
+ event_sink = Telemetry::Substitute::Sink.new
80
+
81
+ records.each do |record|
82
+ if record.match?(path_segments)
83
+ event_data = record.event_data
84
+
85
+ event_sink.receive(event_data)
86
+ end
87
+ end
88
+
89
+ event_sink
90
+ end
91
+
92
+ Record = Struct.new(:event_data, :path) do
93
+ def match?(path_segments)
94
+ if path_segments.any?
95
+ path.match?(*path_segments)
96
+ else
97
+ true
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
@@ -8,56 +8,45 @@ module TestBench
8
8
  class Session < Session
9
9
  attr_accessor :result
10
10
 
11
+ def sink
12
+ @sink ||= Sink.new
13
+ end
14
+ attr_writer :sink
15
+
11
16
  def self.build
12
17
  instance = new
13
18
 
14
19
  telemetry = instance.telemetry
15
- Telemetry::CaptureSink.configure(telemetry, attr_name: :sink)
16
-
17
- telemetry.register(telemetry.sink)
20
+ telemetry.register(instance.sink)
18
21
 
19
22
  instance
20
23
  end
21
24
 
22
- def file(path)
23
- telemetry.record(Events::FileStarted.new(path))
24
-
25
- telemetry.record(Events::FileFinished.new(path, result))
26
-
27
- result
28
- end
29
-
30
25
  Events.each_type do |event_type|
31
- event_type_method_cased = TestBench::Telemetry::Event::Type.method_cased(event_type)
26
+ event_name = TestBench::Telemetry::Event::EventName.get(event_type)
32
27
 
33
28
  event_class = Events.const_get(event_type, false)
34
29
 
35
30
  module_eval(<<~RUBY, __FILE__, __LINE__)
36
- def one_#{event_type_method_cased}_event?(...)
31
+ def one_#{event_name}_event?(...)
37
32
  one_event?(#{event_class}, ...)
38
33
  end
39
34
 
40
- def one_#{event_type_method_cased}_event(...)
35
+ def one_#{event_name}_event(...)
41
36
  one_event(#{event_class}, ...)
42
37
  end
43
38
 
44
- def any_#{event_type_method_cased}_event?(...)
39
+ def any_#{event_name}_event?(...)
45
40
  any_event?(#{event_class}, ...)
46
41
  end
47
- alias :#{event_type_method_cased}_event? :any_#{event_type_method_cased}_event?
42
+ alias :#{event_name}_event? :any_#{event_name}_event?
48
43
 
49
- def #{event_type_method_cased}_events(...)
44
+ def #{event_name}_events(...)
50
45
  events(#{event_class}, ...)
51
46
  end
52
47
  RUBY
53
48
  end
54
49
 
55
- def one_event?(...) = telemetry.one_event?(...)
56
- def one_event(...) = telemetry.one_event(...)
57
- def any_event?(...) = telemetry.any_event?(...)
58
- alias :event? :any_event?
59
- def events(...) = telemetry.events(...)
60
-
61
50
  alias :failure? :failed_event?
62
51
  alias :one_failure? :one_failed_event?
63
52
 
@@ -76,17 +65,11 @@ module TestBench
76
65
  alias :fixture? :fixture_finished_event?
77
66
  alias :one_fixture? :one_fixture_finished_event?
78
67
 
79
- alias :file? :file_finished_event?
80
- alias :one_file? :one_file_finished_event?
81
-
82
- alias :started? :started_event?
83
- alias :one_started? :one_started_event?
84
-
85
- alias :finished? :finished_event?
86
- alias :one_finished? :one_finished_event?
87
-
88
- alias :aborted? :aborted_event?
89
- alias :one_aborted? :one_aborted_event?
68
+ def one_event?(...) = sink.one_event?(...)
69
+ def one_event(...) = sink.one_event(...)
70
+ def any_event?(...) = sink.any_event?(...)
71
+ alias :event? :any_event?
72
+ def events(...) = sink.events(...)
90
73
  end
91
74
  end
92
75
  end
@@ -1,11 +1,22 @@
1
- require 'test_bench/telemetry'
1
+ require 'test_bench/output'
2
2
 
3
3
  require 'test_bench/session/events'
4
4
 
5
5
  require 'test_bench/session/session'
6
6
 
7
- require 'test_bench/session/telemetry/capture_sink/path'
8
- require 'test_bench/session/telemetry/capture_sink/record'
9
- require 'test_bench/session/telemetry/capture_sink'
10
-
7
+ require 'test_bench/session/substitute/path'
8
+ require 'test_bench/session/substitute/sink'
11
9
  require 'test_bench/session/substitute'
10
+
11
+ require 'test_bench/session/projection'
12
+
13
+ require 'test_bench/session/output/writer'
14
+ require 'test_bench/session/output/writer/defaults'
15
+ require 'test_bench/session/output/writer/substitute'
16
+ require 'test_bench/session/output/writer/buffer/interactive/viewport'
17
+ require 'test_bench/session/output/writer/buffer/interactive'
18
+ require 'test_bench/session/output/writer/buffer'
19
+ require 'test_bench/session/output'
20
+ require 'test_bench/session/output/get'
21
+
22
+ require 'test_bench/session/store'
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test_bench-session
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.0
4
+ version: 2.1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Ladd
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-10 00:00:00.000000000 Z
11
+ date: 2023-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: test_bench-telemetry
14
+ name: test_bench-output
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: test_bench-bootstrap
28
+ name: test_bench-isolated
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -46,43 +46,48 @@ extra_rdoc_files: []
46
46
  files:
47
47
  - lib/test_bench/session.rb
48
48
  - lib/test_bench/session/controls.rb
49
- - lib/test_bench/session/controls/capture_sink/event.rb
50
- - lib/test_bench/session/controls/capture_sink/path.rb
51
- - lib/test_bench/session/controls/capture_sink/record.rb
52
49
  - lib/test_bench/session/controls/comment.rb
53
50
  - lib/test_bench/session/controls/detail.rb
51
+ - lib/test_bench/session/controls/event.rb
54
52
  - lib/test_bench/session/controls/events.rb
55
- - lib/test_bench/session/controls/events/aborted.rb
56
53
  - lib/test_bench/session/controls/events/commented.rb
57
54
  - lib/test_bench/session/controls/events/context_finished.rb
58
55
  - lib/test_bench/session/controls/events/context_skipped.rb
59
56
  - lib/test_bench/session/controls/events/context_started.rb
60
57
  - lib/test_bench/session/controls/events/detailed.rb
58
+ - lib/test_bench/session/controls/events/event_data.rb
61
59
  - lib/test_bench/session/controls/events/failed.rb
62
- - lib/test_bench/session/controls/events/file_finished.rb
63
- - lib/test_bench/session/controls/events/file_started.rb
64
- - lib/test_bench/session/controls/events/finished.rb
65
60
  - lib/test_bench/session/controls/events/fixture_finished.rb
66
61
  - lib/test_bench/session/controls/events/fixture_started.rb
67
- - lib/test_bench/session/controls/events/started.rb
68
62
  - lib/test_bench/session/controls/events/test_finished.rb
69
63
  - lib/test_bench/session/controls/events/test_skipped.rb
70
64
  - lib/test_bench/session/controls/events/test_started.rb
71
65
  - lib/test_bench/session/controls/exception.rb
72
66
  - lib/test_bench/session/controls/failure.rb
73
- - lib/test_bench/session/controls/file.rb
74
67
  - lib/test_bench/session/controls/fixture.rb
68
+ - lib/test_bench/session/controls/output.rb
69
+ - lib/test_bench/session/controls/output/detail.rb
75
70
  - lib/test_bench/session/controls/process_id.rb
76
71
  - lib/test_bench/session/controls/random.rb
77
72
  - lib/test_bench/session/controls/result.rb
73
+ - lib/test_bench/session/controls/substitute/path.rb
78
74
  - lib/test_bench/session/controls/time.rb
79
75
  - lib/test_bench/session/controls/title.rb
80
76
  - lib/test_bench/session/events.rb
77
+ - lib/test_bench/session/output.rb
78
+ - lib/test_bench/session/output/get.rb
79
+ - lib/test_bench/session/output/writer.rb
80
+ - lib/test_bench/session/output/writer/buffer.rb
81
+ - lib/test_bench/session/output/writer/buffer/interactive.rb
82
+ - lib/test_bench/session/output/writer/buffer/interactive/viewport.rb
83
+ - lib/test_bench/session/output/writer/defaults.rb
84
+ - lib/test_bench/session/output/writer/substitute.rb
85
+ - lib/test_bench/session/projection.rb
81
86
  - lib/test_bench/session/session.rb
87
+ - lib/test_bench/session/store.rb
82
88
  - lib/test_bench/session/substitute.rb
83
- - lib/test_bench/session/telemetry/capture_sink.rb
84
- - lib/test_bench/session/telemetry/capture_sink/path.rb
85
- - lib/test_bench/session/telemetry/capture_sink/record.rb
89
+ - lib/test_bench/session/substitute/path.rb
90
+ - lib/test_bench/session/substitute/sink.rb
86
91
  homepage: https://github.com/test-bench/test-bench-session
87
92
  licenses:
88
93
  - MIT
@@ -102,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
107
  - !ruby/object:Gem::Version
103
108
  version: '0'
104
109
  requirements: []
105
- rubygems_version: 3.3.23
110
+ rubygems_version: 3.4.10
106
111
  signing_key:
107
112
  specification_version: 4
108
113
  summary: Test session for TestBench
@@ -1,19 +0,0 @@
1
- module TestBench
2
- class Session
3
- module Controls
4
- module CaptureSink
5
- module Record
6
- def self.example(event: nil, path: nil)
7
- event ||= self.event
8
- path ||= self.path
9
-
10
- TestBench::Session::Telemetry::CaptureSink::Record.new(event, path)
11
- end
12
-
13
- def self.event = Event.example
14
- def self.path = Path.example
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,29 +0,0 @@
1
- module TestBench
2
- class Session
3
- module Controls
4
- module Events
5
- module Aborted
6
- def self.example(abort_process_id: nil, process_id: nil, time: nil)
7
- abort_process_id ||= self.abort_process_id
8
- process_id ||= self.process_id
9
- time ||= self.time
10
-
11
- Session::Events::Aborted.new(abort_process_id, process_id, time)
12
- end
13
-
14
- def self.random
15
- abort_process_id = Random.integer
16
- process_id = ProcessID.random
17
- time = Time.random
18
-
19
- example(abort_process_id:, process_id:, time:)
20
- end
21
-
22
- def self.abort_process_id = ProcessID.other
23
- def self.process_id = ProcessID.example
24
- def self.time = Time.example
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,32 +0,0 @@
1
- module TestBench
2
- class Session
3
- module Controls
4
- module Events
5
- module FileFinished
6
- def self.example(path: nil, result: nil, process_id: nil, time: nil)
7
- path ||= self.path
8
- result ||= self.result
9
- process_id ||= self.process_id
10
- time ||= self.time
11
-
12
- Session::Events::FileFinished.new(path, result, process_id, time)
13
- end
14
-
15
- def self.random
16
- path = File::Path.random
17
- result = Result.random
18
- process_id = ProcessID.random
19
- time = Time.random
20
-
21
- example(path:, result:, process_id:, time:)
22
- end
23
-
24
- def self.path = File::Path.example
25
- def self.result = Result.example
26
- def self.process_id = ProcessID.example
27
- def self.time = Time.example
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,29 +0,0 @@
1
- module TestBench
2
- class Session
3
- module Controls
4
- module Events
5
- module FileStarted
6
- def self.example(path: nil, process_id: nil, time: nil)
7
- path ||= self.path
8
- process_id ||= self.process_id
9
- time ||= self.time
10
-
11
- Session::Events::FileStarted.new(path, process_id, time)
12
- end
13
-
14
- def self.random
15
- path = File::Path.random
16
- process_id = ProcessID.random
17
- time = Time.random
18
-
19
- example(path:, process_id:, time:)
20
- end
21
-
22
- def self.path = File::Path.example
23
- def self.process_id = ProcessID.example
24
- def self.time = Time.example
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,32 +0,0 @@
1
- module TestBench
2
- class Session
3
- module Controls
4
- module Events
5
- module Finished
6
- def self.example(result: nil, process_count: nil, process_id: nil, time: nil)
7
- result ||= self.result
8
- process_count ||= self.process_count
9
- process_id ||= self.process_id
10
- time ||= self.time
11
-
12
- Session::Events::Finished.new(result, process_count, process_id, time)
13
- end
14
-
15
- def self.random
16
- result = Result.random
17
- process_count = Random.integer
18
- process_id = ProcessID.random
19
- time = Time.random
20
-
21
- example(result:, process_count:, process_id:, time:)
22
- end
23
-
24
- def self.result = Result.example
25
- def self.process_count = Started.process_count
26
- def self.process_id = ProcessID.example
27
- def self.time = Time.example
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,29 +0,0 @@
1
- module TestBench
2
- class Session
3
- module Controls
4
- module Events
5
- module Started
6
- def self.example(process_count: nil, process_id: nil, time: nil)
7
- process_count ||= self.process_count
8
- process_id ||= self.process_id
9
- time ||= self.time
10
-
11
- Session::Events::Started.new(process_count, process_id, time)
12
- end
13
-
14
- def self.random
15
- process_count = Random.integer
16
- process_id = ProcessID.random
17
- time = Time.random
18
-
19
- example(process_count:, process_id:, time:)
20
- end
21
-
22
- def self.process_count = 11
23
- def self.process_id = ProcessID.example
24
- def self.time = Time.example
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,58 +0,0 @@
1
- module TestBench
2
- class Session
3
- module Controls
4
- module File
5
- def self.example(contents=nil)
6
- contents ||= self.contents
7
-
8
- path = TestBench::Telemetry::Controls::File::Temporary.example
9
-
10
- ::File.write(path, contents)
11
-
12
- path
13
- end
14
-
15
- def self.contents = Pass.contents
16
-
17
- module Failure
18
- def self.example(session: nil)
19
- contents = contents(session:)
20
-
21
- File.example(contents)
22
- end
23
-
24
- def self.contents(session: nil)
25
- session ||= Session.new
26
-
27
- <<~RUBY
28
- session = ObjectSpace._id2ref(#{session.object_id})
29
- session.assert(false, __FILE__, __LINE__)
30
- RUBY
31
- end
32
- end
33
-
34
- module Pass
35
- def self.example
36
- File.example(contents)
37
- end
38
-
39
- def self.contents
40
- ''
41
- end
42
- end
43
-
44
- module Path
45
- def self.example(suffix=nil)
46
- extension = '.rb'
47
-
48
- filename = TestBench::Telemetry::Controls::File::Name.example(suffix, extension:)
49
-
50
- ::File.join('some_dir', 'some_other_dir', filename)
51
- end
52
-
53
- def self.random = example(Random.string)
54
- end
55
- end
56
- end
57
- end
58
- end
@@ -1,65 +0,0 @@
1
- module TestBench
2
- class Session
3
- module Telemetry
4
- class CaptureSink
5
- class Path
6
- def segments
7
- @segments ||= []
8
- end
9
- attr_writer :segments
10
-
11
- def match?(*segments, segment)
12
- if not segment == self.segments.last
13
- return false
14
- end
15
-
16
- segment_iterator = self.segments.to_enum
17
-
18
- control_segments = [*segments, segment]
19
-
20
- control_segments.all? do |control_segment|
21
- begin
22
- next_segment = segment_iterator.next
23
- end until next_segment == control_segment
24
- true
25
-
26
- rescue StopIteration
27
- false
28
- end
29
- end
30
-
31
- def push_segment(segment)
32
- segments << segment
33
- end
34
- alias :push :push_segment
35
- alias :<< :push
36
-
37
- def pop_segment(compare_segment=nil)
38
- segments.pop
39
- end
40
- alias :pop :pop_segment
41
-
42
- def copy(receiver)
43
- path = self.class.new
44
-
45
- segments.each do |segment|
46
- path << segment
47
- end
48
-
49
- receiver.path = path
50
- path
51
- end
52
-
53
- def eql?(compare)
54
- if compare.is_a?(self.class)
55
- segments == compare.segments
56
- else
57
- false
58
- end
59
- end
60
- alias :== :eql?
61
- end
62
- end
63
- end
64
- end
65
- end