cups 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- data/ext/cups.c +23 -22
- data/test/cups_test.rb +26 -28
- metadata +2 -2
data/ext/cups.c
CHANGED
@@ -40,7 +40,7 @@ int printer_exists(VALUE printer){
|
|
40
40
|
// First call Cups#show_destinations
|
41
41
|
VALUE dest_list = rb_funcall(rubyCups, rb_intern("show_destinations"), 0);
|
42
42
|
// Then check the printer arg is included in the returned array...
|
43
|
-
rb_ary_includes(dest_list, printer) ? 1 : 0;
|
43
|
+
return rb_ary_includes(dest_list, printer) ? 1 : 0;
|
44
44
|
}
|
45
45
|
|
46
46
|
/*
|
@@ -116,7 +116,7 @@ static VALUE cups_print(VALUE self)
|
|
116
116
|
char *fname = RSTRING_PTR(file); // Filename
|
117
117
|
char *title = T_STRING == TYPE(rname) ? RSTRING_PTR(rname) : "rCups";
|
118
118
|
char *target = RSTRING_PTR(printer); // Target printer string
|
119
|
-
char *url = RSTRING_PTR(url_path); // Server URL address
|
119
|
+
const char *url = RSTRING_PTR(url_path); // Server URL address
|
120
120
|
int port = 631; // Default CUPS port
|
121
121
|
|
122
122
|
VALUE job_options = rb_iv_get(self, "@job_options");
|
@@ -198,8 +198,9 @@ static VALUE cups_get_default(VALUE self)
|
|
198
198
|
VALUE def_p = rb_str_new2(default_printer);
|
199
199
|
|
200
200
|
return def_p;
|
201
|
+
} else {
|
202
|
+
return Qnil;
|
201
203
|
}
|
202
|
-
// should return nil if no default printer is found!
|
203
204
|
}
|
204
205
|
|
205
206
|
/*
|
@@ -336,27 +337,27 @@ static VALUE cups_job_completed(VALUE self)
|
|
336
337
|
|
337
338
|
if (NIL_P(job_id)) {
|
338
339
|
return Qfalse;
|
339
|
-
}
|
340
|
-
num_jobs = cupsGetJobs(&jobs, printer_arg, 1, -1); // Get jobs
|
341
|
-
// job_state = IPP_JOB_COMPLETED;
|
340
|
+
}
|
342
341
|
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
cupsFreeJobs(num_jobs, jobs);
|
351
|
-
|
352
|
-
if (job_state == IPP_JOB_COMPLETED) {
|
353
|
-
return Qtrue;
|
354
|
-
} else {
|
355
|
-
return Qfalse;
|
356
|
-
}
|
357
|
-
|
342
|
+
num_jobs = cupsGetJobs(&jobs, printer_arg, 1, -1); // Get jobs
|
343
|
+
|
344
|
+
// find our job
|
345
|
+
for (i = 0; i < num_jobs; i ++) {
|
346
|
+
if (jobs[i].id == NUM2INT(job_id)) {
|
347
|
+
job_state = jobs[i].state;
|
348
|
+
break;
|
358
349
|
}
|
359
|
-
}
|
350
|
+
}
|
351
|
+
|
352
|
+
// Free job array
|
353
|
+
cupsFreeJobs(num_jobs, jobs);
|
354
|
+
|
355
|
+
if (job_state == IPP_JOB_COMPLETED) {
|
356
|
+
return Qtrue;
|
357
|
+
} else {
|
358
|
+
return Qfalse;
|
359
|
+
}
|
360
|
+
|
360
361
|
}
|
361
362
|
|
362
363
|
/*
|
data/test/cups_test.rb
CHANGED
@@ -20,61 +20,59 @@ class CupsTest < Test::Unit::TestCase
|
|
20
20
|
assert cups_destinations.is_a?(Array)
|
21
21
|
assert_equal cups_destinations, lplist
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
def test_can_instantiate_print_job_object_with_correct_args
|
25
25
|
assert_raise(ArgumentError) do
|
26
26
|
Cups::PrintJob.new
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
assert_nothing_raised do
|
30
30
|
Cups::PrintJob.new("/path", @printer)
|
31
|
-
Cups::PrintJob.new("/path")
|
31
|
+
Cups::PrintJob.new("/path") if Cups.default_printer
|
32
32
|
end
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
def test_job_defaults_to_default
|
36
36
|
assert_nothing_raised do
|
37
|
-
|
38
|
-
|
39
|
-
|
37
|
+
if Cups.default_printer
|
38
|
+
pj = Cups::PrintJob.new( "/non/existent/file" )
|
39
|
+
assert_equal Cups.default_printer, pj.instance_variable_get(:@printer)
|
40
|
+
end
|
40
41
|
end
|
41
42
|
end
|
42
|
-
|
43
|
+
|
43
44
|
def test_we_cant_print_to_nonexistent_printers
|
44
|
-
assert_raise(
|
45
|
+
assert_raise(ArgumentError) do
|
45
46
|
pj = Cups::PrintJob.new("/non/existent/file", "bollocks_printer")
|
46
|
-
|
47
47
|
assert !Cups.show_destinations.include?(pj.instance_variable_get(:@printer))
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
51
|
def test_we_cant_print_nonexistent_files
|
52
|
-
pj = Cups::PrintJob.new("soft_class")
|
53
|
-
|
52
|
+
pj = Cups::PrintJob.new("soft_class",@printer)
|
54
53
|
assert_raise(RuntimeError) do
|
55
|
-
|
54
|
+
pj.print
|
56
55
|
end
|
57
|
-
|
58
56
|
assert_nil pj.job_id
|
59
57
|
end
|
60
|
-
|
58
|
+
|
61
59
|
def test_we_can_pass_args_down_as_options
|
62
60
|
options = {:foo => 'bar'}
|
63
61
|
pj = Cups::PrintJob.new(sample, @printer, options)
|
64
62
|
assert_equal(options, pj.job_options)
|
65
63
|
end
|
66
|
-
|
64
|
+
|
67
65
|
def test_we_can_only_pass_strings_down_as_options
|
68
66
|
options = {:foo => 'bar'}
|
69
67
|
pj = Cups::PrintJob.new(sample, @printer, options)
|
70
68
|
assert_raise(TypeError) { pj.print }
|
71
69
|
end
|
72
|
-
|
70
|
+
|
73
71
|
def test_we_can_omit_options_and_will_set_to_empty
|
74
72
|
pj = Cups::PrintJob.new(sample, @printer)
|
75
73
|
assert_equal({}, pj.job_options)
|
76
74
|
end
|
77
|
-
|
75
|
+
|
78
76
|
def test_print_job_cancellation
|
79
77
|
pj = Cups::PrintJob.new(sample, @printer)
|
80
78
|
pj.print
|
@@ -82,13 +80,13 @@ class CupsTest < Test::Unit::TestCase
|
|
82
80
|
assert_equal pj.cancel, true
|
83
81
|
assert pj.job_id.is_a?(Fixnum)
|
84
82
|
end
|
85
|
-
|
83
|
+
|
86
84
|
def test_all_jobs_raises_with_nonexistent_printers
|
87
85
|
assert_raise(RuntimeError) { Cups.all_jobs(nil) }
|
88
86
|
end
|
89
|
-
|
87
|
+
|
90
88
|
def test_all_jobs_returns_hash
|
91
|
-
assert Cups.all_jobs(
|
89
|
+
assert Cups.all_jobs(@printer).is_a?(Hash)
|
92
90
|
end
|
93
91
|
|
94
92
|
def test_all_jobs_hash_contains_info_hash
|
@@ -98,11 +96,11 @@ class CupsTest < Test::Unit::TestCase
|
|
98
96
|
assert info.is_a?(Hash)
|
99
97
|
assert info.keys.all?{|key| [:title, :format, :submitted_by, :state, :size].include?(key)}
|
100
98
|
end
|
101
|
-
|
99
|
+
|
102
100
|
def test_dest_list_returns_array
|
103
101
|
assert Cups.show_destinations.is_a?(Array)
|
104
102
|
end
|
105
|
-
|
103
|
+
|
106
104
|
def test_dest_options_returns_hash_if_real
|
107
105
|
assert Cups.options_for(@printer).is_a?(Hash)
|
108
106
|
end
|
@@ -128,7 +126,7 @@ class CupsTest < Test::Unit::TestCase
|
|
128
126
|
end
|
129
127
|
|
130
128
|
def test_returns_failure_string_on_cancellation
|
131
|
-
pj = Cups::PrintJob.new(
|
129
|
+
pj = Cups::PrintJob.new(sample, @printer)
|
132
130
|
pj.print
|
133
131
|
|
134
132
|
# assert pj.job_id == 0 # Failed jobs have an ID of zero
|
@@ -148,20 +146,20 @@ class CupsTest < Test::Unit::TestCase
|
|
148
146
|
assert pj.state == :cancelled
|
149
147
|
assert !pj.completed?
|
150
148
|
end
|
151
|
-
|
149
|
+
|
152
150
|
def test_print_job_attributes
|
153
|
-
pj = Cups::PrintJob.new(sample)
|
151
|
+
pj = Cups::PrintJob.new(sample, @printer)
|
154
152
|
[:printer, :filename, :job_id].each do |attr|
|
155
153
|
assert pj.respond_to?(attr)
|
156
154
|
end
|
157
155
|
end
|
158
156
|
|
159
157
|
private
|
160
|
-
|
158
|
+
|
161
159
|
def sample
|
162
160
|
"#{File.dirname(__FILE__)}/sample.txt"
|
163
161
|
end
|
164
|
-
|
162
|
+
|
165
163
|
def blank_sample
|
166
164
|
"#{File.dirname(__FILE__)}/sample_blank.txt"
|
167
165
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cups
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2013-
|
15
|
+
date: 2013-07-14 00:00:00.000000000 Z
|
16
16
|
dependencies: []
|
17
17
|
description: ! ' Ruby CUPS provides a wrapper for the Common UNIX Printing System,
|
18
18
|
allowing rubyists to perform basic tasks like printer discovery, job submission
|