orb 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +2 -5
- data/lib/orb/drivers/test-unit.rb +4 -3
- data/lib/orb/pry_extensions.rb +2 -0
- data/lib/orb/runner.rb +9 -3
- data/lib/orb/test_buffer.rb +25 -5
- data/lib/orb/version.rb +1 -1
- metadata +5 -5
data/README.md
CHANGED
@@ -7,9 +7,6 @@ When the runner gets to that line, it will open a REPL where you can
|
|
7
7
|
interact with the environment and build up a test to be written back to
|
8
8
|
the file.
|
9
9
|
|
10
|
-
Orb is still a work in progress. It does not currently actually write
|
11
|
-
back to the test file, but it will format a test to be pasted in.
|
12
|
-
|
13
10
|
## Usage
|
14
11
|
|
15
12
|
The first step, after adding `gem "orb"` to your Gemfile, is to
|
@@ -28,8 +25,8 @@ commands, in addition to the functionality of a typical IRB
|
|
28
25
|
|
29
26
|
`,n`: Give a name to the current test. Called like `,n music is loud`.
|
30
27
|
|
31
|
-
`,w`:
|
32
|
-
|
28
|
+
`,w`: Write the buffer back to the test file in place of the call to
|
29
|
+
`orb!`.
|
33
30
|
|
34
31
|
Within the context of the REPL, assertions are evaluated immediately,
|
35
32
|
rather than being deferred until later in the run. This lets you run
|
@@ -2,11 +2,12 @@ require 'test/unit/testcase'
|
|
2
2
|
|
3
3
|
class Test::Unit::TestCase
|
4
4
|
def self.orb!
|
5
|
-
|
5
|
+
source_location = caller[0]
|
6
|
+
define_method("test_orb_#{rand 100000}") { orb!(self, source_location) }
|
6
7
|
end
|
7
8
|
|
8
|
-
def orb!(ctx)
|
9
|
-
with_immediate_asserts(ctx) { Orb::Runner.new(ctx).run }
|
9
|
+
def orb!(ctx, source_location = caller[0])
|
10
|
+
with_immediate_asserts(ctx) { Orb::Runner.new(ctx, source_location).run }
|
10
11
|
end
|
11
12
|
|
12
13
|
def with_immediate_asserts(ctx)
|
data/lib/orb/pry_extensions.rb
CHANGED
data/lib/orb/runner.rb
CHANGED
@@ -2,18 +2,24 @@ require 'pry'
|
|
2
2
|
|
3
3
|
module Orb
|
4
4
|
class Runner
|
5
|
-
attr_reader :test_buffer
|
5
|
+
attr_reader :test_buffer, :source_file, :source_line
|
6
|
+
|
6
7
|
class << self
|
7
8
|
attr_accessor :current
|
8
9
|
end
|
9
10
|
|
10
|
-
def initialize(context)
|
11
|
+
def initialize(context, source_location)
|
11
12
|
@context = context
|
12
|
-
@test_buffer = TestBuffer.new
|
13
|
+
@test_buffer = TestBuffer.new(*parse_source_location(source_location))
|
13
14
|
setup_pry
|
14
15
|
Orb::Runner.current = self
|
15
16
|
end
|
16
17
|
|
18
|
+
def parse_source_location(source_location)
|
19
|
+
source_location.scan(/(.*):(\d)+:.*/)
|
20
|
+
[$1, $2.to_i]
|
21
|
+
end
|
22
|
+
|
17
23
|
def setup_pry
|
18
24
|
Pry.instance_eval do
|
19
25
|
if initial_session?
|
data/lib/orb/test_buffer.rb
CHANGED
@@ -3,6 +3,11 @@ require 'tempfile'
|
|
3
3
|
class TestBuffer < Array
|
4
4
|
attr_accessor :name
|
5
5
|
|
6
|
+
def initialize(source_file, source_line)
|
7
|
+
@source_file = source_file
|
8
|
+
@source_line = source_line
|
9
|
+
end
|
10
|
+
|
6
11
|
def edit_contents!
|
7
12
|
path = "#{Dir::tmpdir}/orb-#{Kernel.rand 1000000}.rb"
|
8
13
|
begin
|
@@ -24,15 +29,30 @@ class TestBuffer < Array
|
|
24
29
|
end
|
25
30
|
|
26
31
|
def write
|
27
|
-
|
28
|
-
|
32
|
+
splice_into_file(generate_test(indentation_level))
|
33
|
+
end
|
34
|
+
|
35
|
+
def generate_test(indentation_level)
|
36
|
+
indent = " " * indentation_level
|
37
|
+
"".tap do |test|
|
38
|
+
test << indent << "test \"#{name}\" do\n"
|
29
39
|
each do |line|
|
30
|
-
test << " " << line << "\n"
|
40
|
+
test << indent << " " << line << "\n"
|
31
41
|
end
|
32
|
-
test << "end\n"
|
42
|
+
test << indent << "end\n"
|
33
43
|
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def indentation_level
|
47
|
+
orb_line = File.readlines(@source_file)[@source_line - 1]
|
48
|
+
orb_line.scan(/(\s*).*/).flatten.first.size / 2
|
49
|
+
end
|
34
50
|
|
35
|
-
|
51
|
+
def splice_into_file(content)
|
52
|
+
lines = File.readlines(@source_file)
|
53
|
+
index = @source_line - 1
|
54
|
+
lines[index] = content
|
55
|
+
File.open(@source_file, "w") { |f| f.write lines.join("") }
|
36
56
|
end
|
37
57
|
|
38
58
|
end
|
data/lib/orb/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: orb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-02-15 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pry
|
16
|
-
requirement: &
|
16
|
+
requirement: &70232544483980 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - =
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.9.8.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70232544483980
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: test-unit
|
27
|
-
requirement: &
|
27
|
+
requirement: &70232544483480 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70232544483480
|
36
36
|
description: REPL-driven testing for ruby -- integrates with pry and lets you build
|
37
37
|
tests incrementally in the REPL
|
38
38
|
email:
|