autotest-fsevent 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.txt +5 -0
- data/README.rdoc +26 -2
- data/ext/fsevent/extconf.rb +30 -0
- data/ext/fsevent/fsevent_sleep.c +43 -0
- data/lib/autotest/fsevent.rb +2 -3
- metadata +7 -9
- data/fsevent/darwin/fsevent_sleep +0 -0
data/CHANGELOG.txt
CHANGED
data/README.rdoc
CHANGED
@@ -17,15 +17,25 @@ to use FSEvent and therefore be nice to your Mac.
|
|
17
17
|
Unlike other test runners for the Mac, autotest-mac does not replace but
|
18
18
|
extend autotest and does *not* require RubyCocoa to be installed.
|
19
19
|
|
20
|
+
If you are on Linux, you should take a look at the autotest-inotify gem instead:
|
21
|
+
|
22
|
+
http://github.com/ewollesen/autotest-inotify
|
23
|
+
|
20
24
|
== REQUIREMENTS:
|
21
25
|
|
22
26
|
* Mac OS X >= 10.5
|
27
|
+
* Xcode
|
23
28
|
* autotest >= 4.2.4
|
24
29
|
* sys-uname
|
25
30
|
|
26
31
|
== INSTALL:
|
27
32
|
|
28
|
-
|
33
|
+
In order to compile the fsevent binary at install time, Xcode (Mac OS X
|
34
|
+
Development Suite) must be installed. You can download it for free from:
|
35
|
+
|
36
|
+
http://developer.apple.com
|
37
|
+
|
38
|
+
Now install the gem:
|
29
39
|
|
30
40
|
sudo gem install autotest-fsevent
|
31
41
|
|
@@ -47,12 +57,26 @@ the lighter and improved autotest gem. To update do the following:
|
|
47
57
|
sudo gem uninstall ZenTest
|
48
58
|
sudo gem update autotest-fsevent
|
49
59
|
|
50
|
-
|
60
|
+
To use autotest with Rails, install the autotest-rails-pure gem instead of
|
61
|
+
the famous autotest-rails gem which requires ZenTest:
|
62
|
+
|
63
|
+
sudo gem uninstall autotest-rails
|
64
|
+
sudo gem install autotest-rails-pure
|
65
|
+
|
66
|
+
And in case one day you need the more advanced features of ZenTest, install
|
67
|
+
the zentest-without-autotest gem alongside autotest:
|
51
68
|
|
52
69
|
sudo gem install zentest-without-autotest
|
53
70
|
|
54
71
|
== TROUBLESHOOTING:
|
55
72
|
|
73
|
+
=== Compilation of fsevent_sleep Failed
|
74
|
+
|
75
|
+
Make sure you have Xcode (Mac OS X Development Suite) installed. You can
|
76
|
+
download it for free from:
|
77
|
+
|
78
|
+
http://developer.apple.com
|
79
|
+
|
56
80
|
=== Loading the Plugin Seems to Fail
|
57
81
|
|
58
82
|
The reason may be ZenTest which must not be installed. See "Update from
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# Workaround to make Rubygems believe it builds a native gem
|
2
|
+
|
3
|
+
def emulate_extension_install(extension_name)
|
4
|
+
File.open('Makefile', 'w') { |f| f.write "all:\n\ninstall:\n\n" }
|
5
|
+
File.open('make', 'w') do |f|
|
6
|
+
f.write '#!/bin/sh'
|
7
|
+
f.chmod f.stat.mode | 0111
|
8
|
+
end
|
9
|
+
File.open(extension_name + '.so', 'w') {}
|
10
|
+
File.open(extension_name + '.dll', 'w') {}
|
11
|
+
File.open('nmake.bat', 'w') { |f| }
|
12
|
+
end
|
13
|
+
|
14
|
+
emulate_extension_install('fsevent')
|
15
|
+
|
16
|
+
|
17
|
+
# Compile the actual fsevent_sleep binary
|
18
|
+
|
19
|
+
raise "Only Darwin (Mac OS X) systems are supported" unless `uname -s`.chomp == 'Darwin'
|
20
|
+
|
21
|
+
GEM_ROOT = File.expand_path(File.join('..', '..'))
|
22
|
+
DARWIN_VERSION = `uname -r`.to_i
|
23
|
+
SDK_VERSION = { 9 => '10.5', 10 => '10.6', 11 => '10.7' }[DARWIN_VERSION]
|
24
|
+
|
25
|
+
raise "Darwin #{DARWIN_VERSION} is not (yet) supported" unless SDK_VERSION
|
26
|
+
|
27
|
+
`mkdir -p #{File.join(GEM_ROOT, 'bin')}`
|
28
|
+
`CFLAGS='-isysroot /Developer/SDKs/MacOSX#{SDK_VERSION}.sdk -mmacosx-version-min=#{SDK_VERSION}' /usr/bin/gcc -framework CoreServices -o "#{GEM_ROOT}/bin/fsevent_sleep" fsevent_sleep.c`
|
29
|
+
|
30
|
+
raise "Compilation of fsevent_sleep failed (see README)" unless File.executable?("#{GEM_ROOT}/bin/fsevent_sleep")
|
@@ -0,0 +1,43 @@
|
|
1
|
+
#include <CoreServices/CoreServices.h>
|
2
|
+
|
3
|
+
static void callback(ConstFSEventStreamRef streamRef,
|
4
|
+
void *clientCallBackInfo,
|
5
|
+
size_t numEvents,
|
6
|
+
void *eventPaths,
|
7
|
+
const FSEventStreamEventFlags eventFlags[],
|
8
|
+
const FSEventStreamEventId eventIds[]) {
|
9
|
+
exit(0);
|
10
|
+
}
|
11
|
+
|
12
|
+
int main (int argc, const char * argv[]) {
|
13
|
+
// Show help
|
14
|
+
if (argc != 2 || strncmp(argv[1], "-h", 2) == 0) {
|
15
|
+
printf("Sleep until a file in or below the watchdir is modified.\n");
|
16
|
+
printf("Usage: fsevent_sleep /path/to/watchdir\n");
|
17
|
+
exit(1);
|
18
|
+
}
|
19
|
+
|
20
|
+
// Create event stream
|
21
|
+
CFStringRef pathToWatch = CFStringCreateWithCString(kCFAllocatorDefault, argv[1], kCFStringEncodingUTF8);
|
22
|
+
CFArrayRef pathsToWatch = CFArrayCreate(NULL, (const void **)&pathToWatch, 1, NULL);
|
23
|
+
void *callbackInfo = NULL;
|
24
|
+
FSEventStreamRef stream;
|
25
|
+
CFAbsoluteTime latency = 1.0;
|
26
|
+
stream = FSEventStreamCreate(
|
27
|
+
kCFAllocatorDefault,
|
28
|
+
callback,
|
29
|
+
callbackInfo,
|
30
|
+
pathsToWatch,
|
31
|
+
kFSEventStreamEventIdSinceNow,
|
32
|
+
latency,
|
33
|
+
kFSEventStreamCreateFlagNone
|
34
|
+
);
|
35
|
+
|
36
|
+
// Add stream to run loop
|
37
|
+
FSEventStreamScheduleWithRunLoop(stream, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
|
38
|
+
FSEventStreamStart(stream);
|
39
|
+
CFRunLoopRun();
|
40
|
+
|
41
|
+
// Exit
|
42
|
+
return 2;
|
43
|
+
}
|
data/lib/autotest/fsevent.rb
CHANGED
@@ -21,14 +21,13 @@ module Autotest::FSEvent
|
|
21
21
|
# Use FSEvent if possible
|
22
22
|
# Add waiting hook to prevent fallback to polling after ignored files have changed
|
23
23
|
Autotest.add_hook :initialize do
|
24
|
-
if
|
24
|
+
if Uname.sysname == 'Darwin' && Uname.release.to_i >= 9
|
25
25
|
class ::Autotest
|
26
26
|
remove_method :wait_for_changes
|
27
27
|
def wait_for_changes
|
28
28
|
hook :waiting
|
29
29
|
begin
|
30
|
-
#
|
31
|
-
`cd '#{Dir.pwd}'; #{File.join(GEM_PATH, 'fsevent', Uname.sysname.downcase, 'fsevent_sleep')} . 2>&1`
|
30
|
+
`cd '#{Dir.pwd}'; #{File.join(GEM_PATH, 'bin', 'fsevent_sleep')} . 2>&1`
|
32
31
|
Kernel.sleep self.sleep
|
33
32
|
end until find_files_to_test
|
34
33
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: autotest-fsevent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sven Schwyn
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-03-10 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -46,14 +46,14 @@ description: Autotest relies on filesystem polling to detect modifications in so
|
|
46
46
|
email: ruby@bitcetera.com
|
47
47
|
executables: []
|
48
48
|
|
49
|
-
extensions:
|
50
|
-
|
49
|
+
extensions:
|
50
|
+
- ext/fsevent/extconf.rb
|
51
51
|
extra_rdoc_files:
|
52
52
|
- LICENSE
|
53
53
|
- README.rdoc
|
54
54
|
files:
|
55
55
|
- CHANGELOG.txt
|
56
|
-
- fsevent/
|
56
|
+
- ext/fsevent/fsevent_sleep.c
|
57
57
|
- lib/autotest/fsevent.rb
|
58
58
|
- LICENSE
|
59
59
|
- README.rdoc
|
@@ -71,10 +71,8 @@ post_install_message: "\n\
|
|
71
71
|
Rails, thank you!\n\n\
|
72
72
|
http://workingwithrails.com/recommendation/new/person/11706-sven-schwyn\n\n\
|
73
73
|
+-------------------------------------------------------------------------+\n\
|
74
|
-
|
|
75
|
-
|
|
76
|
-
| but the more lightweight autotest gem. You MUST uninstall ZenTest now! |\n\
|
77
|
-
| Please refer to the README in case you need more ZenTest functionality. |\n\
|
74
|
+
| UPGRADING USERS please take a look at the README now for important news |\n\
|
75
|
+
| related to modified dependencies since 0.1.x and Rails compatibility. |\n\
|
78
76
|
+-------------------------------------------------------------------------+\n\
|
79
77
|
\e[0m\n"
|
80
78
|
rdoc_options:
|
Binary file
|