libnotify 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -4,3 +4,5 @@ coverage
4
4
  tags
5
5
  .yardoc
6
6
  .bundle
7
+ Gemfile.lock
8
+ *.rbc
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ rvm:
2
+ - ree
3
+ - 1.9.2
4
+ - jruby
data/Gemfile CHANGED
@@ -1,11 +1,3 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem "ffi", ">= 0.6.2"
4
-
5
- group :test do
6
- gem "jeweler"
7
- gem "watchr"
8
- gem "riot", "= 0.11.2"
9
- gem "riot_notifier", "~> 0.4.0"
10
- gem "yard"
11
- end
3
+ gemspec
data/Rakefile CHANGED
@@ -1,37 +1,16 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ RUBIES = %w[ree 1.9.2 jruby]
5
+
1
6
  require 'rake'
2
7
  require 'rake/rdoctask'
3
8
  require 'rubygems'
4
9
 
5
- begin
6
- require 'jeweler'
7
- Jeweler::Tasks.new do |gem|
8
- gem.name = "libnotify"
9
- gem.summary = 'Ruby bindings for libnotify using FFI'
10
- gem.email = "peter-libnotify@suschlik.de"
11
- gem.homepage = "http://github.com/splattael/libnotify"
12
- gem.authors = ["Peter Suschlik"]
13
-
14
- gem.has_rdoc = true
15
- gem.extra_rdoc_files = [ "README.rdoc" ]
16
-
17
- gem.add_dependency "ffi", ">= 0.6.2"
18
-
19
- gem.add_development_dependency "riot", "= 0.11.2"
20
- gem.add_development_dependency "riot_notifier"
21
- gem.add_development_dependency "yard"
22
-
23
- gem.test_files = Dir.glob('test/test_*.rb')
24
- end
25
- Jeweler::GemcutterTasks.new
26
- rescue LoadError
27
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
28
- end
29
-
30
10
  # Test
31
11
  require 'rake/testtask'
32
12
  desc 'Default: run unit tests.'
33
13
  task :default => :test
34
- task :test => :check_dependencies
35
14
 
36
15
  Rake::TestTask.new(:test) do |test|
37
16
  test.test_files = FileList.new('test/test_*.rb')
@@ -39,6 +18,19 @@ Rake::TestTask.new(:test) do |test|
39
18
  test.verbose = true
40
19
  end
41
20
 
