jimmy_jukebox 0.3.7 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ - http://archive.org/download/EDIS-SRP-0092-03/EDIS-SRP-0092-03.mp3
3
+ - http://archive.org/download/AlexandersRagtimeBand/AlexandersRagtimeBand.mp3
4
+ - http://archive.org/download/ScottJoplinRagtime/ScottJoplinMapleLeaf.mp3
5
+ - http://archive.org/download/ScottJoplinRagtime/ScottJoplinTheEntertainer.mp3
6
+ - http://archive.org/download/ScottJoplinRagtime/ScottJoplinTheSycamore.mp3
7
+ - http://archive.org/download/Eck_Robertson_Ragtime_Annie/Eck_Robertson-Ragtime_Annie_vbr.mp3
8
+ - http://archive.org/download/BlackAndWhiteRagtime1909/VictorOrchestra-BlackAndWhiteRagtime1909.mp3
9
+ - http://archive.org/download/WinnerRagtimeBand-TheTurkeyTrot1912/WinnerRagtimeBand-TurkeyTrot1912.mp3
10
+ - http://archive.org/download/MugsySpannerAndHisRagtimeBand-Relaxin/MugsySpannerAndHisRagtimeBand-Relaxin.mp3
11
+ - http://archive.org/download/ArthurCollinsByronHarlan-AlexandersRagtimeBand/ArthurCollinsByronHarlan-AlexandersRagtimeBand.mp3
12
+ - http://archive.org/download/FowlerStreetFiveAlexandersRagtimeBand/Fs5-1954-betaHouseAtlanta-alexandersRagtimeBand.mp3
13
+ - http://archive.org/download/DollyConnolly-TheRagtimeMockingbird1912/DollyConnolly-TheRagtimeMockingbird1912.mp3
14
+ - http://archive.org/download/OleMissRag/W.c.Handy-oleMissRag_1917_64kb.mp3
15
+ - http://archive.org/download/Dempsey_Jacks_Pig_Ankle_Rag/Dempsey_Jacks_Pig_Ankle_Rag.mp3
@@ -7,7 +7,8 @@ module JimmyJukebox
7
7
  require 'jimmy_jukebox/artists'
8
8
  include Artists
9
9
 
10
- attr_reader :mp3_player, :ogg_player, :songs, :music_directories
10
+ attr_writer :music_directories
11
+ attr_accessor :songs, :ogg_player, :mp3_player
11
12
 
12
13
  DEFAULT_PLAYLIST_DIR = File.expand_path(File.join("~",".jimmy_jukebox"))
13
14
 
@@ -19,6 +20,7 @@ module JimmyJukebox
19
20
  end
20
21
 
21
22
  def initialize
23
+ self.songs = []
22
24
  set_music_players
23
25
  generate_directories_list
24
26
  generate_song_list
@@ -31,8 +33,8 @@ module JimmyJukebox
31
33
  def set_music_players
32
34
  set_ogg_player
33
35
  set_mp3_player
34
- no_player_configured if !@ogg_player && !@mp3_player
35
- warn_about_partial_functionality if !@ogg_player || !@mp3_player
36
+ no_player_configured unless ogg_player || mp3_player
37
+ warn_about_partial_functionality if !ogg_player || !mp3_player
36
38
  end
37
39
 
38
40
  def no_player_configured
@@ -41,57 +43,61 @@ module JimmyJukebox
41
43
  end
42
44
 
43
45
  def warn_about_partial_functionality
44
- if @ogg_player && !@mp3_player
46
+ if ogg_player && !mp3_player
45
47
  puts "*** YOU CANNOT PLAY MP3S -- YOU MIGHT WANT TO INSTALL MPG123 OR MPG321 ***"
46
- elsif @mp3_player && !@ogg_player
48
+ elsif mp3_player && !ogg_player
47
49
  puts "*** YOU CANNOT PLAY OGG FILES -- YOU MIGHT WANT TO INSTALL OGG123 ***"
