clamsy 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/HISTORY.txt +10 -0
- data/README.rdoc +7 -63
- data/Rakefile +27 -2
- data/VERSION +1 -1
- data/clamsy.gemspec +77 -8
- data/examples/create_many.rb +15 -0
- data/examples/create_one.rb +15 -0
- data/examples/data/context.rb +41 -0
- data/examples/data/contexts.rb +2 -0
- data/examples/data/school_logo.jpg +0 -0
- data/examples/data/staff_signature.gif +0 -0
- data/examples/data/student_offer_letter.odt +0 -0
- data/lib/clamsy.rb +7 -2
- data/lib/clamsy.yml +32 -6
- data/lib/clamsy/base_printer.rb +10 -1
- data/lib/clamsy/configuration.rb +57 -10
- data/lib/clamsy/cups_pdf_printer.rb +3 -5
- data/lib/clamsy/file_system_support.rb +3 -3
- data/lib/clamsy/jod_converter_printer.rb +60 -0
- data/lib/clamsy/template_open_doc.rb +7 -1
- data/lib/jodconverter/CREDIT +1 -0
- data/lib/jodconverter/LICENSE.txt +504 -0
- data/lib/jodconverter/README.txt +58 -0
- data/lib/jodconverter/commons-cli-1.2.jar +0 -0
- data/lib/jodconverter/commons-io-1.4.jar +0 -0
- data/lib/jodconverter/jodconverter-2.2.2.jar +0 -0
- data/lib/jodconverter/jodconverter-cli-2.2.2.jar +0 -0
- data/lib/jodconverter/juh-3.0.1.jar +0 -0
- data/lib/jodconverter/jurt-3.0.1.jar +0 -0
- data/lib/jodconverter/ridl-3.0.1.jar +0 -0
- data/lib/jodconverter/slf4j-api-1.5.6.jar +0 -0
- data/lib/jodconverter/slf4j-jdk14-1.5.6.jar +0 -0
- data/lib/jodconverter/unoil-3.0.1.jar +0 -0
- data/lib/jodconverter/xstream-1.3.1.jar +0 -0
- data/spec/clamsy/configuration_spec.rb +323 -163
- data/spec/clamsy/cups_pdf_printer_spec.rb +1 -1
- data/spec/clamsy/invalid_printer_spec.rb +0 -4
- data/spec/clamsy/jod_converter_printer_spec.rb +58 -0
- data/spec/fake_ooffice_server.rb +18 -0
- data/spec/integration/cups_pdf_printer_spec.rb +4 -59
- data/spec/integration/has_integration_support_shared_spec.rb +85 -0
- data/spec/integration/jod_converter_printer_spec.rb +12 -0
- data/spec/pdfc/CCLib.jar +0 -0
- data/spec/pdfc/CREDIT +2 -0
- data/spec/pdfc/PDFC.bat +1 -0
- data/spec/pdfc/PDFC.jar +0 -0
- data/spec/pdfc/PDFC.sh +3 -0
- data/spec/pdfc/PDFParser.jar +0 -0
- data/spec/pdfc/config.xml +24 -0
- data/spec/pdfc/license/LICENSE.log4j +48 -0
- data/spec/pdfc/license/lgpl-3.0.txt +165 -0
- data/spec/pdfc/license/overview.txt +9 -0
- data/spec/pdfc/log4j-1.2.15.jar +0 -0
- data/spec/pdfc/readme.txt +89 -0
- data/spec/spec_helper.rb +28 -11
- metadata +87 -8
- data/spec/integration/has_stardand_integration_support_shared_spec.rb +0 -27
@@ -0,0 +1,58 @@
|
|
1
|
+
JODConverter
|
2
|
+
============
|
3
|
+
|
4
|
+
This is JODConverter version 2.2.2, released on 2009-04-11.
|
5
|
+
|
6
|
+
JODConverter is a Java library for converting office documents into different
|
7
|
+
formats, using OpenOffice.org 2.x or 3.x.
|
8
|
+
|
9
|
+
See http://www.artofsolving.com/opensource/jodconverter for the latest documentation.
|
10
|
+
|
11
|
+
Before you can perform any conversions you need to start OpenOffice.org
|
12
|
+
in listening mode on port 8100 as described in the JODConverter Guide.
|
13
|
+
|
14
|
+
As a quick start you can type from a command line
|
15
|
+
|
16
|
+
soffice -headless -accept="socket,port=8100;urp;"
|
17
|
+
|
18
|
+
JODConverter is both a Java library and a set of ready-to-use tools:
|
19
|
+
|
20
|
+
* a web application that you can deploy into any servlet container (e.g. Apache Tomcat)
|
21
|
+
* a command line tool (java -jar jodconverter-cli-2.2.2.jar <input-document> <output-document>)
|
22
|
+
|
23
|
+
Requirements
|
24
|
+
============
|
25
|
+
|
26
|
+
The JAR library requires
|
27
|
+
|
28
|
+
* Java 1.4 or higher
|
29
|
+
* OpenOffice.org 2.x or 3.x; the latest stable version (currenty 3.0.1) is generally recommended
|
30
|
+
|
31
|
+
The webapp additionally requires
|
32
|
+
|
33
|
+
* A Servlet 2.3 container such as Apache Tomcat v4.x or higher
|
34
|
+
|
35
|
+
Licenses
|
36
|
+
========
|
37
|
+
|
38
|
+
JODConverter is distributed under the terms of the LGPL.
|
39
|
+
|
40
|
+
This basically means that you are free to use it in both open source
|
41
|
+
and commercial projects.
|
42
|
+
|
43
|
+
If you modify the library itself you are required to contribute
|
44
|
+
your changes back, so JODConverter can be improved.
|
45
|
+
|
46
|
+
(You are free to modify the sample webapp as a starting point for your
|
47
|
+
own webapp without restrictions.)
|
48
|
+
|
49
|
+
JODConverter includes various third-party libraries so you must
|
50
|
+
agree to their respective licenses - included in docs/third-party-licenses.
|
51
|
+
|
52
|
+
That may include software developed by
|
53
|
+
|
54
|
+
* the Apache Software Foundation (http://www.apache.org)
|
55
|
+
* the Spring Framework project (http://www.springframework.org)
|
56
|
+
|
57
|
+
--
|
58
|
+
Mirko Nasato <mirko@artofsolving.com>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,195 +1,313 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
2
2
|
|
3
|
-
def Clamsy.unconfigure
|
4
|
-
@config = nil
|
5
|
-
end
|
6
|
-
|
7
3
|
describe "Clamsy configuration" do
|
8
4
|
|
9
5
|
before do
|
10
6
|
Clamsy.unconfigure
|
11
|
-
$bundled_config_file =
|
12
|
-
$user_config_file =
|
13
|
-
@write_config = lambda
|
14
|
-
|
15
|
-
|
7
|
+
$bundled_config_file = tmp_file('bundled-clamsy.ym;').path
|
8
|
+
$user_config_file = tmp_file('user-clamsy.yml').path
|
9
|
+
@write_config = lambda {|file, data| File.open(file,'w') {|io| YAML.dump(data, io) } }
|
10
|
+
@write_bundled_config = lambda {|data| @write_config[$bundled_config_file, data] }
|
11
|
+
@write_user_config = lambda {|data| @write_config[$user_config_file, data] }
|
12
|
+
|
13
|
+
# NOTE: Essentially, we are just doing some stubbing ...
|
14
|
+
class << Clamsy::Configuration ; backup_methods %w{new ruby_platform} ; end
|
15
|
+
class << Clamsy ; backup_methods %w{bundled_config_file} ; end
|
16
16
|
end
|
17
17
|
|
18
18
|
after do
|
19
|
-
|
20
|
-
|
19
|
+
# NOTE: Essentially, we are just doing some unstubbing ...
|
20
|
+
class << Clamsy::Configuration ; recover_methods %w{new ruby_platform} ; end
|
21
|
+
class << Clamsy ; recover_methods %w{bundled_config_file} ; end
|
22
|
+
end
|
23
|
+
|
24
|
+
{
|
25
|
+
:linux => {
|
26
|
+
:printer => 'jod_converter',
|
27
|
+
:config_file => '~/.clamsy.yml',
|
28
|
+
:java_bin => 'java',
|
29
|
+
:ooffice_bin => 'ooffice',
|
30
|
+
:cups_pdf => {
|
31
|
+
:ooffice_print_args => '-norestore -nofirststartwizard -nologo -headless -pt Cups-PDF',
|
32
|
+
:cups_output_dir => "/var/spool/cups-pdf/#{ENV['USER']}",
|
33
|
+
:cups_output_file => nil,
|
34
|
+
},
|
35
|
+
:jod_converter => {
|
36
|
+
:ooffice_server_args =>
|
37
|
+
'-headless -nofirststartwizard -accept="socket,host=localhost,port=8100;urp;StarOffice.Service"'
|
38
|
+
}
|
39
|
+
},
|
40
|
+
:darwin => {
|
41
|
+
:printer => 'jod_converter',
|
42
|
+
:config_file => '~/.clamsy.yml',
|
43
|
+
:java_bin => 'java',
|
44
|
+
:ooffice_bin => '/Applications/OpenOffice.org.app/Contents/MacOS/soffice.bin',
|
45
|
+
:cups_pdf => {
|
46
|
+
:ooffice_print_args => '-norestore -nofirststartwizard -nologo -headless -pt Cups-PDF',
|
47
|
+
:cups_output_dir => "/opt/local/var/spool/cups-pdf/#{ENV['USER']}",
|
48
|
+
:cups_output_file => nil,
|
49
|
+
},
|
50
|
+
:jod_converter => {
|
51
|
+
:ooffice_server_args =>
|
52
|
+
'-headless -nofirststartwizard -accept="socket,host=localhost,port=8100;urp;StarOffice.Service" &'
|
53
|
+
}
|
54
|
+
},
|
55
|
+
:windows => {},
|
56
|
+
:java => {} # jruby
|
57
|
+
}.each do |$platform, configs|
|
58
|
+
describe "> default bundled config (#{$platform})" do
|
59
|
+
before do
|
60
|
+
class << Clamsy::Configuration
|
61
|
+
def ruby_platform ; "#{$platform}" ; end
|
62
|
+
def new(file, is_base_config, default_configs={})
|
63
|
+
file == '~/.clamsy.yml' ? nil : _orig_new(CLAMSY_BUNDLED_CONFIG, true)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
if configs.empty?
|
68
|
+
# Platform is not yet supported !!
|
69
|
+
should 'raise Clamsy::PlatformNotSupportedError' do
|
70
|
+
lambda { Clamsy.configure {|config| 'watever' } }.
|
71
|
+
should.raise(Clamsy::PlatformNotSupportedError).
|
72
|
+
message.should.equal("Platform '#{$platform}' is not supported (yet).")
|
73
|
+
end
|
74
|
+
else
|
75
|
+
configs.each do |name, value|
|
76
|
+
if value.is_a?(Hash)
|
77
|
+
# Printer-specific settings
|
78
|
+
value.each do |_name, _value|
|
79
|
+
should "have :#{_name} as '#{_value}' (when printer is '#{name}')" do
|
80
|
+
Clamsy.configure do |config|
|
81
|
+
config.printer = "#{name}"
|
82
|
+
config.send(_name).should.equal _value
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
else
|
87
|
+
# Printer-independent settings
|
88
|
+
should "have :#{name} as '#{value}'" do
|
89
|
+
Clamsy.configure do |config|
|
90
|
+
config.send(name).should.equal value
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
21
96
|
end
|
22
97
|
end
|
23
98
|
|
24
|
-
describe '>
|
99
|
+
describe '> configuring (using default user config file)' do
|
25
100
|
|
26
101
|
before do
|
27
102
|
class << Clamsy::Configuration
|
28
|
-
|
29
|
-
def new(file, is_base_config=
|
30
|
-
|
103
|
+
def ruby_platform ; 'linux' ; end
|
104
|
+
def new(file, is_base_config, default_configs={})
|
105
|
+
is_base_config ? _orig_new($bundled_config_file, true) :
|
106
|
+
_orig_new(file, is_base_config, default_configs)
|
31
107
|
end
|
32
108
|
end
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
109
|
+
@bundled_config = {
|
110
|
+
'printer' => 'super',
|
111
|
+
'ooffice_bin' => '/super/ooffice_bin',
|
112
|
+
'java_bin' => '/super/java',
|
113
|
+
'config_file' => $user_config_file,
|
114
|
+
'super' => {'super_setting1' => 'super_setting'}
|
115
|
+
}
|
116
|
+
@write_bundled_config[{'linux' => @bundled_config}]
|
117
|
+
end
|
118
|
+
|
119
|
+
%w{printer ooffice_bin java_bin}.each do |setting|
|
120
|
+
should "use specified :#{setting} if it has been specified" do
|
121
|
+
other_val = @bundled_config[setting].sub('super','duper')
|
122
|
+
@write_user_config[{setting => other_val}]
|
123
|
+
Clamsy.configure do |config|
|
124
|
+
config.send(setting).should.equal other_val
|
125
|
+
end
|
44
126
|
end
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
127
|
+
should "use default :#{setting} if it has not been specified" do
|
128
|
+
@write_user_config[{}]
|
129
|
+
Clamsy.configure do |config|
|
130
|
+
config.send(setting).should.equal @bundled_config[setting]
|
131
|
+
end
|
50
132
|
end
|
51
133
|
end
|
52
134
|
|
53
|
-
should "
|
135
|
+
should "use specified printer-specific setting if it has been specified" do
|
136
|
+
other_val = @bundled_config['super']['super_setting1'].sub('super','duper')
|
137
|
+
@write_user_config[{'super' => {'super_setting1' => other_val}}]
|
54
138
|
Clamsy.configure do |config|
|
55
|
-
config.
|
139
|
+
config.super_setting1.should.equal other_val
|
56
140
|
end
|
57
141
|
end
|
58
142
|
|
59
|
-
should "
|
60
|
-
|
143
|
+
should "use default printer-specific setting if it has not been specified" do
|
144
|
+
@write_user_config[{}]
|
61
145
|
Clamsy.configure do |config|
|
62
|
-
config.
|
63
|
-
'ooffice -norestore -nofirststartwizard -nologo -headless -pt Cups-PDF'
|
146
|
+
config.super_setting1.should.equal @bundled_config['super']['super_setting1']
|
64
147
|
end
|
65
148
|
end
|
66
149
|
|
67
150
|
end
|
68
151
|
|
69
|
-
|
152
|
+
shared 'configurable using config proc' do
|
70
153
|
|
71
154
|
before do
|
72
155
|
class << Clamsy::Configuration
|
73
|
-
|
74
|
-
def new(file, is_base_config=
|
75
|
-
|
76
|
-
|
156
|
+
def ruby_platform ; 'linux' ; end
|
157
|
+
def new(file, is_base_config, default_configs={})
|
158
|
+
is_base_config ? _orig_new($bundled_config_file, true) :
|
159
|
+
_orig_new(file, is_base_config, default_configs)
|
77
160
|
end
|
78
161
|
end
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
@
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
)
|
98
|
-
end
|
99
|
-
|
100
|
-
should 'use specified printer-specific settings if they have been specified' do
|
101
|
-
@write_config[{'printer' => 'cups_pdf', 'cups_pdf' => {'cups_output_dir' => '/x/y/z'}}]
|
102
|
-
Clamsy.configure {|config| config.cups_output_dir.should.equal '/x/y/z' }
|
103
|
-
end
|
104
|
-
|
105
|
-
should 'use default printer-specific settings if they have not been specified' do
|
106
|
-
Clamsy.configure do |config|
|
107
|
-
config.cups_output_dir.should.equal "/var/spool/cups-pdf/#{ENV['USER']}"
|
162
|
+
@bundled_config = {
|
163
|
+
'printer' => 'super',
|
164
|
+
'ooffice_bin' => '/super/ooffice_bin',
|
165
|
+
'java_bin' => '/super/java',
|
166
|
+
'config_file' => $user_config_file,
|
167
|
+
'super' => {'super_setting1' => 'super_setting1_val'},
|
168
|
+
'duper' => {'duper_setting1' => 'duper_setting1_val'}
|
169
|
+
}
|
170
|
+
@write_bundled_config[{'linux' => @bundled_config}]
|
171
|
+
end
|
172
|
+
|
173
|
+
%w{printer ooffice_bin java_bin}.each do |setting|
|
174
|
+
should "use specified :#{setting} if it has been specified" do
|
175
|
+
other_val = @bundled_config[setting].sub('super','duper')
|
176
|
+
clamsy_configure do |config|
|
177
|
+
config.send(:"#{setting}=", other_val)
|
178
|
+
config.send(setting).should.equal other_val
|
179
|
+
end
|
108
180
|
end
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
describe '> configuring (using only config proc)' do
|
114
|
-
|
115
|
-
behaves_like 'has standard files support'
|
116
|
-
|
117
|
-
before do
|
118
|
-
class << Clamsy::Configuration
|
119
|
-
alias_method :orig_new, :new
|
120
|
-
def new(file, is_base_config=false)
|
121
|
-
file == '~/.clamsy.yml' ? nil : orig_new($bundled_config_file, true)
|
181
|
+
should "use default :#{setting} if it has not been specified" do
|
182
|
+
clamsy_configure do |config|
|
183
|
+
config.send(setting).should.equal @bundled_config[setting]
|
122
184
|
end
|
123
185
|
end
|
124
186
|
end
|
125
187
|
|
126
|
-
should
|
127
|
-
|
128
|
-
config.
|
129
|
-
config.
|
188
|
+
should "use specified printer-specific setting if it has been specified" do
|
189
|
+
clamsy_configure do |config|
|
190
|
+
config.super_setting1 = 'duper_setting'
|
191
|
+
config.super_setting1.should.equal 'duper_setting'
|
130
192
|
end
|
131
193
|
end
|
132
194
|
|
133
|
-
should "use default
|
134
|
-
|
135
|
-
config.
|
136
|
-
[nil, ''].each do |val|
|
137
|
-
config.printer = val
|
138
|
-
config.printer.should.equal 'cups_pdf'
|
139
|
-
end
|
195
|
+
should "use default printer-specific setting if it has not been specified" do
|
196
|
+
clamsy_configure do |config|
|
197
|
+
config.super_setting1.should.equal @bundled_config['super']['super_setting1']
|
140
198
|
end
|
141
199
|
end
|
142
200
|
|
143
201
|
should "use specified :config_file if it has been specified" do
|
144
|
-
|
145
|
-
|
146
|
-
config.config_file
|
202
|
+
other_user_config_file = tmp_file('yet_another_user_config_file').path
|
203
|
+
clamsy_configure do |config|
|
204
|
+
config.config_file = other_user_config_file
|
205
|
+
config.config_file.should.equal other_user_config_file
|
147
206
|
end
|
148
207
|
end
|
149
208
|
|
150
|
-
should "
|
209
|
+
should "raise Clamsy::FileNotFoundError if the specified config file does not exist" do
|
151
210
|
lambda {
|
152
|
-
|
211
|
+
clamsy_configure {|config| config.config_file = "#{__FILE__}.clamsy.yml" }
|
153
212
|
}.should.raise(Clamsy::FileNotFoundError).message.should.equal(
|
154
213
|
"File '#{__FILE__}.clamsy.yml' not found."
|
155
214
|
)
|
156
215
|
end
|
157
216
|
|
158
|
-
should '
|
159
|
-
|
160
|
-
|
161
|
-
|
217
|
+
should 'raise Clamsy::PrinterNotFoundError if the specified printer does not exist' do
|
218
|
+
other_printer = 'awesome'
|
219
|
+
lambda { clamsy_configure {|config| config.printer = other_printer } }.
|
220
|
+
should.raise(Clamsy::PrinterNotFoundError).
|
221
|
+
message.should.equal("Printer '#{other_printer}' cannot be found.")
|
222
|
+
end
|
223
|
+
|
224
|
+
should 'reload printer-specific config (in bundled config file) when another printer is specified' do
|
225
|
+
other_printer = 'duper'
|
226
|
+
other_val = @bundled_config[other_printer]['duper_setting1']
|
227
|
+
clamsy_configure do |config|
|
228
|
+
config.duper_setting1.should.be.nil
|
229
|
+
config.printer = other_printer
|
230
|
+
config.duper_setting1.should.equal other_val
|
162
231
|
end
|
163
232
|
end
|
164
233
|
|
165
|
-
should '
|
166
|
-
|
167
|
-
|
234
|
+
should 'reload printer-specific config (in user config file) when another printer is specified' do
|
235
|
+
other_printer, other_val = 'duper', 'duper_setting2_val'
|
236
|
+
@write_user_config[{other_printer => {'duper_setting2' => other_val}}]
|
237
|
+
clamsy_configure do |config|
|
238
|
+
config.duper_setting2.should.be.nil
|
239
|
+
config.printer = other_printer
|
240
|
+
config.duper_setting2.should.equal other_val
|
168
241
|
end
|
169
242
|
end
|
170
243
|
|
171
244
|
end
|
172
245
|
|
173
|
-
describe '> configuring (using
|
246
|
+
describe '> configuring (using config proc)' do
|
247
|
+
class << self
|
248
|
+
def clamsy_configure(&blk) ; Clamsy.configure(&blk) ; end
|
249
|
+
end
|
250
|
+
behaves_like 'configurable using config proc'
|
251
|
+
end
|
252
|
+
|
253
|
+
describe '> configuring (using user-specified config file)' do
|
174
254
|
|
175
|
-
|
176
|
-
|
255
|
+
before do
|
256
|
+
class << Clamsy::Configuration
|
257
|
+
def ruby_platform ; 'linux' ; end
|
258
|
+
def new(file, is_base_config, default_configs={})
|
259
|
+
is_base_config ? _orig_new($bundled_config_file, true) :
|
260
|
+
_orig_new(file, is_base_config, default_configs)
|
261
|
+
end
|
262
|
+
end
|
263
|
+
@bundled_config = {
|
264
|
+
'printer' => 'super',
|
265
|
+
'ooffice_bin' => '/super/ooffice_bin',
|
266
|
+
'java_bin' => '/super/java',
|
267
|
+
'config_file' => '/default/user/config/file',
|
268
|
+
'super' => {'super_setting1' => 'super_setting'},
|
269
|
+
'duper' => {'duper_setting1' => 'duper_setting'}
|
270
|
+
}
|
271
|
+
@write_bundled_config[{'linux' => @bundled_config}]
|
272
|
+
end
|
273
|
+
|
274
|
+
%w{printer ooffice_bin java_bin}.each do |setting|
|
275
|
+
should "use specified :#{setting} if it has been specified" do
|
276
|
+
other_val = @bundled_config[setting].sub('super','duper')
|
277
|
+
@write_user_config[{setting => other_val}]
|
278
|
+
Clamsy.configure do |config|
|
279
|
+
config.config_file = $user_config_file
|
280
|
+
config.send(setting).should.equal other_val
|
281
|
+
end
|
282
|
+
end
|
283
|
+
should "use default :#{setting} if it has not been specified" do
|
284
|
+
@write_user_config[{}]
|
285
|
+
Clamsy.configure do |config|
|
286
|
+
config.send(setting).should.equal @bundled_config[setting]
|
287
|
+
config.config_file = $user_config_file
|
288
|
+
config.send(setting).should.equal @bundled_config[setting]
|
289
|
+
end
|
290
|
+
end
|
291
|
+
end
|
292
|
+
|
293
|
+
should "use specified printer-specific setting if it has been specified" do
|
294
|
+
other_val = @bundled_config['super']['super_setting1'].sub('super','duper')
|
295
|
+
@write_user_config[{'super' => {'super_setting1' => other_val}}]
|
177
296
|
Clamsy.configure do |config|
|
178
297
|
config.config_file = $user_config_file
|
179
|
-
config.
|
298
|
+
config.super_setting1.should.equal other_val
|
180
299
|
end
|
181
300
|
end
|
182
301
|
|
183
|
-
should
|
184
|
-
@
|
302
|
+
should "use default printer-specific setting if it has not been specified" do
|
303
|
+
@write_user_config[{}]
|
185
304
|
Clamsy.configure do |config|
|
186
|
-
config.
|
187
|
-
config.printer.should.equal 'cups_pdf'
|
305
|
+
config.super_setting1.should.equal @bundled_config['super']['super_setting1']
|
188
306
|
end
|
189
307
|
end
|
190
308
|
|
191
309
|
should "raise Clamsy::ConfigFileSettingNotSupportedError if :config_file has been specified" do
|
192
|
-
@
|
310
|
+
@write_user_config[{'config_file' => '/yet/another/config/file'}]
|
193
311
|
lambda {
|
194
312
|
Clamsy.configure {|config| config.config_file = $user_config_file }
|
195
313
|
}.should.raise(Clamsy::ConfigFileSettingNotSupportedError).
|
@@ -198,89 +316,131 @@ describe "Clamsy configuration" do
|
|
198
316
|
)
|
199
317
|
end
|
200
318
|
|
201
|
-
|
202
|
-
@write_config[{'printer' => 'cups_pdf', 'cups_pdf' => {'cups_output_dir' => '/x/y/z'}}]
|
203
|
-
Clamsy.configure do |config|
|
204
|
-
config.config_file = $user_config_file
|
205
|
-
config.cups_output_dir.should.equal '/x/y/z'
|
206
|
-
end
|
207
|
-
end
|
319
|
+
end
|
208
320
|
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
321
|
+
describe '> configuring (with clashes in user config file & config proc)' do
|
322
|
+
|
323
|
+
before do
|
324
|
+
class << Clamsy::Configuration
|
325
|
+
def ruby_platform ; 'linux' ; end
|
326
|
+
def new(file, is_base_config, default_configs={})
|
327
|
+
is_base_config ? _orig_new($bundled_config_file, true) :
|
328
|
+
_orig_new(file, is_base_config, default_configs)
|
329
|
+
end
|
330
|
+
end
|
331
|
+
@bundled_config = {
|
332
|
+
'printer' => 'super',
|
333
|
+
'ooffice_bin' => '/super/ooffice_bin',
|
334
|
+
'java_bin' => '/super/java',
|
335
|
+
'config_file' => $user_config_file,
|
336
|
+
'super' => {'super_setting1' => 'super_setting'},
|
337
|
+
'duper' => {'duper_setting1' => 'duper_setting'},
|
338
|
+
'guper' => {'guper_setting1' => 'guper_setting'},
|
339
|
+
}
|
340
|
+
@write_bundled_config[{'linux' => @bundled_config}]
|
341
|
+
end
|
342
|
+
|
343
|
+
%w{printer ooffice_bin java_bin}.each do |setting|
|
344
|
+
should "use proc specified :#{setting} if it has been specified in both config proc & file" do
|
345
|
+
config_file_val = @bundled_config[setting].sub('super','duper')
|
346
|
+
config_proc_val = @bundled_config[setting].sub('super','guper')
|
347
|
+
@write_user_config[{setting => config_file_val}]
|
348
|
+
Clamsy.configure do |config|
|
349
|
+
config.send(:"#{setting}=", config_proc_val)
|
350
|
+
config.send(setting).should.equal config_proc_val
|
351
|
+
end
|
352
|
+
end
|
353
|
+
should "use file specified :#{setting} if it has not been specified in config proc" do
|
354
|
+
config_file_val = @bundled_config[setting].sub('super','duper')
|
355
|
+
@write_user_config[{setting => config_file_val}]
|
356
|
+
Clamsy.configure do |config|
|
357
|
+
config.send(setting).should.equal config_file_val
|
358
|
+
end
|
214
359
|
end
|
215
360
|
end
|
216
361
|
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
should 'use proc specified :printer if it is specified in both config proc & file' do
|
222
|
-
@write_config[{'printer' => 'dummy'}]
|
362
|
+
should "use proc specified printer-specific setting if it has been specified in both config proc & file" do
|
363
|
+
config_file_val = @bundled_config['super']['super_setting1'].sub('super','duper')
|
364
|
+
config_proc_val = @bundled_config['super']['super_setting1'].sub('super','guper')
|
365
|
+
@write_user_config[{'super' => {'super_setting1' => config_file_val}}]
|
223
366
|
Clamsy.configure do |config|
|
224
|
-
|
225
|
-
config.
|
226
|
-
config.printer = 'mummy'
|
227
|
-
config.printer.should.equal 'mummy'
|
228
|
-
config.config_file = $user_config_file
|
229
|
-
config.printer.should.equal 'mummy'
|
367
|
+
config.super_setting1 = config_proc_val
|
368
|
+
config.super_setting1.should.equal config_proc_val
|
230
369
|
end
|
231
370
|
end
|
232
371
|
|
233
|
-
should
|
234
|
-
@
|
372
|
+
should "use file specified printer-specific setting if it has not been specified in config proc" do
|
373
|
+
config_file_val = @bundled_config['super']['super_setting1'].sub('super','duper')
|
374
|
+
@write_user_config[{'printer' => 'super', 'super' => {'super_setting1' => config_file_val}}]
|
235
375
|
Clamsy.configure do |config|
|
236
|
-
|
237
|
-
config.config_file = $user_config_file
|
238
|
-
config.cups_output_dir = '/a/b/c'
|
239
|
-
config.cups_output_dir.should.equal '/a/b/c'
|
240
|
-
config.config_file = $user_config_file
|
241
|
-
config.cups_output_dir.should.equal '/a/b/c'
|
376
|
+
config.super_setting1.should.equal config_file_val
|
242
377
|
end
|
243
378
|
end
|
244
379
|
|
245
380
|
end
|
246
381
|
|
247
|
-
describe '> configuring can also be done while doing
|
382
|
+
describe '> configuring can also be done while doing Clamsy.process(...)' do
|
383
|
+
|
384
|
+
class << self
|
385
|
+
def clamsy_configure(&blk)
|
386
|
+
Clamsy.process([], '/dummy/template/doc', '/dummy/final/pdf', &blk)
|
387
|
+
end
|
388
|
+
end
|
248
389
|
|
249
390
|
before do
|
250
391
|
class << Clamsy
|
392
|
+
alias_method :orig_generate_pdf, :generate_pdf
|
251
393
|
def generate_pdf(*args) ; end
|
252
394
|
end
|
253
395
|
end
|
254
396
|
|
255
|
-
|
256
|
-
|
257
|
-
|
397
|
+
after do
|
398
|
+
class << Clamsy
|
399
|
+
alias_method :generate_pdf, :orig_generate_pdf
|
258
400
|
end
|
259
|
-
Clamsy.configure {|config| config.printer.should.equal 'dummy' }
|
260
401
|
end
|
261
402
|
|
262
|
-
|
263
|
-
Clamsy.process([], '/dummy/template/doc', '/dummy/final/pdf')
|
264
|
-
Clamsy.configure {|config| config.printer.should.equal 'cups_pdf' }
|
265
|
-
end
|
403
|
+
behaves_like 'configurable using config proc'
|
266
404
|
|
267
405
|
end
|
268
406
|
|
269
407
|
describe '> retrieving of config values' do
|
270
408
|
|
409
|
+
before do
|
410
|
+
class << Clamsy::Configuration
|
411
|
+
def ruby_platform ; 'linux' ; end
|
412
|
+
def new(file, is_base_config, default_configs={})
|
413
|
+
is_base_config ? _orig_new($bundled_config_file, true) :
|
414
|
+
_orig_new(file, is_base_config, default_configs)
|
415
|
+
end
|
416
|
+
end
|
417
|
+
end
|
418
|
+
|
271
419
|
should 'replace any ${...} with matching environment variable value' do
|
272
|
-
@
|
420
|
+
@write_bundled_config[{
|
421
|
+
'linux' => {
|
422
|
+
'printer' => 'super',
|
423
|
+
'ooffice_bin' => '/super/ooffice_bin',
|
424
|
+
'java_bin' => '/super/java',
|
425
|
+
'config_file' => '/${USER}/${HOME}/clamsy.yml',
|
426
|
+
'super' => {},
|
427
|
+
}}]
|
273
428
|
Clamsy.configure do |config|
|
274
|
-
config.config_file
|
275
|
-
config.output_dir.should.equal "/home/#{ENV['USER']}"
|
429
|
+
config.config_file.should.equal "/#{ENV['USER']}/#{ENV['HOME']}/clamsy.yml"
|
276
430
|
end
|
277
431
|
end
|
278
432
|
|
279
433
|
should "replace any ${...} wo matching environment variable with blank string" do
|
280
|
-
@
|
434
|
+
@write_bundled_config[{
|
435
|
+
'linux' => {
|
436
|
+
'printer' => 'super',
|
437
|
+
'ooffice_bin' => '/super/ooffice_bin',
|
438
|
+
'java_bin' => '/super/java',
|
439
|
+
'config_file' => '/${WATEVER}/clamsy.yml',
|
440
|
+
'super' => {},
|
441
|
+
}}]
|
281
442
|
Clamsy.configure do |config|
|
282
|
-
config.config_file
|
283
|
-
config.output_dir.should.equal "/home/"
|
443
|
+
config.config_file.should.equal "//clamsy.yml"
|
284
444
|
end
|
285
445
|
end
|
286
446
|
|