redcar 0.3.8.1 → 0.3.8.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,7 @@
1
+ Version 0.3.8.2 (22 July 2010)
2
+ ==============================
3
+
4
+ * Update xulrunner url AGAIN. (Dan Lucraft)
1
5
 
2
6
  Version 0.3.8.1 (18 July 2010)
3
7
  ==============================
data/Rakefile CHANGED
@@ -1,4 +1,4 @@
1
- REDCAR_VERSION = "0.3.8.1"
1
+ REDCAR_VERSION = "0.3.8.2"
2
2
  require 'rubygems'
3
3
  require 'fileutils'
4
4
  require 'spec/rake/spectask'
@@ -48,7 +48,6 @@ class PluginManager
48
48
  end
49
49
 
50
50
  def load
51
- start = Time.now
52
51
  previous_length = @unloaded_plugins.length + 1
53
52
  while previous_length > @unloaded_plugins.length
54
53
  previous_length = @unloaded_plugins.length
@@ -66,7 +65,6 @@ class PluginManager
66
65
  @unloaded_plugins.delete(plugin)
67
66
  end
68
67
  end
69
- puts "[PluginManager] took #{Time.now - start}s to load plugins" if ENV["PLUGIN_DEBUG"]
70
68
  end
71
69
 
72
70
  private
@@ -103,7 +103,7 @@ module Redcar
103
103
  "/application_swt-#{Redcar::VERSION}.jar" => "plugins/application_swt/lib/dist/application_swt.jar"
104
104
  }
105
105
 
106
- XULRUNNER_URI = "http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/1.9.2.6/runtimes/xulrunner-1.9.2.6.en-US.win32.zip"
106
+ XULRUNNER_URI = "http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/1.9.2.7/runtimes/xulrunner-1.9.2.7.en-US.win32.zip"
107
107
 