48
50
  end
49
51
  end
50
52
 
51
53
  def set_ogg_player
52
54
  if ogg123_exists?
53
- @ogg_player = "ogg123"
55
+ self.ogg_player = "ogg123"
54
56
  return
55
57
  elsif music123_exists?
56
- @ogg_player = "music123"
58
+ self.ogg_player = "music123"
57
59
  return
58
60
  elsif afplay_exists?
59
- @ogg_player = "afplay"
61
+ self.ogg_player = "afplay"
60
62
  return
61
63
  elsif mplayer_exists?
62
- @ogg_player = "mplayer -nolirc -noconfig all"
64
+ self.ogg_player = "mplayer -nolirc -noconfig all"
63
65
  elsif play_exists?
64
- @ogg_player = "play"
66
+ self.ogg_player = "play"
65
67
  #elsif RUBY_PLATFORM.downcase.include?('mac') || RUBY_PLATFORM.downcase.include?('darwin')
66
- # @ogg_player = "afplay"
68
+ # ogg_player = "afplay"
67
69
  # return
68
70
  #elsif (require 'rbconfig') && ['mac','darwin'].include?(RbConfig::CONFIG['host_os'])
69
- # @ogg_player = "afplay"
71
+ # ogg_player = "afplay"
72
+ else
73
+ raise NoOggPlayerFoundException, "Could not find an Ogg Vorbis player"
70
74
  end
71
75
  end
72
76
 
73
77
  def set_mp3_player
74
78
  if mpg123_exists?
75
- @mp3_player = "mpg123"
79
+ self.mp3_player = "mpg123"
76
80
  return
77
81
  elsif mpg321_exists?
78
- @mp3_player = "mpg321"
82
+ self.mp3_player = "mpg321"
79
83
  return
80
84
  elsif music123_exists?
81
- @mp3_player = "music123"
85
+ self.mp3_player = "music123"
82
86
  return
83
87
  elsif afplay_exists?
84
- @mp3_player = "afplay"
88
+ self.mp3_player = "afplay"
85
89
  return
86
90
  elsif mplayer_exists?
87
- @mp3_player = "mplayer -nolirc -noconfig all"
91
+ self.mp3_player = "mplayer -nolirc -noconfig all"
88
92
  elsif play_exists?
89
- @mp3_player = "play"
93
+ self.mp3_player = "play"
90
94
  #elsif RUBY_PLATFORM.downcase.include?('mac') || RUBY_PLATFORM.downcase.include?('darwin')
91
- # @mp3_player = "afplay"
95
+ # mp3_player = "afplay"
92
96
  # return
93
97
  #elsif (require 'rbconfig') && ['mac','darwin'].include?(RbConfig::CONFIG['host_os'])
94
- # @mp3_player = "afplay"
98
+ # mp3_player = "afplay"
99
+ else
100
+ raise NoMP3PlayerFoundException, "Could not find an MP3 player"
95
101
  end
96
102
  end
97
103
 
@@ -132,27 +138,30 @@ module JimmyJukebox
132
138
  load_top_level_directories_from_file
133
139
  end
134
140
 
141
+ def music_directories
142
+ @music_directories ||= []
143
+ end
144
+
135
145
  def generate_directories_list
136
- @music_directories = []
137
146
  # ARGV[0] can be "jazz.txt" (a file holding directory names), "~/Music/JAZZ" (a directory path) or nil
138
147
  # puts "ARGV: " + ARGV.inspect + " (" + ARGV.class.to_s + ")"
139
148
  if ARGV.empty?
140
- @music_directories << default_music_dir
149
+ music_directories << default_music_dir
141
150
  elsif JAZZ_ARTISTS.keys.include?(ARGV[0].to_sym)
142
- @music_directories << default_music_dir + key_to_subdir_name(ARGV[0].to_sym)
151
+ music_directories << default_music_dir + key_to_subdir_name(ARGV[0].to_sym)
143
152
  elsif is_a_txt_file?(ARGV[0])
