scad4r 0.1.0 → 0.2.0

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/Gemfile CHANGED
@@ -1,18 +1,18 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem "bundler"
3
+ gem "childprocess", "~> 0.3"
4
4
 
5
5
  group :development do
6
- gem "growl"
7
- gem "guard"
8
- gem "guard-rspec"
6
+ gem "growl", "~> 1.0"
7
+ gem "guard", "~> 1.6"
8
+ gem "guard-rspec", "~> 2.3"
9
9
 
10
10
  gem "jeweler", "~> 1.8.3"
11
11
 
12
- gem "rdoc"
13
- gem "rspec"
14
- gem "rb-fsevent"
12
+ gem "rdoc", "~> 3.12"
13
+ gem "rspec", "~> 2.12"
14
+ gem "rb-fsevent", "~> 0.9"
15
15
 
16
- gem "simplecov"
17
- gem "simplecov-csv"
16
+ gem "simplecov", "~> 0.7"
17
+ gem "simplecov-csv", "~> 0.1"
18
18
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -1,3 +1,5 @@
1
+ require 'childprocess'
2
+
1
3
  module Scad4r
2
4
  class Runner
3
5
  class PassThrough
@@ -21,17 +23,34 @@ module Scad4r
21
23
  # provide a reasonable default
22
24
  net_options = {output: output_file(path, net_options)}.merge(net_options)
23
25
 
24
- io = IO.popen(openscad_invocation(path, net_options))
26
+ io = shell_out(openscad_invocation(path, net_options))
25
27
 
26
28
  result_hash = parser.parse io.read
27
29
 
28
30
  result_hash.merge({output: net_options.fetch(:output)})
29
31
  end
30
32
 
33
+ protected
34
+
35
+ def shell_out(*cmd)
36
+ r, w = pipes
37
+ process = ChildProcess.build(*cmd)
38
+ process.io.stdout = process.io.stderr = w
39
+ process.start
40
+ w.close
41
+ process.wait # to do, stream progress
42
+
43
+ r
44
+ end
45
+
31
46
  private
32
47
 
48
+ def pipes
49
+ IO.pipe
50
+ end
51
+
33
52
  def openscad_invocation(path, options)
34
- [*openscad_command(options),*runtime_arguments(path, options), err: [:child, :out]]
53
+ [*openscad_command(options),*runtime_arguments(path, options)]
35
54
  end
36
55
 
37
56
  def openscad_command(options)
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "scad4r"
8
- s.version = "0.1.0"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Caleb Buxton"]
12
- s.date = "2013-01-26"
12
+ s.date = "2013-02-18"
13
13
  s.description = "Provides Ruby affordances for scripting OpenSCAD"
14
14
  s.email = "me@cpb.ca"