108
108
  SWT_JARS = {
109
109
  :osx => {
data/lib/redcar.rb CHANGED
@@ -41,7 +41,7 @@ require 'uri'
41
41
  #
42
42
  # and so on.
43
43
  module Redcar
44
- VERSION = '0.3.8.1'
44
+ VERSION = '0.3.8.2'
45
45
  VERSION_MAJOR = 0
46
46
  VERSION_MINOR = 3
47
47
  VERSION_RELEASE = 8
@@ -0,0 +1,72 @@
1
+ = Net::Ftp::List
2
+
3
+ == DESCRIPTION
4
+
5
+ Ruby lib to parse FTP LIST responses.
6
+
7
+ According to the FTP RFC the LIST command "information on a file may vary widely from system to system, this
8
+ information may be hard to use automatically in a program, but may be quite useful to a human user".
9
+ Unfortunately the NLST command "intended to return information that can be used by a program to further process
10
+ the files automatically" only returns the filename and no other information. If you want to know to know even
11
+ simple things like 'is the NLST entry a directory or file' you are left with the choice of attempting to CWD to
12
+ (and back from) each entry or parsing the LIST command. This extension is an attempt at parsing the LIST command
13
+ and as such is subject to all the variability that results from such an undertaking, take responses with a grain
14
+ of salt and expect failures.
15
+
16
+ See the RFC for more guff on LIST and NLST: http://www.ietf.org/rfc/rfc0959.txt
17
+
18
+ == TODO & PROBLEMS
19
+
20
+ * I'm new to Ruby, I'm sure some exist :)
21
+ * The factory and abstract base class for parsers are one and the same. OO geeks will cry.
22
+ * More OS's and server types. Only servers that return Unix like LIST responses will work at the moment.
23
+ * Calling <tt>if entry.file? or entry.dir?</tt> is hard work when you really mean <tt>unless entry.unknown?</tt>
24
+
25
+ == SYNOPSIS
26
+
27
+ require 'net/ftp' # Not really required but I like to list dependencies sometimes.
28
+ require 'net/ftp/list'
29
+
30
+ ftp = Net::FTP.open('somehost.com', 'user', 'pass')
31
+ ftp.list('/some/path') do |e|
32
+ entry = Net::FTP::List.parse(e)
33
+
34
+ # Ignore everything that's not a file (so symlinks, directories and devices etc.)
35
+ next unless entry.file?
36
+
37
+ # If entry isn't a kind_of Net::FTP::List::Unknown then there is a bug in Net::FTP::List if this isn't the
38
+ # same name as ftp.nlist('/some/path') would have returned.
39
+ puts entry.basename
40
+ end
41
+
42
+ == CREDITS
43
+
44
+ * ASF, Commons. http://commons.apache.org/
45
+ * The good people at Stateless Systems who let me write Ruby and give it away.
46
+
47
+ == LICENSE
48
+
49
+ (The MIT License, go nuts)
50
+
51
+ Copyright (c) 2007 Shane Hanna
52
+ Stateless Systems
53
+ http://statelesssystems.com
54
+
55
+ Permission is hereby granted, free of charge, to any person obtaining
56
+ a copy of this software and associated documentation files (the
57
+ 'Software'), to deal in the Software without restriction, including
58
+ without limitation the rights to use, copy, modify, merge, publish,
59
+ distribute, sublicense, and/or sell copies of the Software, and to
60
+ permit persons to whom the Software is furnished to do so, subject to
61
+ the following conditions:
62
+
63
+ The above copyright notice and this permission notice shall be
64
+ included in all copies or substantial portions of the Software.
65
+
66
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
67
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
68
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
69
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
70
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
71
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
72
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,52 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "net-ftp-list"
8
+ gem.summary = %Q{Parse FTP LIST command output.}
9
+ gem.email = "enquiries@statelesssystems.com"
10
+ gem.homepage = "http://github.com/stateless-systems/net-ftp-list"
11
+ gem.authors = ["Stateless Systems"]
12
+ end
13
+ rescue LoadError
14
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
15
+ end
16
+
17
+ require 'rake/testtask'
18
+ Rake::TestTask.new(:test) do |test|
19
+ test.libs << 'lib' << 'test'
20
+ test.pattern = 'test/**/*_test.rb'
21
+ test.verbose = true
22
+ end
23
+
24
+ begin
25
+ require 'rcov/rcovtask'
26
+ Rcov::RcovTask.new do |test|
27
+ test.libs << 'test'
28
+ test.pattern = 'test/**/*_test.rb'
29
+ test.verbose = true
30
+ end
31
+ rescue LoadError
32
+ task :rcov do
33
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
34
+ end
35
+ end
36
+
37
+ task :default => :test
38
+
39
+ require 'rake/rdoctask'
40
+ Rake::RDocTask.new do |rdoc|
41
+ if File.exist?('VERSION.yml')
42
+ config = YAML.load(File.read('VERSION.yml'))
43
+ version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
44
+ else
45
+ version = ""
46
+ end
47
+
48
+ rdoc.rdoc_dir = 'rdoc'
49
+ rdoc.title = "net-ftp-list #{version}"
50
+ rdoc.rdoc_files.include('README*')
51
+ rdoc.rdoc_files.include('lib/**/*.rb')
52
+ end
@@ -0,0 +1,4 @@
1
+ ---
2
+ :minor: 0
3
+ :patch: 0
4
+ :major: 2
@@ -0,0 +1,53 @@
1
+ require 'net/ftp/list/parser'
2
+ require 'date'
3
+
4
+ module Net
5
+ class FTP
6
+ module List
7
+
8
+ # Parse Microsoft(NT) like FTP LIST entries.
9
+ #
10
+ # == MATCHES
11
+ #
12
+ # 06-25-07 01:08PM <DIR> etc
13
+ # 11-27-07 08:45PM 23437 README.TXT
14
+ #
15
+ # == SYNOPSIS
16
+ #
17
+ # entry = Net::FTP::List::Microsoft.new('06-25-07 01:08PM <DIR> etc')
18
+ # entry.dir? # => true
19
+ # entry.basename # => 'etc'
20
+ class Microsoft < Parser
21
+
22
+ # Stolen straight from the ASF's commons Java FTP LIST parser library.
23
+ # http://svn.apache.org/repos/asf/commons/proper/net/trunk/src/java/org/apache/commons/net/ftp/
24
+ REGEXP = %r!
25
+ ^\s*
26
+ ([0-9\-:\/]{5,})\s+([0-9\-:]{3,}(?:[aApP][mM])?)\s+
27
+ (?:(<DIR>)|([0-9]+))\s+
28
+ (\S.*)
29
+ \s*$
30
+ !x
31
+
32
+ # Parse a Microsoft(NT) like FTP LIST entries.
33
+ def initialize(raw)
34
+ super(raw)
35
+ match = REGEXP.match(raw.strip) or raise ParserError
36
+
37
+ @mtime = DateTime.strptime("#{match[1]} #{match[2]}", "%m-%d-%y %I:%M%p")
38
+
39
+ if match[3] == '<DIR>'
40
+ @dir = true
41
+ else
42
+ @file = true
43
+ end
44
+
45
+ # TODO: Permissions, users, groups, date/time.
46
+
47
+ @basename = match[5]
48
+ end
49
+ end
50
+
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,53 @@
1
+ require 'net/ftp/list/parser'
2
+ require 'time'
3
+
4
+ module Net
5
+ class FTP
6
+ module List
7
+
8
+ # Parse Netware like FTP LIST entries.
9
+ #
10
+ # == MATCHES
11
+ #
12
+ # d [RWCEAFMS] dpearce 512 Jun 27 23:46 public.www
13
+ #
14
+ # == SYNOPSIS
15
+ #
16
+ # entry = Net::FTP::List::Netware.new('d [RWCEAFMS] dpearce 512 Jun 27 23:46 public.www')
17
+ # entry.dir? # => true
18
+ # entry.basename # => 'public.www'
19
+ class Netware < Parser
20
+
21
+ # Stolen straight from the ASF's commons Java FTP LIST parser library.
22
+ # http://svn.apache.org/repos/asf/commons/proper/net/trunk/src/java/org/apache/commons/net/ftp/
23
+
24
+ REGEXP = %r!^
25
+ (d|-){1}\s+
26
+ \[(.*?)\]\s+
27
+ (\S+)\s+(\d+)\s+
28
+ (\S+\s+\S+\s+((\d+:\d+)|(\d{4})))
29
+ \s+(.*)
30
+ $!x
31
+
32
+ # Parse a Netware like FTP LIST entries.
33
+ def initialize(raw)
34
+ super(raw)
35
+ match = REGEXP.match(raw.strip) or raise ParserError
36
+
37
+ @mtime = Time.parse(match[5])
38
+
39
+ if match[1] == 'd'
40
+ @dir = true
41
+ else
42
+ @file = true
43
+ end
44
+
45
+ # TODO: Permissions, users, groups, date/time.
46
+
47
+ @basename = match[9]
48
+ end
49
+ end
50
+
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,97 @@
1
+ module Net
2
+ class FTP
3
+ module List
4
+
5
+ # ParserError
6
+ #
7
+ # Raw entry couldn't be parsed for some reason.
8
+ #
9
+ # == TODO
10
+ #
11
+ # Get more specific with error messages.
12
+ class ParserError < RuntimeError; end
13
+
14
+ # Abstract FTP LIST parser.
15
+ #
16
+ # It really just defines and documents the interface.
17
+ #
18
+ # == Exceptions
19
+ #
20
+ # +ParserError+ -- Raw entry could not be parsed.
21
+ class Parser
22
+ @@parsers = []
23
+
24
+ # Parse a raw FTP LIST line.
25
+ #
26
+ # By default just takes and set the raw list entry.
27
+ #
28
+ # Net::FTP::List.parse(raw_list_string) # => Net::FTP::List::Parser instance.
29
+ def initialize(raw)
30
+ @raw = raw
31
+ end
32
+
33
+ # The raw list entry string.
34
+ def raw
35
+ @raw ||= ''
36
+ end
37
+ alias_method :to_s, :raw
38
+
39
+ # The items basename (filename).
40
+ def basename
41
+ @basename ||= ''
42
+ end
43
+
44
+ # Looks like a directory, try CWD.
45
+ def dir?
46
+ !!@dir ||= false
47
+ end
48
+
49
+ # Looks like a file, try RETR.
50
+ def file?
51
+ !!@file ||= false
52
+ end
53
+
54
+ # Looks like a symbolic link.
55
+ def symlink?
56
+ !!@symlink ||= false
57
+ end
58
+
59
+ def mtime
60
+ @mtime
61
+ end
62
+
63
+ class << self
64
+ # Acts as a factory.
65
+ #
66
+ # TODO: Having a class be both factory and abstract implementation seems a little nutty to me. If it ends up
67
+ # too confusing or gives anyone the shits I'll move it.
68
+ def inherited(klass) #:nodoc:
69
+ @@parsers << klass
70
+ end
71
+
72
+ # Factory method.
73
+ #
74
+ # Attempt to find a parser and parse a list item. At worst the item will return an Net::FTP::List::Unknown
75
+ # instance. This may change in the future so that only parsable entries are kept.
76
+ def parse(raw)
77
+ @@parsers.reverse.each do |parser|
78
+ begin
79
+ return parser.new(raw)
80
+ rescue ParserError
81
+ next
82
+ end
83
+ end
84
+ end
85
+ end
86
+
87
+ end
88
+
89
+ # Unknown parser.
90
+ #
91
+ # If all other attempts to parse the entry fail this class will be returned. Only the +raw+ and +to_s+
92
+ # methods will return anything useful.
93
+ class Unknown < Parser
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,64 @@
1
+ require 'time'
2
+ require 'net/ftp/list/parser'
3
+
4
+ module Net
5
+ class FTP
6
+ module List
7
+
8
+ # Parse Unix like FTP LIST entries.
9
+ #
10
+ # == MATCHES
11
+ #
12
+ # drwxr-xr-x 4 steve group 4096 Dec 10 20:23 etc
13
+ # -rw-r--r-- 1 root other 531 Jan 29 03:26 README.txt
14
+ #
15
+ # == SYNOPSIS
16
+ #
17
+ # entry = Net::FTP::List::Unix.new('drwxr-xr-x 4 steve group 4096 Dec 10 20:23 etc')
18
+ # entry.dir? # => true
19
+ # entry.basename # => 'etc'
20
+ class Unix < Parser
21
+
22
+ # Stolen straight from the ASF's commons Java FTP LIST parser library.
23
+ # http://svn.apache.org/repos/asf/commons/proper/net/trunk/src/java/org/apache/commons/net/ftp/
24
+ REGEXP = %r{
25
+ ([bcdlfmpSs-])
26
+ (((r|-)(w|-)([xsStTL-]))((r|-)(w|-)([xsStTL-]))((r|-)(w|-)([xsStTL-])))\+?\s+
27
+ (\d+)\s+
28
+ (\S+)\s+
29
+ (?:(\S+(?:\s\S+)*)\s+)?
30
+ (\d+)\s+
31
+ ((?:\d+[-/]\d+[-/]\d+)|(?:\S+\s+\S+))\s+
32
+ (\d+(?::\d+)?)\s+
33
+ (\S*)(\s*.*)
34
+ }x
35
+
36
+ # Parse a Unix like FTP LIST entries.
37
+ def initialize(raw)
38
+ super(raw)
39
+ match = REGEXP.match(raw.strip) or raise ParserError
40
+
41
+ case match[1]
42
+ when /d/ then @dir = true
43
+ when /l/ then @symlink = true
44
+ when /[f-]/ then @file = true
45
+ when /[bc]/ then # Do nothing with devices for now.
46
+ else ParserError 'Unknown LIST entry type.'
47
+ end
48
+
49
+ # TODO: Permissions, users, groups, date/time.
50
+ @mtime = Time.parse("#{match[19]} #{match[20]}")
51
+
52
+ @basename = match[21].strip
53
+
54
+ # filenames with spaces will end up in the last match
55
+ @basename += match[22] unless match[22].nil?
56
+
57
+ # strip the symlink stuff we don't care about
58
+ @basename.sub!(/\s+\->.+$/, '') if @symlink
59
+ end
60
+ end
61
+
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,43 @@
1
+ require 'net/ftp'
2
+ require 'net/ftp/list/parser'
3
+
4
+ # The order here is important for the time being. Corse grained parsers should appear before specializations because
5
+ # the whole thing is searched in reverse order.
6
+ require 'net/ftp/list/unix'
7
+ require 'net/ftp/list/microsoft'
8
+ require 'net/ftp/list/netware'
9
+
10
+ module Net #:nodoc:
11
+ class FTP #:nodoc:
12
+
13
+ # Parse FTP LIST responses.
14
+ #
15
+ # == Creation
16
+ #
17
+ # require 'net/ftp' # Not really required but I like to list dependencies sometimes.
18
+ # require 'net/ftp/list'
19
+ #
20
+ # ftp = Net::FTP.open('somehost.com', 'user', 'pass')
21
+ # ftp.list('/some/path') do |e|
22
+ # entry = Net::FTP::List.parse(e)
23
+ #
24
+ # # Ignore everything that's not a file (so symlinks, directories and devices etc.)
25
+ # next unless entry.file?
26
+ #
27
+ # # If entry isn't a kind_of Net::FTP::List::Unknown then there is a bug in Net::FTP::List if this isn't the
28
+ # # same name as ftp.nlist('/some/path') would have returned.
29
+ # puts entry.basename
30
+ # end
31
+ #
32
+ # == Exceptions
33
+ #
34
+ # None at this time. At worst you'll end up with an Net::FTP::List::Unknown instance which won't have any extra
35
+ # useful information. Methods like <tt>dir?</tt>, <tt>file?</tt> and <tt>symlink?</tt> will all return +false+.
36
+ module List
37
+ def self.parse(*args)
38
+ Parser.parse(*args)
39
+ end
40
+ end
41
+ end
42
+ end
43
+
@@ -0,0 +1,48 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{net-ftp-list}
5
+ s.version = "2.0.0"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Stateless Systems"]
9
+ s.date = %q{2009-05-05}
10
+ s.email = %q{enquiries@statelesssystems.com}
11
+ s.extra_rdoc_files = [
12
+ "README.txt"
13
+ ]
14
+ s.files = [
15
+ "README.txt",
16
+ "Rakefile",
17
+ "VERSION.yml",
18
+ "lib/net/ftp/list.rb",
19
+ "lib/net/ftp/list/microsoft.rb",
20
+ "lib/net/ftp/list/netware.rb",
21
+ "lib/net/ftp/list/parser.rb",
22
+ "lib/net/ftp/list/unix.rb",
23
+ "test/test_net_ftp_list_microsoft.rb",
24
+ "test/test_net_ftp_list_netware.rb",
25
+ "test/test_net_ftp_list_unix.rb"
26
+ ]
27
+ s.has_rdoc = true
28
+ s.homepage = %q{http://github.com/stateless-systems/net-ftp-list}
29
+ s.rdoc_options = ["--charset=UTF-8"]
30
+ s.require_paths = ["lib"]
31
+ s.rubygems_version = %q{1.3.1}
32
+ s.summary = %q{Parse FTP LIST command output.}
33
+ s.test_files = [
34
+ "test/test_net_ftp_list_unix.rb",
35
+ "test/test_net_ftp_list_netware.rb",
36
+ "test/test_net_ftp_list_microsoft.rb"
37
+ ]
38
+
39
+ if s.respond_to? :specification_version then
40
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
41
+ s.specification_version = 2
42
+
43
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
44
+ else
45
+ end
46
+ else
47
+ end
48
+ end
@@ -0,0 +1,38 @@
1
+ require 'test/unit'
2
+ require 'net/ftp/list'
3
+
4
+ class TestNetFTPListMicrosoft < Test::Unit::TestCase
5
+
6
+ def setup
7
+ # DATE TIME DIR SIZE NAME
8
+ @dir = Net::FTP::List.parse('06-25-07 01:08PM <DIR> etc')
9
+ @file = Net::FTP::List.parse('11-27-07 08:45PM 23437 README.TXT')
10
+ end
11
+
12
+ def test_parse_new
13
+ assert_instance_of Net::FTP::List::Microsoft, @dir, 'LIST M$ directory'
14
+ assert_instance_of Net::FTP::List::Microsoft, @file, 'LIST M$ file'
15
+ end
16
+
17
+ def test_rubbish_lines
18
+ assert_instance_of Net::FTP::List::Unknown, Net::FTP::List.parse("++ bah! ++")
19
+ end
20
+
21
+ def test_ruby_micrsoft_mtime
22
+ assert_equal DateTime.strptime('06-25-07 01:08PM', "%m-%d-%y %I:%M%p"), @dir.mtime
23
+ assert_equal DateTime.strptime('11-27-07 08:45PM', "%m-%d-%y %I:%M%p"), @file.mtime
24
+ end
25
+
26
+ def test_ruby_microsoft_like_dir
27
+ assert_equal 'etc', @dir.basename
28
+ assert @dir.dir?
29
+ assert !@dir.file?
30
+ end
31
+
32
+ def test_ruby_microsoft_like_file
33
+ assert_equal 'README.TXT', @file.basename
34
+ assert @file.file?
35
+ assert !@file.dir?
36
+ end
37
+
38
+ end
@@ -0,0 +1,37 @@
1
+ require 'test/unit'
2
+ require 'net/ftp/list'
3
+
4
+ class TestNetFTPListNetware < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @dir = Net::FTP::List.parse('d [RWCEAFMS] dpearce 512 Jun 27 23:46 public.www')
8
+ @file = Net::FTP::List.parse('- [RWCEAFMS] dpearce 2767 Jun 22 06:22 about.html')
9
+ end
10
+
11
+ def test_parse_new
12
+ assert_instance_of Net::FTP::List::Netware, @dir, 'LIST Netware directory'
13
+ assert_instance_of Net::FTP::List::Netware, @file, 'LIST Netware file'
14
+ end
15
+
16
+ def test_rubbish_lines
17
+ assert_instance_of Net::FTP::List::Unknown, Net::FTP::List.parse("++ bah! ++")
18
+ end
19
+
20
+ def test_ruby_netware_mtime
21
+ assert_equal @dir.mtime, Time.parse('Jun 27 23:46')
22
+ assert_equal @file.mtime, Time.parse('Jun 22 06:22')
23
+ end
24
+
25
+ def test_ruby_netware_like_dir
26
+ assert_equal 'public.www', @dir.basename
27
+ assert @dir.dir?
28
+ assert !@dir.file?
29
+ end
30
+
31
+ def test_ruby_netware_like_file
32
+ assert_equal 'about.html', @file.basename
33
+ assert @file.file?
34
+ assert !@file.dir?
35
+ end
36
+
37
+ end
@@ -0,0 +1,62 @@
1
+ require 'test/unit'
2
+ require 'net/ftp/list'
3
+
4
+ class TestNetFTPListUnix < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @dir = Net::FTP::List.parse 'drwxr-xr-x 4 user group 4096 Dec 10 20:23 etc'
8
+ @file = Net::FTP::List.parse '-rw-r--r-- 1 root other 531 Jan 29 03:26 README'
9
+ @other_dir = Net::FTP::List.parse 'drwxr-xr-x 8 1791 600 4096 Mar 11 07:57 forums'
10
+ @spaces = Net::FTP::List.parse 'drwxrwxr-x 2 danial danial 72 May 23 12:52 spaces suck'
11
+ @symlink = Net::FTP::List.parse 'lrwxrwxrwx 1 danial danial 4 Apr 30 15:26 bar -> /etc'
12
+ @older_date = Net::FTP::List.parse '-rwxrwxrwx 1 owner group 154112 Feb 15 2008 participando.xls'
13
+ end
14
+
15
+ def test_parse_new
16
+ assert_instance_of Net::FTP::List::Unix, @dir, 'LIST unixish directory'
17
+ assert_instance_of Net::FTP::List::Unix, @file, 'LIST unixish file'
18
+ assert_instance_of Net::FTP::List::Unix, @other_dir, 'LIST unixish directory'
19
+ assert_instance_of Net::FTP::List::Unix, @spaces, 'LIST unixish directory with spaces'
20
+ assert_instance_of Net::FTP::List::Unix, @symlink, 'LIST unixish symlink'
21
+ end
22
+
23
+ def test_rubbish_lines
24
+ assert_instance_of Net::FTP::List::Unknown, Net::FTP::List.parse("++ bah! ++")
25
+ end
26
+
27
+ def test_ruby_unix_like_date
28
+ assert_equal Time.parse("Mar 11 07:57"), @other_dir.mtime
29
+ assert_equal Time.parse("Apr 30 15:26"), @symlink.mtime
30
+ assert_equal Time.parse("Feb 15 2008"), @older_date.mtime
31
+ end
32
+
33
+ def test_ruby_unix_like_dir
34
+ assert_equal 'etc', @dir.basename
35
+ assert @dir.dir?
36
+ assert !@dir.file?
37
+
38
+ assert_equal 'forums', @other_dir.basename
39
+ assert @other_dir.dir?
40
+ assert !@other_dir.file?
41
+ end
42
+
43
+ def test_ruby_unix_like_symlink
44
+ assert_equal 'bar', @symlink.basename
45
+ assert @symlink.symlink?
46
+ assert !@symlink.dir?
47
+ assert !@symlink.file?
48
+ end
49
+
50
+ def test_spaces_in_unix_dir
51
+ assert_equal 'spaces suck', @spaces.basename
52
+ assert @spaces.dir?
53
+ assert !@spaces.file?
54
+ end
55
+
56
+ def test_ruby_unix_like_file
57
+ assert_equal 'README', @file.basename
58
+ assert @file.file?
59
+ assert !@file.dir?
60
+ end
61
+
62
+ end
@@ -1,4 +1,5 @@
1
1
  $:.push File.join(File.dirname(__FILE__), '..', '..', '..', 'lib')
2
2
 
3
3
  require 'redcar'
4
+ Redcar.environment = :test
4
5
  Redcar.load
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redcar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.8.1
4
+ version: 0.3.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Lucraft
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-07-18 00:00:00 +01:00
12
+ date: 2010-07-22 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -855,6 +855,18 @@ files:
855
855
  - plugins/project/spec/project/file_list_spec.rb
856
856
  - plugins/project/spec/project/file_mirror_spec.rb
857
857
  - plugins/project/spec/spec_helper.rb
858
+ - plugins/project/vendor/net-ftp-list/lib/net/ftp/list/microsoft.rb
859
+ - plugins/project/vendor/net-ftp-list/lib/net/ftp/list/netware.rb
860
+ - plugins/project/vendor/net-ftp-list/lib/net/ftp/list/parser.rb
861
+ - plugins/project/vendor/net-ftp-list/lib/net/ftp/list/unix.rb
862
+ - plugins/project/vendor/net-ftp-list/lib/net/ftp/list.rb
863
+ - plugins/project/vendor/net-ftp-list/net-ftp-list.gemspec
864
+ - plugins/project/vendor/net-ftp-list/Rakefile
865
+ - plugins/project/vendor/net-ftp-list/README.txt
866
+ - plugins/project/vendor/net-ftp-list/test/test_net_ftp_list_microsoft.rb
867
+ - plugins/project/vendor/net-ftp-list/test/test_net_ftp_list_netware.rb
868
+ - plugins/project/vendor/net-ftp-list/test/test_net_ftp_list_unix.rb
869
+ - plugins/project/vendor/net-ftp-list/VERSION.yml
858
870
  - plugins/project/vendor/net-sftp/lib/net/sftp/constants.rb
859
871
  - plugins/project/vendor/net-sftp/lib/net/sftp/errors.rb
860
872
  - plugins/project/vendor/net-sftp/lib/net/sftp/operations/dir.rb
@@ -1059,6 +1071,7 @@ files:
1059
1071
  - plugins/repl/plugin.rb
1060
1072
  - plugins/repl/spec/repl/internal_mirror_spec.rb
1061
1073
  - plugins/repl/spec/spec_helper.rb
1074
+ - plugins/repl/vendor/clojure.jar
1062
1075
  - plugins/runnables/icons/cog.png
1063
1076
  - plugins/runnables/lib/runnables/command_output_controller.rb
1064
1077
  - plugins/runnables/lib/runnables/running_process_checker.rb