144
153
  set_music_directories_from_file
145
154
  elsif is_a_directory?(ARGV[0])
146
- @music_directories << File.expand_path(ARGV[0])
155
+ music_directories << File.expand_path(ARGV[0])
147
156
  else
148
- @music_directories << default_music_dir
157
+ music_directories << default_music_dir
149
158
  end
150
159
  create_nonexistent_music_directories
151
160
  add_all_subdirectories
152
161
  end
153
162
 
154
163
  def create_nonexistent_music_directories
155
- @music_directories.each do |md|
164
+ music_directories.each do |md|
156
165
  FileUtils.mkdir_p(md) unless Dir.exists?(md)
157
166
  end
158
167
  end
@@ -171,32 +180,30 @@ module JimmyJukebox
171
180
  File.open(@music_directories_file, "r") do |inf|
172
181
  while (line = inf.gets)
173
182
  line.strip!
174
- @music_directories << File.expand_path(line)
183
+ music_directories << File.expand_path(line)
175
184
  end
176
185
  end
177
186
  end
178
187
 
179
188
  def add_all_subdirectories
180
189
  new_dirs = []
181
- @music_directories.each do |dir|
182
- Dir.chdir(dir)
183
- new_dirs = new_dirs + Dir.glob("**/").map { |dir_name| File.expand_path(dir_name) }
190
+ music_directories.each do |dir|
191
+ new_dirs = new_dirs + Dir.glob(File.join(dir,"**/")).map { |dir_name| File.expand_path(dir_name) }
184
192
  end
185
- @music_directories = @music_directories + new_dirs
193
+ self.music_directories = music_directories + new_dirs
186
194
  end
187
195
 
188
196
  def generate_song_list
189
- @songs = []
190
- @music_directories.each do |music_dir|
197
+ music_directories.each do |music_dir|
191
198
  files = Dir.entries(File.expand_path(music_dir))
192
199
  if "".respond_to?(:force_encoding) # Ruby 1.8 doesn't have string encoding or String#force_encoding
193
200
  files.delete_if { |f| !f.force_encoding("UTF-8").valid_encoding? } # avoid "invalid byte sequence in UTF-8 (ArgumentError)"
194
201
  end
195
202
  files.delete_if { |f| !f.match(/.*\.mp3/i) && !f.match(/.*\.ogg/i) }
196
203
  files.map! { |f| File.expand_path(music_dir) + '/' + f }
197
- @songs = @songs + files
204
+ files.each { |f| songs << f }
198
205
  end
199
- puts "WARNING: JimmyJukebox could not find any songs" unless @songs.length > 0
206
+ puts "WARNING: JimmyJukebox could not find any songs" unless songs.length > 0
200
207
  #songs = ["~/Music/Artie_Shaw/Georgia On My Mind 1941.mp3",
201
208
  # "~/Music/Jelly_Roll_Morton/High Society 1939.mp3"]
202
209
  end
@@ -1,43 +1,61 @@
1
1
  require 'readline'
2
2
 
3
- jj = Jukebox
3
+ jj = Jukebox.new
4
4
 
5
5
  play_loop_thread = Thread.new do
6
6
  jj.play_loop
7
7
  end
8
8
 