21
+ desc "Test with several ruby versions"
22
+ task :"test:rubies" do
23
+ command = "bundle check || bundle install && rake"
24
+ RUBIES.each do |ruby|
25
+ rvm = "#{ruby}@libnotify"
26
+ puts "\n" * 3
27
+ puts "RVM: #{rvm}"
28
+ puts "=" * 40
29
+
30
+ system %{rvm #{rvm} exec bash -c '#{command}'}
31
+ end
32
+ end
33
+
42
34
  # Yard
43
35
  begin
44
36
  require 'yard'
@@ -0,0 +1,110 @@
1
+ module Libnotify
2
+ # API for Libnotify
3
+ #
4
+ # @see Libnotify
5
+ class API
6
+ include FFI
7
+
8
+ attr_reader :timeout, :icon_path
9
+ attr_accessor :summary, :body, :urgency, :append
10
+
11
+ class << self
12
+ # List of globs to icons
13
+ attr_accessor :icon_dirs
14
+ end
15
+
16
+ self.icon_dirs = [
17
+ "/usr/share/icons/gnome/48x48/emblems",
18
+ "/usr/share/icons/gnome/256x256/emblems",
19
+ "/usr/share/icons/gnome/*/emblems"
20
+ ]
21
+
22
+ # Creates a notification object.
23
+ #
24
+ # @see Libnotify.new
25
+ def initialize(options={}, &block)
26
+ set_defaults
27
+ options.each { |key, value| send("#{key}=", value) if respond_to?(key) }
28
+ yield(self) if block_given?
29
+ end
30
+
31
+ def set_defaults
32
+ self.summary = self.body = ' '
33
+ self.urgency = :normal
34
+ self.timeout = nil
35
+ self.append = true
36
+ end
37
+ private :set_defaults
38
+
39
+ # Shows a notification.
40
+ #
41
+ # @see Libnotify.show
42
+ def show!
43
+ notify_init(self.class.to_s) or raise "notify_init failed"
44
+ notify = notify_notification_new(summary, body, icon_path, nil)
45
+ notify_notification_set_urgency(notify, urgency)
46
+ notify_notification_set_timeout(notify, timeout || -1)
47
+ if append
48
+ notify_notification_set_hint_string(notify, "x-canonical-append", "")
49
+ notify_notification_set_hint_string(notify, "append", "")
50
+ end
51
+ notify_notification_show(notify, nil)
52
+ ensure
53
+ notify_notification_clear_hints(notify) if append
54
+ end
55
+
56
+ # @todo Simplify timeout=
57
+ def timeout=(timeout)
58
+ @timeout = case timeout
59
+ when Float
60
+ timeout /= 10 if RUBY_VERSION == "1.8.6" # Strange workaround?
61
+ (timeout * 1000).to_i
62
+ when Fixnum
63
+ if timeout >= 100 # assume miliseconds
64
+ timeout
65
+ else
66
+ timeout * 1000
67
+ end
68
+ when NilClass, FalseClass
69
+ nil
70
+ else
71
+ timeout.to_s.to_i
72
+ end
73
+ end
74
+
75
+ # Sets icon path.
76
+ #
77
+ # Path can be absolute, relative (will be resolved) or an symbol.
78
+ #
79
+ # @todo document and refactor
80
+ def icon_path=(path)
81
+ case path
82
+ when /^\// # absolute
83
+ @icon_path = path
84
+ when String
85
+ # TODO refactor!
86
+ self.class.icon_dirs.map { |d| Dir[d] }.flatten.uniq.each do |dir|
87
+ full_path = File.join(dir, path)
88
+ if File.exist?(full_path)
89
+ @icon_path = full_path
90
+ return
91
+ end
92
+ end
93
+ @icon_path = path
94
+ when Symbol
95
+ self.icon_path = "#{path}.png"
96
+ else
97
+ @icon_path = nil
98
+ end
99
+ end
100
+
101
+ # Creates and shows a notification. It's a shortcut for +Libnotify.new(options).show!+.
102
+ #
103
+ # @see Libnotify.show
104
+ # @see Libnotify.new
105
+ def self.show(options={}, &block)
106
+ new(options, &block).show!
107
+ end
108
+
109
+ end
110
+ end
@@ -0,0 +1,35 @@
1
+ module Libnotify
2
+ # Raw FFI bindings.
3
+ module FFI
4
+ require 'ffi'
5
+ extend ::FFI::Library
6
+
7
+ def self.included(base)
8
+ ffi_lib %w[libnotify libnotify.so libnotify.so.1]
9
+ attach_functions!
10
+ rescue LoadError => e
11
+ warn e.message
12
+ end
13
+
14
+ enum :urgency, [ :low, :normal, :critical ]
15
+
16
+ def self.attach_functions!
17
+ attach_function :notify_init, [:string], :bool
18
+ attach_function :notify_uninit, [], :void
19
+ attach_function :notify_notification_new, [:string, :string, :string, :pointer], :pointer
20
+ attach_function :notify_notification_set_urgency, [:pointer, :urgency], :void
21
+ attach_function :notify_notification_set_timeout, [:pointer, :long], :void
22
+ attach_function :notify_notification_set_hint_string, [:pointer, :string, :string], :void
23
+ attach_function :notify_notification_clear_hints, [:pointer], :void
24
+ attach_function :notify_notification_show, [:pointer, :pointer], :bool
25
+ end
26
+
27
+ def method_missing(method, *args, &block)
28
+ if method.to_s =~ /^notify_/
29
+ warn "libnotify.so not found!"
30
+ end
31
+
32
+ super
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,3 @@
1
+ module Libnotify
2
+ VERSION = "0.5.1"
3
+ end
data/lib/libnotify.rb CHANGED
@@ -1,5 +1,3 @@
1
- require 'ffi'
2
-
3
1
  # Ruby bindings for libnotify using FFI.
4
2
  #
5
3
  # See README.rdoc for usage examples.
@@ -8,7 +6,6 @@ require 'ffi'
8
6
  # @see Libnotify.new
9
7
  # @author Peter Suschlik
10
8
  module Libnotify
11
-
12
9
  # Creates a notification.
13
10
  #
14
11
  # @example Block syntax
@@ -55,129 +52,7 @@ module Libnotify
55
52
  API.show(options, &block)
56
53
  end
57
54
 
58
- # Raw FFI bindings.
59
- module FFI
60
- extend ::FFI::Library
61
-
62
- ffi_lib %w(libnotify libnotify.so libnotify.so.1)
63
-
64
- enum :urgency, [ :low, :normal, :critical ]
65
-
66
- attach_function :notify_init, [:string], :bool
67
- attach_function :notify_uninit, [], :void
68
-
69
- attach_function :notify_notification_new, [:string, :string, :string, :pointer], :pointer
70
- attach_function :notify_notification_set_urgency, [:pointer, :urgency], :void
71
- attach_function :notify_notification_set_timeout, [:pointer, :long], :void
72
- attach_function :notify_notification_set_hint_string, [:pointer, :string, :string], :void
73
- attach_function :notify_notification_clear_hints, [:pointer], :void
74
- attach_function :notify_notification_show, [:pointer, :pointer], :bool
75
- end
76
-
77
- class API
78
- include FFI
79
-
80
- attr_reader :timeout, :icon_path
81
- attr_accessor :summary, :body, :urgency, :append
82
-
83
- class << self
84
- # List of globs to icons
85
- attr_accessor :icon_dirs
86
- end
87
-
88
- self.icon_dirs = [
89
- "/usr/share/icons/gnome/48x48/emblems",
90
- "/usr/share/icons/gnome/256x256/emblems",
91
- "/usr/share/icons/gnome/*/emblems"
92
- ]
93
-
94
- # Creates a notification object.
95
- #
96
- # @see Libnotify.new
97
- def initialize(options={}, &block)
98
- set_defaults
99
- options.each { |key, value| send("#{key}=", value) if respond_to?(key) }
100
- yield(self) if block_given?
101
- end
102
-
103
- def set_defaults
104
- self.summary = self.body = ' '
105
- self.urgency = :normal
106
- self.timeout = nil
107
- self.append = true
108
- end
109
- private :set_defaults
110
-
111
- # Shows a notification.
112
- #
113
- # @see Libnotify.show
114
- def show!
115
- notify_init(self.class.to_s) or raise "notify_init failed"
116
- notify = notify_notification_new(summary, body, icon_path, nil)
117
- notify_notification_set_urgency(notify, urgency)
118
- notify_notification_set_timeout(notify, timeout || -1)
119
- if append
120
- notify_notification_set_hint_string(notify, "x-canonical-append", "")
121
- notify_notification_set_hint_string(notify, "append", "")
122
- end
123
- notify_notification_show(notify, nil)
124
- ensure
125
- notify_notification_clear_hints(notify) if append
126
- end
127
-
128
- # @todo Simplify timeout=
129
- def timeout=(timeout)
130
- @timeout = case timeout
131
- when Float
132
- timeout /= 10 if RUBY_VERSION == "1.8.6" # Strange workaround?
133
- (timeout * 1000).to_i
134
- when Fixnum
135
- if timeout >= 100 # assume miliseconds
136
- timeout
137
- else
138
- timeout * 1000
139
- end
140
- when NilClass, FalseClass
141
- nil
142
- else
143
- timeout.to_s.to_i
144
- end
145
- end
146
-
147
- # Sets icon path.
148
- #
149
- # Path can be absolute, relative (will be resolved) or an symbol.
150
- #
151
- # @todo document and refactor
152
- def icon_path=(path)
153
- case path
154
- when /^\// # absolute
155
- @icon_path = path
156
- when String
157
- # TODO refactor!
158
- self.class.icon_dirs.map { |d| Dir[d] }.flatten.uniq.each do |dir|
159
- full_path = File.join(dir, path)
160
- if File.exist?(full_path)
161
- @icon_path = full_path
162
- return
163
- end
164
- end
165
- @icon_path = path
166
- when Symbol
167
- self.icon_path = "#{path}.png"
168
- else
169
- @icon_path = nil
170
- end
171
- end
172
-
173
- # Creates and shows a notification. It's a shortcut for +Libnotify.new(options).show!+.
174
- #
175
- # @see Libnotify.show
176
- # @see Libnotify.new
177
- def self.show(options={}, &block)
178
- new(options, &block).show!
179
- end
180
-
181
- end
182
-
55
+ autoload :VERSION, 'libnotify/version'
56
+ autoload :API, 'libnotify/api'
57
+ autoload :FFI, 'libnotify/ffi'
183
58
  end
data/libnotify.gemspec CHANGED
@@ -1,63 +1,23 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
1
  # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "libnotify"
5
4
 
6
5
  Gem::Specification.new do |s|
7
- s.name = %q{libnotify}
8
- s.version = "0.5.0"
6
+ s.name = "libnotify"
7
+ s.version = Libnotify::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Peter Suschlik"]
10
+ s.email = ["peter-libnotify@suschlik.de"]
11
+ s.homepage = "http://rubygems.org/gems/libnotify"
12
+ s.summary = %q{Ruby bindings for libnotify using FFI}
9
13
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Peter Suschlik"]
12
- s.date = %q{2011-05-05}
13
- s.email = %q{peter-libnotify@suschlik.de}
14
- s.extra_rdoc_files = [
15
- "README.rdoc"
16
- ]
17
- s.files = [
18
- ".gitignore",
19
- ".rvmrc",
20
- "Gemfile",
21
- "Gemfile.lock",
22
- "README.rdoc",
23
- "Rakefile",
24
- "VERSION",
25
- "lib/libnotify.rb",
26
- "libnotify.gemspec",
27
- "libnotify.png",
28
- "test.watchr",
29
- "test/helper.rb",
30
- "test/test_libnotify.rb"
31
- ]
32
- s.homepage = %q{http://github.com/splattael/libnotify}
33
- s.rdoc_options = ["--charset=UTF-8"]
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
34
17
  s.require_paths = ["lib"]
35
- s.rubygems_version = %q{1.3.7}
36
- s.summary = %q{Ruby bindings for libnotify using FFI}
37
- s.test_files = [
38
- "test/test_libnotify.rb"
39
- ]
40
18
 
41
- if s.respond_to? :specification_version then
42
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
43
- s.specification_version = 3
19
+ s.add_runtime_dependency 'ffi', '~> 1.0'
44
20
 
45
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
46
- s.add_runtime_dependency(%q<ffi>, [">= 0.6.2"])
47
- s.add_development_dependency(%q<riot>, ["= 0.11.2"])
48
- s.add_development_dependency(%q<riot_notifier>, [">= 0"])
49
- s.add_development_dependency(%q<yard>, [">= 0"])
50
- else
51
- s.add_dependency(%q<ffi>, [">= 0.6.2"])
52
- s.add_dependency(%q<riot>, ["= 0.11.2"])
53
- s.add_dependency(%q<riot_notifier>, [">= 0"])
54
- s.add_dependency(%q<yard>, [">= 0"])
55
- end
56
- else
57
- s.add_dependency(%q<ffi>, [">= 0.6.2"])
58
- s.add_dependency(%q<riot>, ["= 0.11.2"])
59
- s.add_dependency(%q<riot_notifier>, [">= 0"])
60
- s.add_dependency(%q<yard>, [">= 0"])
61
- end
21
+ s.add_development_dependency 'minitest'
22
+ s.add_development_dependency 'yard'
62
23
  end
63
-
data/test/helper.rb CHANGED
@@ -1,8 +1,5 @@
1
1
  require 'rubygems'
2
- require 'riot'
3
- require 'riot/rr'
4
- require 'riot_notifier'
2
+ require 'bundler/setup'
3
+ require 'minitest/autorun'
5
4
 
6
5
  require 'libnotify'
7
-
8
- Riot.reporter = RiotNotifier
@@ -1,87 +1,109 @@
1
1
  require 'helper'
2
2
 
3
- context Libnotify do
4
- setup { Libnotify }
3
+ class TestLibnotify < MiniTest::Unit::TestCase
4
+ def test_respond_to
5
+ assert_respond_to Libnotify, :new
6
+ assert_respond_to Libnotify, :show
7
+ end
5
8
 
6
- asserts_topic("responds to new").respond_to(:new)
7
- asserts_topic("responds to show").respond_to(:show)
9
+ def test_delegation
10
+ skip "test delegation using mock"
8
11
 
9
- asserts("#new calls API#new") do
10
- mock(Libnotify::API).new(hash_including(:body => "test")) { true }
11
- Libnotify.new(:body => "test")
12
+ # old code
13
+ asserts("#new calls API#new") do
14
+ mock(Libnotify::API).new(hash_including(:body => "test")) { true }
15
+ Libnotify.new(:body => "test")
16
+ end
17
+ asserts("#show calls API#show") do
18
+ mock(Libnotify::API).show(hash_including(:body => "test")) { true }
19
+ Libnotify.show(:body => "test")
20
+ end
12
21
  end
13
- asserts("#show calls API#show") do
14
- mock(Libnotify::API).show(hash_including(:body => "test")) { true }
15
- Libnotify.show(:body => "test")
22
+
23
+ def test_version
24
+ assert defined?(Libnotify::VERSION), "version is defined"
25
+ assert Libnotify::VERSION
16
26
  end
17
27
  end
18
28
 
19
- context Libnotify::API do
20
- setup { Libnotify::API }
29
+ class TestLibnotifyAPI < MiniTest::Unit::TestCase
30
+ def test_without_options_and_block
31
+ assert_equal " ", libnotify.summary
32
+ assert_equal " ", libnotify.body
33
+ assert_equal :normal, libnotify.urgency
34
+ assert_nil libnotify.timeout
35
+ assert_nil libnotify.icon_path
36
+ assert libnotify.append
37
+ end
21
38
 
22
- context "without options and block" do
23
- setup { topic.new }
39
+ def test_with_options_and_block
40
+ libnotify(:summary => "hello", :body => "body", :invalid_option => 23) do |n|
41
+ n.body = "overwritten"
42
+ n.icon_path = "/path/to/icon"
43
+ n.append = false
44
+ end
24
45
 
25
- asserts("summary is whitspaced") { topic.summary }.equals(" ")
26
- asserts("body is whitspaced") { topic.body }.equals(" ")
27
- asserts("urgency is :normal") { topic.urgency }.equals(:normal)
28
- asserts("timeout is nil") { topic.timeout }.nil
29
- asserts("icon_path is nil") { topic.icon_path }.nil
30
- asserts("append is true") { topic.append }.equals(true)
46
+ assert_equal "hello", libnotify.summary
47
+ assert_equal "overwritten", libnotify.body
48
+ assert_equal "/path/to/icon", libnotify.icon_path
49
+ assert !libnotify.append
31
50
  end
32
51
 
33
- context "with options and block" do
34
- setup do
35
- topic.new(:summary => "hello", :body => "body", :invalid_option => 23) do |n|
36
- n.body = "overwritten"
37
- n.icon_path = "/path/to/icon"
38
- n.append = false
39
- end
40
- end
52
+ def test_timeout_setter
53
+ assert_timeout 2500, 2.5, "with float"
54
+ assert_timeout 100, 100, "with fixnum ms"
55
+ assert_timeout 101, 101, "with fixnum ms"
56
+ assert_timeout 1000, 1, "with fixnum seconds"
57
+ assert_timeout 99000, 99, "with fixnum seconds"
58
+ assert_timeout nil, nil, "with nil"
59
+ assert_timeout nil, false, "with false"
60
+ assert_timeout 2, :"2 s", "with to_s.to_i"
61
+ end
41
62
 
42
- asserts("summary is set") { topic.summary }.equals("hello")
43
- asserts("body was overwritten by block") { topic.body }.equals("overwritten")
44
- asserts("icon_path set") { topic.icon_path }.equals("/path/to/icon")
45
- asserts("append is set") { topic.append }.equals(false)
63
+ def test_icon_path_setter
64
+ Libnotify::API.icon_dirs << File.expand_path("../..", __FILE__)
65
+ assert_icon_path "/some/path/image.jpg", "/some/path/image.jpg", "with absolute path"
66
+ assert_icon_path "some-invalid-path.jpg", "some-invalid-path.jpg", "with non-existant relative path"
67
+ assert_icon_path %r{^/.*/libnotify.png}, "libnotify.png", "with relative path"
68
+ assert_icon_path %r{^/.*/libnotify.png}, :"libnotify", "with symbol"
46
69
  end
47
70
 
48
- context "timeout=" do
49
- setup { topic.new }
50
-
51
- asserts("with float") { topic.timeout = 2.5; topic.timeout }.equals(2500)
52
- asserts("with fixnum ms") { topic.timeout = 100; topic.timeout }.equals(100)
53
- asserts("with fixnum ms") { topic.timeout = 101; topic.timeout }.equals(101)
54
- asserts("with fixnum seconds") { topic.timeout = 1; topic.timeout }.equals(1000)
55
- asserts("with fixnum seconds") { topic.timeout = 99; topic.timeout }.equals(99000)
56
- asserts("with nil") { topic.timeout = nil; topic.timeout }.nil
57
- asserts("with false") { topic.timeout = false; topic.timeout }.nil
58
- asserts("with to_s.to_i") { topic.timeout = :"2 seconds"; topic.timeout }.equals(2)
71
+ def test_integration
72
+ skip "enable integration"
73
+
74
+ libnotify = Libnotify::API.new(:timeout => 0.5, :icon_path => :"emblem-favorite", :append => true)
75
+
76
+ [ :low, :normal, :critical ].each do |urgency|
77
+ libnotify.summary = "#{RUBY_VERSION} at #{RUBY_PLATFORM}"
78
+ libnotify.body = [ urgency, defined?(RUBY_DESCRIPTION) ? RUBY_DESCRIPTION : '?' ].join(" ")
79
+ libnotify.urgency = urgency
80
+ libnotify.show!
81
+ end
59
82
  end
60
83
 
61
- context "icon_path=" do
62
- setup { topic.new }
84
+ private
63
85
 
64
- asserts("with absolute path") { topic.icon_path = "/some/path/image.jpg"; topic.icon_path }.equals("/some/path/image.jpg")
65
- asserts("with invalid relative path") { topic.icon_path = "some-invalid-path.jpg"; topic.icon_path }.equals("some-invalid-path.jpg")
66
- asserts("with relative path") { topic.icon_path = "emblem-favorite.png"; topic.icon_path }.equals("/usr/share/icons/gnome/48x48/emblems/emblem-favorite.png")
67
- asserts("with symbol") { topic.icon_path = :"emblem-favorite"; topic.icon_path }.equals("/usr/share/icons/gnome/48x48/emblems/emblem-favorite.png")
86
+ def libnotify(options={}, &block)
87
+ @libnotify ||= Libnotify::API.new(options, &block)
68
88
  end
69
89
 
70
- # TODO Mock FFI calls with rrriot.
71
- context "show!" do
72
- setup do
73
- topic.new(:timeout => 1.0, :icon_path => :"emblem-favorite")
74
- end
90
+ def assert_timeout(expected, value, message)
91
+ assert_value_set :timeout, expected, value, message
92
+ end
93
+
94
+ def assert_icon_path(expected, value, message)
95
+ assert_value_set :icon_path, expected, value, message
96
+ end
75
97
 
76
- context "for real" do
77
- [ :low, :normal, :critical ].each do |urgency|
78
- asserts("with urgency #{urgency}") do
79
- topic.summary = "#{RUBY_VERSION} at #{RUBY_PLATFORM}"
80
- topic.body = defined?(RUBY_DESCRIPTION) ? RUBY_DESCRIPTION : '?'
81
- topic.urgency = urgency
82
- topic.show!
83
- end
84
- end
98
+ def assert_value_set(attribute, expected, value, message)
99
+ libnotify.send("#{attribute}=", value)
100
+ got = libnotify.send(attribute)
101
+ case expected
102
+ when Regexp
103
+ assert_match expected, got, message
104
+ else
105
+ assert_equal expected, got, message
85
106
  end
86
107
  end
108
+
87
109
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libnotify
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
5
- prerelease: false
4
+ hash: 9
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 5
9
- - 0
10
- version: 0.5.0
9
+ - 1
10
+ version: 0.5.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Peter Suschlik
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-05 00:00:00 +02:00
18
+ date: 2011-05-12 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -24,36 +24,19 @@ dependencies:
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ">="
27
+ - - ~>
28
28
  - !ruby/object:Gem::Version
29
- hash: 3
29
+ hash: 15
30
30
  segments:
31
+ - 1
31
32
  - 0
32
- - 6
33
- - 2
34
- version: 0.6.2
33
+ version: "1.0"
35
34
  type: :runtime
36
35
  version_requirements: *id001
37
36
  - !ruby/object:Gem::Dependency
38
- name: riot
37
+ name: minitest
39
38
  prerelease: false
40
39
  requirement: &id002 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - "="
44
- - !ruby/object:Gem::Version
45
- hash: 55
46
- segments:
47
- - 0
48
- - 11
49
- - 2
50
- version: 0.11.2
51
- type: :development
52
- version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
54
- name: riot_notifier
55
- prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
57
40
  none: false
58
41
  requirements:
59
42
  - - ">="
@@ -63,11 +46,11 @@ dependencies:
63
46
  - 0
64
47
  version: "0"
65
48
  type: :development
66
- version_requirements: *id003
49
+ version_requirements: *id002
67
50
  - !ruby/object:Gem::Dependency
68
51
  name: yard
69
52
  prerelease: false
70
- requirement: &id004 !ruby/object:Gem::Requirement
53
+ requirement: &id003 !ruby/object:Gem::Requirement
71
54
  none: false
72
55
  requirements:
73
56
  - - ">="
@@ -77,36 +60,38 @@ dependencies:
77
60
  - 0
78
61
  version: "0"
79
62
  type: :development
80
- version_requirements: *id004
63
+ version_requirements: *id003
81
64
  description:
82
- email: peter-libnotify@suschlik.de
65
+ email:
66
+ - peter-libnotify@suschlik.de
83
67
  executables: []
84
68
 
85
69
  extensions: []
86
70
 
87
- extra_rdoc_files:
88
- - README.rdoc
71
+ extra_rdoc_files: []
72
+
89
73
  files:
90
74
  - .gitignore
91
75
  - .rvmrc
76
+ - .travis.yml
92
77
  - Gemfile
93
- - Gemfile.lock
94
78
  - README.rdoc
95
79
  - Rakefile
96
- - VERSION
97
80
  - lib/libnotify.rb
81
+ - lib/libnotify/api.rb
82
+ - lib/libnotify/ffi.rb
83
+ - lib/libnotify/version.rb
98
84
  - libnotify.gemspec
99
85
  - libnotify.png
100
- - test.watchr
101
86
  - test/helper.rb
102
87
  - test/test_libnotify.rb
103
88
  has_rdoc: true
104
- homepage: http://github.com/splattael/libnotify
89
+ homepage: http://rubygems.org/gems/libnotify
105
90
  licenses: []
106
91
 
107
92
  post_install_message:
108
- rdoc_options:
109
- - --charset=UTF-8
93
+ rdoc_options: []
94
+
110
95
  require_paths:
111
96
  - lib
112
97
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -130,9 +115,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
115
  requirements: []
131
116
 
132
117
  rubyforge_project:
133
- rubygems_version: 1.3.7
118
+ rubygems_version: 1.6.2
134
119
  signing_key:
135
120
  specification_version: 3
136
121
  summary: Ruby bindings for libnotify using FFI
137
- test_files:
138
- - test/test_libnotify.rb
122
+ test_files: []
123
+
data/Gemfile.lock DELETED
@@ -1,38 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- ffi (0.6.3)
5
- rake (>= 0.8.7)
6
- gemcutter (0.6.1)
7
- git (1.2.5)
8
- jeweler (1.4.0)
9
- gemcutter (>= 0.1.0)
10
- git (>= 1.2.5)
11
- rubyforge (>= 2.0.0)
12
- json_pure (1.4.6)
13
- libnotify (0.2.0)
14
- ffi (>= 0.6.2)
15
- rake (0.8.7)
16
- riot (0.11.2)
17
- rr
18
- term-ansicolor
19
- riot_notifier (0.4.0)
20
- libnotify (~> 0.2.0)
21
- riot (~> 0.11.0)
22
- rr (1.0.2)
23
- rubyforge (2.0.4)
24
- json_pure (>= 1.1.7)
25
- term-ansicolor (1.0.5)
26
- watchr (0.7)
27
- yard (0.6.0)
28
-
29
- PLATFORMS
30
- ruby
31
-
32
- DEPENDENCIES
33
- ffi (>= 0.6.2)
34
- jeweler
35
- riot (= 0.11.2)
36
- riot_notifier (~> 0.4.0)
37
- watchr
38
- yard
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.5.0
data/test.watchr DELETED
@@ -1,50 +0,0 @@
1
- #!/usr/bin/env watchr
2
-
3
- #!/usr/bin/env watchr
4
-
5
- def run(cmd)
6
- puts(cmd)
7
- system cmd
8
- end
9
-
10
- def run_test_file(file)
11
- clear
12
- run "ruby -rubygems -Ilib:test #{file}"
13
- end
14
-
15
- def run_tests
16
- clear
17
- run "rake"
18
- end
19
-
20
- def clear
21
- system "clear"
22
- end
23
-
24
- def underscore(file)
25
- file.gsub('/', '_')
26
- end
27
-
28
- @interrupted = false
29
-
30
- Signal.trap 'QUIT' do
31
- run_tests
32
- end
33
-
34
- Signal.trap 'INT' do
35
- if @interrupted then
36
- abort("\n")
37
- else
38
- puts "Interrupt a second time to quit"
39
- @interrupted = true
40
- Kernel.sleep 1.5
41
- # raise Interrupt, nil # let the run loop catch it
42
- run_tests
43
- end
44
- end
45
-
46
- run_tests
47
-
48
- watch('test/test_.*\.rb') {|md| run_test_file md[0] }
49
- watch('lib/(.*)\.rb') {|md| run_test_file "test/test_#{underscore(md[1])}.rb" }
50
- watch('test/helper.rb') { run_tests }