Hi,

Please see the attached 8 patches for additions to the Kernel#test function for code review.

Thanks,

Zac
>From 8235b7104cac8f4dea75f828e1da4505a56ec13f Mon Sep 17 00:00:00 2001
From: zacbrown <z...@zacbrown.org>
Date: Sat, 10 Apr 2010 20:43:23 -0700
Subject: [PATCH 1/8] Add support for ?A (atime) in Kernel.test and add 
appropriate mspec tests.

---
 .../mspec/rubyspec/core/kernel/test_spec.rb        |    5 +++++
 .../Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs |    4 +++-
 2 files changed, 8 insertions(+), 1 deletions(-)

diff --git 
a/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
 
b/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
index 0d6075a..984b6fe 100644
--- 
a/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
+++ 
b/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
@@ -23,6 +23,11 @@ describe "Kernel#test" do
     Kernel.test(?d, @dir).should == true
   end
 
+  it "returns an object of type Time if the argument is a directory or file" do
+    Kernel.test(?A, @file).kind_of?(Time).should == true
+    Kernel.test(?A, @dir).kind_of?(Time).should == true
+  end
+
   ruby_version_is "1.9" do
     it "calls #to_path on second argument when passed ?f and a filename" do
       p = mock('path')
diff --git 
a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs 
b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
index b50e9a6..c4cd217 100644
--- a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
+++ b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
@@ -1134,7 +1134,9 @@ namespace IronRuby.Builtins {
             [DefaultProtocol, NotNull]MutableString/*!*/ file1) {
             cmd &= 0xFF;
             switch (cmd) {
-                case 'A': throw new NotImplementedException();
+                case 'A':
+                    return 
RubyFileOps.RubyStatOps.AccessTime(RubyFileOps.RubyStatOps.Create(context, 
file1));
+
                 case 'b': throw new NotImplementedException();
                 case 'C': throw new NotImplementedException();
                 case 'c': throw new NotImplementedException();
-- 
1.7.0.2.msysgit.0

>From 4da4a6e6d4fe04a7c6e222e5a11f7395cd56f95c Mon Sep 17 00:00:00 2001
From: zacbrown <z...@zacbrown.org>
Date: Sat, 10 Apr 2010 20:44:06 -0700
Subject: [PATCH 2/8] Add support for ?b (block device) in Kernel.test and add 
partial mspec test.

---
 .../mspec/rubyspec/core/kernel/test_spec.rb        |    4 ++++
 .../Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs |    4 +++-
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git 
a/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
 
b/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
index 984b6fe..10d83f6 100644
--- 
a/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
+++ 
b/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
@@ -28,6 +28,10 @@ describe "Kernel#test" do
     Kernel.test(?A, @dir).kind_of?(Time).should == true
   end
 
+  it "returns true when passed ?b if the argument is a block device" do
+    Kernel.test(?b, @file).should == false
+  end
+
   ruby_version_is "1.9" do
     it "calls #to_path on second argument when passed ?f and a filename" do
       p = mock('path')
diff --git 
a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs 
b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
index c4cd217..0234bf3 100644
--- a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
+++ b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
@@ -1137,7 +1137,9 @@ namespace IronRuby.Builtins {
                 case 'A':
                     return 
RubyFileOps.RubyStatOps.AccessTime(RubyFileOps.RubyStatOps.Create(context, 
file1));
 
-                case 'b': throw new NotImplementedException();
+                case 'b':
+                    return 
RubyFileOps.RubyStatOps.IsBlockDevice(RubyFileOps.RubyStatOps.Create(context, 
file1));
+
                 case 'C': throw new NotImplementedException();
                 case 'c': throw new NotImplementedException();
 
-- 
1.7.0.2.msysgit.0

>From f7d88dd557c4554cde65cd84876330569d6225e2 Mon Sep 17 00:00:00 2001
From: zacbrown <z...@zacbrown.org>
Date: Sat, 10 Apr 2010 20:44:54 -0700
Subject: [PATCH 3/8] Add support for ?C (ctime) in Kernel.test and add mspec 
test.

---
 .../mspec/rubyspec/core/kernel/test_spec.rb        |    5 +++++
 .../Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs |    4 +++-
 2 files changed, 8 insertions(+), 1 deletions(-)

diff --git 
a/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
 
b/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
index 10d83f6..8708e62 100644
--- 
a/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
+++ 
b/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
@@ -32,6 +32,11 @@ describe "Kernel#test" do
     Kernel.test(?b, @file).should == false
   end
 
+  it "returns an object of type Time if the argument is a directory or file" do
+    Kernel.test(?C, @file).kind_of?(Time).should == true
+    Kernel.test(?C, @dir).kind_of?(Time).should == true
+  end
+
   ruby_version_is "1.9" do
     it "calls #to_path on second argument when passed ?f and a filename" do
       p = mock('path')
diff --git 
a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs 
b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
index 0234bf3..7524acd 100644
--- a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
+++ b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
@@ -1140,7 +1140,9 @@ namespace IronRuby.Builtins {
                 case 'b':
                     return 
RubyFileOps.RubyStatOps.IsBlockDevice(RubyFileOps.RubyStatOps.Create(context, 
file1));
 
-                case 'C': throw new NotImplementedException();
+                case 'C':
+                    return 
RubyFileOps.RubyStatOps.CreateTime(RubyFileOps.RubyStatOps.Create(context, 
file1));
+
                 case 'c': throw new NotImplementedException();
 
                 case 'd':
-- 
1.7.0.2.msysgit.0

>From 3ee8c7c9fcaa052e8e3e27a68947d09387eda8de Mon Sep 17 00:00:00 2001
From: zacbrown <z...@zacbrown.org>
Date: Sat, 10 Apr 2010 20:45:17 -0700
Subject: [PATCH 4/8] Add support for ?c (character device) in Kernel.test and 
add appropriate mspec tests.

---
 .../mspec/rubyspec/core/kernel/test_spec.rb        |    4 ++++
 .../Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs |    3 ++-
 2 files changed, 6 insertions(+), 1 deletions(-)

diff --git 
a/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
 
b/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
index 8708e62..e437d19 100644
--- 
a/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
+++ 
b/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
@@ -37,6 +37,10 @@ describe "Kernel#test" do
     Kernel.test(?C, @dir).kind_of?(Time).should == true
   end
 
+  it "returns true when passed ?c if the argument is a character device" do
+    Kernel.test(?c, @file).should == false
+  end
+
   ruby_version_is "1.9" do
     it "calls #to_path on second argument when passed ?f and a filename" do
       p = mock('path')
diff --git 
a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs 
b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
index 7524acd..d05179d 100644
--- a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
+++ b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
@@ -1143,7 +1143,8 @@ namespace IronRuby.Builtins {
                 case 'C':
                     return 
RubyFileOps.RubyStatOps.CreateTime(RubyFileOps.RubyStatOps.Create(context, 
file1));
 
-                case 'c': throw new NotImplementedException();
+                case 'c':
+                    return 
RubyFileOps.RubyStatOps.IsCharDevice(RubyFileOps.RubyStatOps.Create(context, 
file1));
 
                 case 'd':
                     return RubyFileOps.DirectoryExists(context, file1);
-- 
1.7.0.2.msysgit.0

>From 399ebedc887d1a91fa10fef8842b71d2bbc6dc07 Mon Sep 17 00:00:00 2001
From: zacbrown <z...@zacbrown.org>
Date: Sat, 10 Apr 2010 20:45:47 -0700
Subject: [PATCH 5/8] Add support for ?g (setgid) in Kernel.test and add mspec 
test.

---
 .../mspec/rubyspec/core/kernel/test_spec.rb        |    4 ++++
 .../Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs |    4 +++-
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git 
a/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
 
b/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
index e437d19..29d1c23 100644
--- 
a/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
+++ 
b/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
@@ -41,6 +41,10 @@ describe "Kernel#test" do
     Kernel.test(?c, @file).should == false
   end
 
+  it "returns true when passed ?g if the argument has the GID set (false on NT 
and thus, .NET)" do
+    Kernel.test(?g, @file).should == false
+  end
+
   ruby_version_is "1.9" do
     it "calls #to_path on second argument when passed ?f and a filename" do
       p = mock('path')
diff --git 
a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs 
b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
index d05179d..290b4fe 100644
--- a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
+++ b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
@@ -1153,7 +1153,9 @@ namespace IronRuby.Builtins {
                 case 'f':
                     return RubyFileOps.FileExists(context, file1);
 
-                case 'g': throw new NotImplementedException();
+                case 'g':
+                    return 
RubyFileOps.RubyStatOps.IsSetGid(RubyFileOps.RubyStatOps.Create(context, 
file1));
+
                 case 'G': throw new NotImplementedException();
                 case 'k': throw new NotImplementedException();
                 case 'l': throw new NotImplementedException();
-- 
1.7.0.2.msysgit.0

>From 40699dc88f221c796d0eb35dba60d3198f75c11c Mon Sep 17 00:00:00 2001
From: zacbrown <z...@zacbrown.org>
Date: Sat, 10 Apr 2010 20:46:19 -0700
Subject: [PATCH 6/8] Add support for ?G (grpowned?) in Kernel.test and add 
mspec test.

---
 .../mspec/rubyspec/core/kernel/test_spec.rb        |    4 ++++
 .../Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs |    4 +++-
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git 
a/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
 
b/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
index 29d1c23..98ec9e0 100644
--- 
a/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
+++ 
b/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
@@ -45,6 +45,10 @@ describe "Kernel#test" do
     Kernel.test(?g, @file).should == false
   end
 
+  it "returns true when passed ?G if the argument exists and has a group 
ownership equal to the caller's group" do
+    Kernel.test(?G, @file).should == false
+  end
+
   ruby_version_is "1.9" do
     it "calls #to_path on second argument when passed ?f and a filename" do
       p = mock('path')
diff --git 
a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs 
b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
index 290b4fe..66d591b 100644
--- a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
+++ b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
@@ -1156,7 +1156,9 @@ namespace IronRuby.Builtins {
                 case 'g':
                     return 
RubyFileOps.RubyStatOps.IsSetGid(RubyFileOps.RubyStatOps.Create(context, 
file1));
 
-                case 'G': throw new NotImplementedException();
+                case 'G':
+                    return 
RubyFileOps.RubyStatOps.IsGroupOwned(RubyFileOps.RubyStatOps.Create(context, 
file1));
+
                 case 'k': throw new NotImplementedException();
                 case 'l': throw new NotImplementedException();
                 case 'M': throw new NotImplementedException();
-- 
1.7.0.2.msysgit.0

>From e6f5459265bc73ad073e31d966000c2ae6060ad3 Mon Sep 17 00:00:00 2001
From: zacbrown <z...@zacbrown.org>
Date: Sat, 10 Apr 2010 20:47:22 -0700
Subject: [PATCH 7/8] Add support for ?k (sticky bit) in Kernel.test and add 
mspec test. Requires changes to the return value of 
RubyFileOps.RubyStatOps.IsSticky due to behavior by MRI. MRI returns nil 
instead of false when the sticky bit isn't supported on a platform.

---
 .../mspec/rubyspec/core/kernel/test_spec.rb        |    4 ++++
 .../Libraries.LCA_RESTRICTED/Builtins/FileOps.cs   |    4 ++--
 .../Libraries.LCA_RESTRICTED/Builtins/FileTest.cs  |    2 +-
 .../Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs |    4 +++-
 .../Initializers.Generated.cs                      |    4 ++--
 5 files changed, 12 insertions(+), 6 deletions(-)

diff --git 
a/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
 
b/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
index 98ec9e0..d98fe35 100644
--- 
a/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
+++ 
b/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
@@ -49,6 +49,10 @@ describe "Kernel#test" do
     Kernel.test(?G, @file).should == false
   end
 
+  it "returns true when passed ?k if the argument has the sticky bit set" do
+    Kernel.test(?k, @file).should == nil
+  end
+
   ruby_version_is "1.9" do
     it "calls #to_path on second argument when passed ?f and a filename" do
       p = mock('path')
diff --git 
a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileOps.cs 
b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileOps.cs
index ed5b970..d3d6563 100644
--- a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileOps.cs
+++ b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileOps.cs
@@ -940,8 +940,8 @@ namespace IronRuby.Builtins {
             }
 
             [RubyMethod("sticky?")]
-            public static bool IsSticky(FileSystemInfo/*!*/ self) {
-                return false;
+            public static object IsSticky(FileSystemInfo/*!*/ self) {
+                return null;
             }
 
             [RubyMethod("symlink?")]
diff --git 
a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileTest.cs 
b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileTest.cs
index ab65fba..a3c6c93 100644
--- a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileTest.cs
+++ b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileTest.cs
@@ -114,7 +114,7 @@ namespace IronRuby.Builtins {
         }
 
         [RubyMethod("sticky?", RubyMethodAttributes.PublicSingleton)]
-        public static bool IsSticky(RubyModule/*!*/ self, [DefaultProtocol, 
NotNull]MutableString/*!*/ path) {
+        public static object IsSticky(RubyModule/*!*/ self, [DefaultProtocol, 
NotNull]MutableString/*!*/ path) {
             return 
RubyFileOps.RubyStatOps.IsSticky(RubyFileOps.RubyStatOps.Create(self.Context, 
path));
         }
 
diff --git 
a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs 
b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
index 66d591b..a807764 100644
--- a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
+++ b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
@@ -1159,7 +1159,9 @@ namespace IronRuby.Builtins {
                 case 'G':
                     return 
RubyFileOps.RubyStatOps.IsGroupOwned(RubyFileOps.RubyStatOps.Create(context, 
file1));
 
-                case 'k': throw new NotImplementedException();
+                case 'k':
+                    return 
RubyFileOps.RubyStatOps.IsSticky(RubyFileOps.RubyStatOps.Create(context, 
file1));
+
                 case 'l': throw new NotImplementedException();
                 case 'M': throw new NotImplementedException();
                 case 'O': throw new NotImplementedException();
diff --git 
a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs 
b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs
index bceafd4..a220433 100644
--- 
a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs
+++ 
b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs
@@ -1662,7 +1662,7 @@ namespace IronRuby.Builtins {
             
             DefineLibraryMethod(module, "sticky?", 0x51, 
                 0x00000000U, 
-                new Func<System.IO.FileSystemInfo, 
System.Boolean>(IronRuby.Builtins.RubyFileOps.RubyStatOps.IsSticky)
+                new Func<System.IO.FileSystemInfo, 
System.Object>(IronRuby.Builtins.RubyFileOps.RubyStatOps.IsSticky)
             );
             
             DefineLibraryMethod(module, "symlink?", 0x51, 
@@ -1786,7 +1786,7 @@ namespace IronRuby.Builtins {
             
             DefineLibraryMethod(module, "sticky?", 0x61, 
                 0x00010002U, 
-                new Func<IronRuby.Builtins.RubyModule, 
IronRuby.Builtins.MutableString, 
System.Boolean>(IronRuby.Builtins.FileTest.IsSticky)
+                new Func<IronRuby.Builtins.RubyModule, 
IronRuby.Builtins.MutableString, 
System.Object>(IronRuby.Builtins.FileTest.IsSticky)
             );
             
             #if !SILVERLIGHT
-- 
1.7.0.2.msysgit.0

>From 0b1a9396181112e471a70d02b63894d875b39600 Mon Sep 17 00:00:00 2001
From: zacbrown <z...@zacbrown.org>
Date: Sat, 10 Apr 2010 20:47:51 -0700
Subject: [PATCH 8/8] Add support for ?l (symlink) in Kernel.test and add mspec 
test.

---
 .../mspec/rubyspec/core/kernel/test_spec.rb        |    4 ++++
 .../Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs |    4 +++-
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git 
a/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
 
b/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
index d98fe35..edb6d67 100644
--- 
a/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
+++ 
b/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec/core/kernel/test_spec.rb
@@ -53,6 +53,10 @@ describe "Kernel#test" do
     Kernel.test(?k, @file).should == nil
   end
 
+  it "returns true when passed ?l if the argument is a symlink" do
+    Kernel.test(?l, @file).should == false
+  end
+
   ruby_version_is "1.9" do
     it "calls #to_path on second argument when passed ?f and a filename" do
       p = mock('path')
diff --git 
a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs 
b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
index a807764..4eaaaf7 100644
--- a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
+++ b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs
@@ -1162,7 +1162,9 @@ namespace IronRuby.Builtins {
                 case 'k':
                     return 
RubyFileOps.RubyStatOps.IsSticky(RubyFileOps.RubyStatOps.Create(context, 
file1));
 
-                case 'l': throw new NotImplementedException();
+                case 'l':
+                    return 
RubyFileOps.RubyStatOps.IsSymLink(RubyFileOps.RubyStatOps.Create(context, 
file1));
+
                 case 'M': throw new NotImplementedException();
                 case 'O': throw new NotImplementedException();
                 case 'o': throw new NotImplementedException();
-- 
1.7.0.2.msysgit.0

_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core

Reply via email to