9
- display_string = "Press 'p' to (un)pause, 'q' to quit, or 's' to skip the song"
10
- begin
11
- while true do
12
- puts display_string
13
- line = Readline.readline('> ', true)
14
- case line.strip
15
- when "q"
16
- puts "Quit requested"
17
- jj.quit
18
- Thread.main.exit
19
- when "p"
20
- if play_loop_thread && jj.current_song.paused
21
- puts "Unpause requested"
22
- jj.unpause_current_song
23
- elsif play_loop_thread
24
- puts "Pause requested"
25
- jj.pause_current_song
9
+ user_input_thread = Thread.new do
10
+
11
+ stty_save = `stty -g`.chomp # Store state of the terminal
12
+
13
+ def display_options
14
+ p "Press 'p' to (un)pause, 'q' to quit, 'r' for replay previous song, or 's' to skip this song"
15
+ end
16
+
17
+ def display_options_after_delay
18
+ sleep 0.2
19
+ display_options
20
+ end
21
+
22
+ class NoPlayLoopThreadException < Exception; end
23
+
24
+ begin
25
+ loop do
26
+ display_options_after_delay
27
+ line = Readline.readline('> ', true)
28
+ case line.strip
29
+ when "q", "Q"
30
+ raise Interrupt
31
+ when "p", "P"
32
+ raise NoPlayLoopThreadException, "Can't find play_loop_thread" unless play_loop_thread
33
+ if jj.current_song.paused?
34
+ p "Unpause requested"
35
+ jj.unpause_current_song
36
+ else
37
+ p "Pause requested"
38
+ p "To unpause, enter 'p' again"
39
+ jj.pause_current_song
40
+ end
41
+ when "r", "R"
42
+ p "Replay previous song requested"
43
+ jj.replay_previous_song
44
+ when "s", "S"
45
+ p "Skip song requested"
46
+ jj.skip_song
26
47
  else
27
- raise "Can't find play_loop_thread"
48
+ p "#{line.strip} is not a valid response"
28
49
  end
29
- puts display_string
30
- when "s"
31
- puts "Skip song requested"
32
- jj.skip_song
33
- else
34
- puts display_string
35
50
  end
51
+ rescue Interrupt, SystemExit => e
52
+ p "JimmyJukebox closed by user request. Bye!"
53
+ jj.quit
54
+ system('stty', stty_save) unless RUBY_ENGINE == 'jruby' # Restore original terminal state
55
+ exit
36
56
  end
37
- rescue Interrupt => e
38
- puts "\nMusic terminated by user"
39
- exit
40
57
  end
41
58
 
42
59
  play_loop_thread.join
60
+ user_input_thread.join
43
61
 
@@ -1,3 +1,4 @@
1
1
  module JimmyJukebox
2
- VERSION = '0.3.7'
2
+ VERSION = '0.4.1'
3
+ DATE = '2013-02-22'
3
4
  end
@@ -1,191 +1,214 @@
1
1
  require 'spec_helper'
2
- require 'fakefs/safe'
3
- require 'jimmy_jukebox'
2
+ require_relative '../lib/jimmy_jukebox/jukebox'
4
3
  include JimmyJukebox
5
4
 
6
5
  describe Jukebox do
7
6
 
7
+ include FakeFS::SpecHelpers
8
+
8
9
  before(:all) do
9
10
  ARGV.clear
10
- #ARGV.pop
11
11
  end
12
12
 
13
+ let(:jb) { Jukebox.new }
14
+
13
15
  let(:uc) { double('user_config').as_null_object }
14
16
 
17
+
15
18
  context "with no command line parameter" do
16
19
 
17
20
  it "exists" do
18
- Jukebox.should_not be_nil
19
- Jukebox.quit
21
+ jb.should_not be_nil
22
+ jb.quit
20
23
  end
21
24
 
22
- #it "raises exception when no songs available"
23
- # lambda do
24
- # jj = Jukebox.new
25
- # end.should raise_error
26
- #end
27
-
28
- it "has a user_config method" do
29
- Jukebox.user_config.is_a?(UserConfig)
25
+ it "calls play_random_song" do
26
+ jb.stub(:play_random_song).and_return(nil)
27
+ jb.should_receive(:play_once)
28
+ jb.play_once
29
+ jb.quit
30
30
  end
31
31
 
32
- it "has a @user_config instance variable" do
33
- Jukebox.instance_variable_get(:@user_config).is_a?(UserConfig)
32
+ it "raises exception when no songs available" do
33
+ expect { jb.play_once }.to raise_error(Jukebox::NoSongException)
34
34
  end
35
35
 