15
15
  s.extra_rdoc_files = [
@@ -52,39 +52,39 @@ Gem::Specification.new do |s|
52
52
  s.specification_version = 3
53
53
 
54
54
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
55
- s.add_runtime_dependency(%q<bundler>, [">= 0"])
56
- s.add_development_dependency(%q<growl>, [">= 0"])
57
- s.add_development_dependency(%q<guard>, [">= 0"])
58
- s.add_development_dependency(%q<guard-rspec>, [">= 0"])
55
+ s.add_runtime_dependency(%q<childprocess>, ["~> 0.3"])
56
+ s.add_development_dependency(%q<growl>, ["~> 1.0"])
57
+ s.add_development_dependency(%q<guard>, ["~> 1.6"])
58
+ s.add_development_dependency(%q<guard-rspec>, ["~> 2.3"])
59
59
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
60
- s.add_development_dependency(%q<rdoc>, [">= 0"])
61
- s.add_development_dependency(%q<rspec>, [">= 0"])
62
- s.add_development_dependency(%q<rb-fsevent>, [">= 0"])
63
- s.add_development_dependency(%q<simplecov>, [">= 0"])
64
- s.add_development_dependency(%q<simplecov-csv>, [">= 0"])
60
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
61
+ s.add_development_dependency(%q<rspec>, ["~> 2.12"])
62
+ s.add_development_dependency(%q<rb-fsevent>, ["~> 0.9"])
63
+ s.add_development_dependency(%q<simplecov>, ["~> 0.7"])
64
+ s.add_development_dependency(%q<simplecov-csv>, ["~> 0.1"])
65
65
  else
66
- s.add_dependency(%q<bundler>, [">= 0"])
67
- s.add_dependency(%q<growl>, [">= 0"])
68
- s.add_dependency(%q<guard>, [">= 0"])
69
- s.add_dependency(%q<guard-rspec>, [">= 0"])
66
+ s.add_dependency(%q<childprocess>, ["~> 0.3"])
67
+ s.add_dependency(%q<growl>, ["~> 1.0"])
68
+ s.add_dependency(%q<guard>, ["~> 1.6"])
69
+ s.add_dependency(%q<guard-rspec>, ["~> 2.3"])
70
70
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
71
- s.add_dependency(%q<rdoc>, [">= 0"])
72
- s.add_dependency(%q<rspec>, [">= 0"])
73
- s.add_dependency(%q<rb-fsevent>, [">= 0"])
74
- s.add_dependency(%q<simplecov>, [">= 0"])
75
- s.add_dependency(%q<simplecov-csv>, [">= 0"])
71
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
72
+ s.add_dependency(%q<rspec>, ["~> 2.12"])
73
+ s.add_dependency(%q<rb-fsevent>, ["~> 0.9"])
74
+ s.add_dependency(%q<simplecov>, ["~> 0.7"])
75
+ s.add_dependency(%q<simplecov-csv>, ["~> 0.1"])
76
76
  end
77
77
  else
78
- s.add_dependency(%q<bundler>, [">= 0"])
79
- s.add_dependency(%q<growl>, [">= 0"])
80
- s.add_dependency(%q<guard>, [">= 0"])
81
- s.add_dependency(%q<guard-rspec>, [">= 0"])
78
+ s.add_dependency(%q<childprocess>, ["~> 0.3"])
79
+ s.add_dependency(%q<growl>, ["~> 1.0"])
80
+ s.add_dependency(%q<guard>, ["~> 1.6"])
81
+ s.add_dependency(%q<guard-rspec>, ["~> 2.3"])
82
82
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
83
- s.add_dependency(%q<rdoc>, [">= 0"])
84
- s.add_dependency(%q<rspec>, [">= 0"])
85
- s.add_dependency(%q<rb-fsevent>, [">= 0"])
86
- s.add_dependency(%q<simplecov>, [">= 0"])
87
- s.add_dependency(%q<simplecov-csv>, [">= 0"])
83
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
84
+ s.add_dependency(%q<rspec>, ["~> 2.12"])
85
+ s.add_dependency(%q<rb-fsevent>, ["~> 0.9"])
86
+ s.add_dependency(%q<simplecov>, ["~> 0.7"])
87
+ s.add_dependency(%q<simplecov-csv>, ["~> 0.1"])
88
88
  end
89
89
  end
90
90
 
@@ -26,13 +26,13 @@ module Scad4r
26
26
  end
27
27
 
28
28
  it "returns a hash describing the result" do
29
- IO.stub(:popen).and_return(StringIO.new)
29
+ subject.stub(:shell_out).and_return(StringIO.new)
30
30
  subject.run(passed_file).should be_a(Hash)
31
31
  end
32
32
 
33
33
  describe "result hash" do
34
34
  before do
35
- IO.stub(:popen).and_return(StringIO.new)
35
+ subject.stub(:shell_out).and_return(StringIO.new)
36
36
  end
37
37
 
38
38
  let(:parser) {
@@ -1,11 +1,28 @@
1
1
  module OpenscadExecutionMatcher
2
2
  extend RSpec::Matchers::DSL
3
3
 
4
+ def childprocess_double
5
+ double("ChildProcess", start: true, wait: true,
6
+ io: double("IO", "stdout=" => true, "stderr=" => true))
7
+ end
8
+
9
+ def write_pipe_double
10
+ double("write pipe", close: true)
11
+ end
12
+
13
+ def read_pipe_double(result)
14
+ StringIO.new(result || "")
15
+ end
16
+
4
17
  matcher :run_openscad do |expected_openscad_command="openscad" |
5
18
  @expected_openscad_invocation = Array(expected_openscad_command)
6
19
 
7
20
  match do |openscad_runner|
8
- IO.should_receive(:popen) do |arguments|
21
+
22
+ openscad_runner.stub(:pipes).and_return([
23
+ read_pipe_double(@mock_result),write_pipe_double])
24
+
25
+ ChildProcess.should_receive(:build) do |arguments|
9
26
  options = arguments.pop if arguments.last.is_a?(Hash)
10
27
 
11
28
  arguments.shift(@expected_openscad_invocation.length).should eql(@expected_openscad_invocation)
@@ -16,7 +33,7 @@ module OpenscadExecutionMatcher
16
33
 
17
34
  arguments.last.should eql(@expected_input_file)
18
35
 
19
- StringIO.new(@mock_result||"")
36
+ childprocess_double
20
37
  end
21
38
  end
22
39
 
metadata CHANGED
@@ -2,79 +2,79 @@
2
2
  name: scad4r
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.0
5
+ version: 0.2.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Caleb Buxton
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-26 00:00:00.000000000 Z
12
+ date: 2013-02-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  type: :runtime
16
16
  version_requirements: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
22
- name: bundler
21
+ version: '0.3'
22
+ name: childprocess
23
23
  prerelease: false
24
24
  requirement: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ! '>='
27
+ - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: '0'
29
+ version: '0.3'
30
30
  - !ruby/object:Gem::Dependency
31
31
  type: :development
32
32
  version_requirements: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
- - - ! '>='
35
+ - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: '0'
37
+ version: '1.0'
38
38
  name: growl
39
39
  prerelease: false
40
40
  requirement: !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ! '>='
43
+ - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: '0'
45
+ version: '1.0'
46
46
  - !ruby/object:Gem::Dependency
47
47
  type: :development
48
48
  version_requirements: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
- - - ! '>='
51
+ - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: '0'
53
+ version: '1.6'
54
54
  name: guard
55
55
  prerelease: false
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
59
- - - ! '>='
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '1.6'
62
62
  - !ruby/object:Gem::Dependency
63
63
  type: :development
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
67
- - - ! '>='
67
+ - - ~>
68
68
  - !ruby/object:Gem::Version
69
- version: '0'
69
+ version: '2.3'
70
70
  name: guard-rspec
71
71
  prerelease: false
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
- - - ! '>='
75
+ - - ~>
76
76
  - !ruby/object:Gem::Version
77
- version: '0'
77
+ version: '2.3'
78
78
  - !ruby/object:Gem::Dependency
79
79
  type: :development
80
80
  version_requirements: !ruby/object:Gem::Requirement
@@ -96,81 +96,81 @@ dependencies:
96
96
  version_requirements: !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
- - - ! '>='
99
+ - - ~>
100
100
  - !ruby/object:Gem::Version
101
- version: '0'
101
+ version: '3.12'
102
102
  name: rdoc
103
103
  prerelease: false
104
104
  requirement: !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
- - - ! '>='
107
+ - - ~>
108
108
  - !ruby/object:Gem::Version
109
- version: '0'
109
+ version: '3.12'
110
110
  - !ruby/object:Gem::Dependency
111
111
  type: :development
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  none: false
114
114
  requirements:
115
- - - ! '>='
115
+ - - ~>
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: '2.12'
118
118
  name: rspec
119
119
  prerelease: false
120
120
  requirement: !ruby/object:Gem::Requirement
121
121
  none: false
122
122
  requirements:
123
- - - ! '>='
123
+ - - ~>
124
124
  - !ruby/object:Gem::Version
125
- version: '0'
125
+ version: '2.12'
126
126
  - !ruby/object:Gem::Dependency
127
127
  type: :development
128
128
  version_requirements: !ruby/object:Gem::Requirement
129
129
  none: false
130
130
  requirements:
131
- - - ! '>='
131
+ - - ~>
132
132
  - !ruby/object:Gem::Version
133
- version: '0'
133
+ version: '0.9'
134
134
  name: rb-fsevent
135
135
  prerelease: false
136
136
  requirement: !ruby/object:Gem::Requirement
137
137
  none: false
138
138
  requirements:
139
- - - ! '>='
139
+ - - ~>
140
140
  - !ruby/object:Gem::Version
141
- version: '0'
141
+ version: '0.9'
142
142
  - !ruby/object:Gem::Dependency
143
143
  type: :development
144
144
  version_requirements: !ruby/object:Gem::Requirement
145
145
  none: false
146
146
  requirements:
147
- - - ! '>='
147
+ - - ~>
148
148
  - !ruby/object:Gem::Version
149
- version: '0'
149
+ version: '0.7'
150
150
  name: simplecov
151
151
  prerelease: false
152
152
  requirement: !ruby/object:Gem::Requirement
153
153
  none: false
154
154
  requirements:
155
- - - ! '>='
155
+ - - ~>
156
156
  - !ruby/object:Gem::Version
157
- version: '0'
157
+ version: '0.7'
158
158
  - !ruby/object:Gem::Dependency
159
159
  type: :development
160
160
  version_requirements: !ruby/object:Gem::Requirement
161
161
  none: false
162
162
  requirements:
163
- - - ! '>='
163
+ - - ~>
164
164
  - !ruby/object:Gem::Version
165
- version: '0'
165
+ version: '0.1'
166
166
  name: simplecov-csv
167
167
  prerelease: false
168
168
  requirement: !ruby/object:Gem::Requirement
169
169
  none: false
170
170
  requirements:
171
- - - ! '>='
171
+ - - ~>
172
172
  - !ruby/object:Gem::Version
173
- version: '0'
173
+ version: '0.1'
174
174
  description: Provides Ruby affordances for scripting OpenSCAD
175
175
  email: me@cpb.ca
176
176
  executables: []
@@ -217,7 +217,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
217
217
  - !ruby/object:Gem::Version
218
218
  segments:
219
219
  - 0
220
- hash: 2031449955225607489
220
+ hash: -3905703001506090554
221
221
  version: '0'
222
222
  required_rubygems_version: !ruby/object:Gem::Requirement
223
223
  none: false