36
- it "generates a non-empty song list" do
37
- Jukebox.user_config.songs.should_not be_nil
38
- Jukebox.user_config.songs.should_not be_empty
39
- Jukebox.user_config.songs.length.should be > 0
36
+ it "has a user_config method" do
37
+ jb.user_config.is_a?(UserConfig)
40
38
  end
41
39
 
42
- it "generates a non-empty song list with only mp3 & ogg files" do
43
- Jukebox.user_config.songs.each do |song|
44
- song.should match(/.*\.mp3|.*\.ogg/i)
45
- end
40
+ it "generates an empty song list" do
41
+ jb.user_config.songs.should be_empty
42
+ jb.user_config.songs.length.should == 0
46
43
  end
47
44
 
48
- describe "#play_once" do
45
+ context "when songs exist" do
49
46
 
50
- it "should call play_random_song" do
51
- Jukebox.should_receive(:play_random_song)
52
- Jukebox.play_once
53
- end
47
+ let(:song1) { '/home/xavier/Music/Rock/Beatles/Abbey_Road.mp3' }
48
+ let(:song2) { '/home/xavier/Music/Rock/Beatles/Sgt_Pepper.mp3' }
49
+ let(:song3) { '/home/xavier/Music/Rock/Eagles/Hotel_California.ogg' }
54
50
 
55
- it "should have a current_song" do
56
- jj = Jukebox
57
- uc.stub(:mp3_player) {"play"}
58
- uc.stub(:ogg_player) {"play"}
59
- thread = Thread.new do
60
- Jukebox.play_once
51
+ before do
52
+ [song1, song2, song3].each do |song|
53
+ FileUtils.mkdir_p(File.dirname(song))
54
+ FileUtils.touch(song)
55
+ Dir.chdir('/home/xavier')
61
56
  end
62
- sleep 0.1
63
- jj.current_song.is_a?(Song)
64
- thread.exit
65
57
  end
66
58
 
67
- it "should have a current_song with a music_file" do
68
- jj = Jukebox
69
- uc.stub(:mp3_player) {"play"}
70
- uc.stub(:ogg_player) {"play"}
71
- thread = Thread.new do
72
- Jukebox.play_once
73
- end
74
- sleep 0.1
75
- jj.current_song.music_file.should match /\.mp3$|\.ogg$/
76
- thread.exit
59
+ it "generates a non-empty song list" do
60
+ jb.user_config.songs.should_not be_nil
61
+ jb.user_config.songs.should_not be_empty
62
+ jb.user_config.songs.length.should == 3
63
+ jb.user_config.songs.should include(/Abbey_Road.mp3/)
77
64
  end
78
65
 
79
- it "should have a player" do
80
- jj = Jukebox
81
- thread = Thread.new do
82
- Jukebox.play_once
66
+ =begin
67
+ xit "generates a non-empty song list with only mp3 & ogg files" do
68
+ jb.user_config.songs.each do |song|
69
+ song.should match(/.*\.mp3|.*\.ogg/i)
83
70
  end
84
- sleep 0.1
85
- jj.current_song.player.should_not be_nil
86
- thread.exit
87
71
  end
88
72
 
89
- it "should not have a current_song after song finishes" do
90
- jj = Jukebox
91
- thread = Thread.new do
92
- Jukebox.play_once
73
+ describe "#play_once" do
74
+
75
+ xit "should call play_random_song" do
76
+ jb.should_receive(:play_random_song)
77
+ jb.play_once
93
78
  end
94
- sleep 0.3
95
- jj.current_song.should be_nil
96
- thread.exit
97
- end
98
79
 
99
- it "should have a current_song with a playing_pid" do
100
- jj = Jukebox
101
- thread = Thread.new do
102
- jj.play_once
80
+ xit "should have a current_song" do
81
+ uc.stub(:mp3_player) {"play"}
82
+ uc.stub(:ogg_player) {"play"}
83
+ thread = Thread.new do
84
+ jb.play_once
85
+ end
86
+ sleep 0.1
87
+ jb.current_song.is_a?(Song)
88
+ thread.exit
103
89
  end
104
- sleep 0.1
105
- jj.current_song.playing_pid.should_not be_nil
106
- #jj.should_receive(:terminate_current_song)
107
- jj.quit
108
- thread.exit
109
- end
110
90
 
111
- it "triggers play_random_song" do
112
- Jukebox.should_receive(:play_random_song)
113
- Jukebox.play_once
114
- end
91
+ xit "should have a current_song with a music_file" do
92
+ uc.stub(:mp3_player) {"play"}
93
+ uc.stub(:ogg_player) {"play"}
94
+ thread = Thread.new do
95
+ jb.play_once
96
+ end
97
+ sleep 0.1
98
+ jb.current_song.music_file.should match /\.mp3$|\.ogg$/
99
+ thread.exit
100
+ xend
101
+
102
+ xit "should have a player" do
103
+ thread = Thread.new do
104
+ jb.play_once
105
+ end
106
+ sleep 0.1
107
+ jb.current_song.player.should_not be_nil
108
+ thread.exit
109
+ end
115
110
 
116
- it "can pause the current song" do
117
- thread = Thread.new do
118
- Jukebox.play_once
111
+ xit "should not have a current_song after song finishes" do
112
+ thread = Thread.new do
113
+ jb.play_once
114
+ end
115
+ sleep 0.3
116
+ jb.current_song.should be_nil
117
+ thread.exit
119
118
  end
120
- sleep 0.1
121
- song_1 = Jukebox.current_song.playing_pid
122
- Jukebox.pause_current_song
123
- song_2 = Jukebox.current_song.playing_pid
124
- song_1.should == song_2
125
- Jukebox.current_song.paused.should be_true
126
- Jukebox.quit
127
- thread.exit
128
- end
129
119
 
130
- it "can unpause a paused song" do
131
- thread = Thread.new do
132
- Jukebox.play_once
120
+ xit "should have a current_song with a playing_pid" do
121
+ thread = Thread.new do
122
+ jb.play_once
123
+ end
124
+ sleep 0.1
125
+ jb.current_song.playing_pid.should_not be_nil
126
+ #jb.should_receive(:terminate_current_song)
127
+ jb.quit
128
+ thread.exit
129
+ end
130
+
131
+ xit "triggers play_random_song" do
132
+ jb.should_receive(:play_random_song)
133
+ jb.play_once
134
+ end
135
+
136
+ xit "can pause the current song" do
137
+ thread = Thread.new do
138
+ jb.play_once
139
+ end
140
+ sleep 0.1
141
+ song_1 = jb.current_song.playing_pid
142
+ jb.pause_current_song
143
+ song_2 = jb.current_song.playing_pid
144
+ song_1.should == song_2
145
+ jb.current_song.paused?.should be_true
146
+ jb.quit
147
+ thread.exit
148
+ end
149
+
150
+ xit "can unpause a paused song" do
151
+ thread = Thread.new do
152
+ jb.play_once
153
+ end
154
+ sleep 0.05
155
+ song_1 = jb.current_song
156
+ jb.current_song.paused?.should be_false
157
+ jb.pause_current_song
158
+ song_2 = jb.current_song
159
+ jb.current_song.paused?.should be_true
160
+ song_2.should == song_1
161
+ jb.unpause_current_song
162
+ jb.current_song.paused?.should be_false
163
+ song_3 = jb.current_song
164
+ jb.current_song.paused?.should be_false
165
+ jb.pause_current_song
166
+ song_4 = jb.current_song
167
+ jb.current_song.paused?.should be_true
168
+ song_4.should == song_3
169
+ jb.unpause_current_song
170
+ jb.current_song.paused?.should be_false
171
+ jb.quit
172
+ thread.exit
133
173
  end
134
- sleep 0.05
135
- song_1 = Jukebox.current_song
136
- Jukebox.current_song.paused.should be_false
137
- Jukebox.pause_current_song
138
- song_2 = Jukebox.current_song
139
- Jukebox.current_song.paused.should be_true
140
- song_2.should == song_1
141
- Jukebox.unpause_current_song
142
- Jukebox.current_song.paused.should be_false
143
- song_3 = Jukebox.current_song
144
- Jukebox.current_song.paused.should be_false
145
- Jukebox.pause_current_song
146
- song_4 = Jukebox.current_song
147
- Jukebox.current_song.paused.should be_true
148
- song_4.should == song_3
149
- Jukebox.unpause_current_song
150
- Jukebox.current_song.paused.should be_false
151
- Jukebox.quit
152
- thread.exit
153
- end
154
174
 
175
+ =end
155
176
  end
156
177
 
178
+ end
179
+ =begin
157
180
  describe "#play_loop" do
158
181
 
159
- it "plays multiple songs" do
182
+ xit "plays multiple songs" do
160
183
  thread = Thread.new do
161
- Jukebox.play_loop
184
+ jb.play_loop
162
185
  end
163
186
  sleep 0.1
164
- song1 = Jukebox.current_song.playing_pid
187
+ song1 = jb.current_song.playing_pid
165
188
  song1.should_not be_nil
166
- Jukebox.continuous_play.should be_true
189
+ jb.continuous_play.should be_true
167
190
  sleep 0.2
168
- song2 = Jukebox.current_song.playing_pid
191
+ song2 = jb.current_song.playing_pid
169
192
  song2.should_not be_nil
170
193
  song2.should_not == song1
171
- Jukebox.quit
194
+ jb.quit
172
195
  thread.exit
173
196
  end
174
197
 
175
- it "can skip a song" do
198
+ xit "can skip a song" do
176
199
  thread = Thread.new do
177
- Jukebox.play_loop
200
+ jb.play_loop
178
201
  end
179
202
  sleep 0.2
180
- song_1 = Jukebox.current_song
181
- Jukebox.skip_song
203
+ song_1 = jb.current_song
204
+ jb.skip_song
182
205
  sleep 0.2
183
- song_2 = Jukebox.current_song
184
- Jukebox.skip_song
206
+ song_2 = jb.current_song
207
+ jb.skip_song
185
208
  sleep 0.2
186
- song_3 = Jukebox.current_song
209
+ song_3 = jb.current_song
187
210
  song_1.should_not == song_2 || song_2.should_not == song_3
188
- Jukebox.quit
211
+ jb.quit
189
212
  thread.exit
190
213
  end
191
214
 
@@ -200,23 +223,25 @@ describe Jukebox do
200
223
  ARGV << File.expand_path("~/Music")
201
224
  end
202
225
 
203
- it "can skip a song" do
226
+ xit "can skip a song" do
204
227
  thread = Thread.new do
205
- Jukebox.play_loop
228
+ jb.play_loop
206
229
  end
207
230
  sleep 0.2
208
- song_1 = Jukebox.current_song
209
- Jukebox.skip_song
231
+ song_1 = jb.current_song
232
+ jb.skip_song
210
233
  sleep 0.2
211
- song_2 = Jukebox.current_song
212
- Jukebox.skip_song
234
+ song_2 = jb.current_song
235
+ jb.skip_song
213
236
  sleep 0.2
214
- song_3 = Jukebox.current_song
237
+ song_3 = jb.current_song
215
238
  song_1.should_not == song_2 || song_2.should_not == song_3
216
- Jukebox.quit
239
+ jb.quit
217
240
  thread.exit
218
241
  end
219
242
 
220
243
  end
221
244
 
245
+ =end
246
+
222
247
  end
@@ -1,5 +1,4 @@
1
1
  require 'spec_helper'
2
- require 'rubygems'
3
2
  require 'rspec/mocks'
4
3
  require 'fakeweb' # apparently must be required before fakefs
5
4
  FakeWeb.allow_net_connect = false