Code Review: rubyspec4

This is a large diff due to updating Rubyspec, MSpec and Ironruby-tags.

tfpt review “/shelveset:rubyspec4;REDMOND\jdeville”
Comment :
Re-syncing MERLIN_EXTERNAL mspec to the head of MSpec to pick up new
tests. Re-baselining to get new tests included.

The diff has only 94 bytes

Using the tf diff tool, I see that a lot of files are identical except
for changes in newline characters (maybe \n changed to \r\n)? From my
random sampling I hardly found any files that have actually changed.
Maybe it would help to have a guideline about the preferred newline
character.

Also, regarding the baselining, how are we planning to track bugs and
their related regression tests? If we are closing a bug on rubyforge and
want to make sure that regression tests exist for that scenario, it
would be good to have a link between the disabled test and the bug
itself. In the IronPython testcode this is done by adding a disabled
decorator to the test with the bug id. Here maybe a tag can have one
more field to indicate the bug id? This is a change to the mspec runner
itself and I’m not asking for it to be done with this shelveset but it’s
something to be discussed about.

Grr. I was afraid that is why Curt had no changes. I think that is Git
doing auto line endings. I’ll need to research that to figure out how to
handle it.

Regarding tracking bugs, the MSpec tag format has a place for comments.
I took them out in the past when we had issues, but we can try again.
The format is tag(comment):string

JD

Right now, the only reason I keep our fork of MSpec is to not force
everyone to change again. We are running MSpec completely unmodified. I
actually run it out of the official repo. We have some changes to
Rubyspec that I haven’t pushed to the official repo due to lack of time.
After we push those we may want to follow your idea. Some of our changes
are to guards like you mention. Right now, most of the changes I make to
RubySpecs are made to the official version then pulled into our repo, so
I’m trying to head in that direction already.

As for tags, I’ve already asked Brian (and he has agreed) to tag
releases, so we can have people sync to tags already.

The tags are a powerful concept, and eventually it’d be nice to tag
failing tests with a unique tag, so you could run just the tests that
demonstrate a bug. It’s fully possible, we just aren’t set up for it
yet. I’d like to get the Rakefile cleaned up and more flexible to allow
for that.

JD

It is possible that the many files that are only different in newlines
is
actually my fault. I think that Jim integrated a load of my changes to
the
rubyspecs last month but I was having newbie issues with Git and my
setup
changed a load of the line endings. I have now got over this issue
after
some mucking about with git config.

I have subsequently had these changes incorporated into the official
rubyspec repository on github. If the only files are ones that I broke
then
you can just bin those commits and use the versions from the official
github
repository instead.

Is there much benefit in keeping a separate fork of mspec and rubyspec
now
anyway? Ironruby now seems to be able to run mspec unmodified and the
guys
who manage these projects seem happy to give responsible people commit
rights to the official repositories.
You could apply tags to versions of rubyspec or mspec to baseline
versions
that are good for ironruby.
In addition there are a number of guards available in mspec that allow
rubyspecs to be filtered based on ruby implementation and version. This
is
how the jruby and rubinius projects use rubyspec.

In terms of tracking regression tests for a specific ironruby bug in
rubyforge. How about you just list the descriptions of the examples
(i.e.
“it” blocks) that fail for the bug. It would be fairly easy to check
that
these now run ok. In many ways the tagged rubyspec examples are a
direct
representation of the bugs that are still to be solved.

Pete

Srivatsn: do you see any problems, or can I go ahead with this.

Peter: judging by the diff in Tomas’s latest Code review, there might be
something wrong with the script we use to generate diff’s. That would
explain the size.

JD

Go ahead with it but do publish whatever you find out about git’s line
ending handling. I think my git config is screwed up as well in that
respect.

The key to fixing your line endings is to use “git-config core.autocrlf
true” and “git-config core.safecrlf true”.
I believe this is now the default for msysgit at least as of
Git-preview20080301.exe.
What this does is convert line endings to crlf on the way out of git
(i.e.
into your working files) and back to lf only on the way back in.
That way our windows apps don’t complain (or sneakily add the cr back
in)
and the git repository stays clean for unix users.
Pete

Thanks, I’ll check on those two configs. Can they be set on the main
repo? Or only on local copies?

JD

Sure thing

JD

Dude, you’re such a git newbee =)

It changes the files in your .git folder, and those can be pushed back
up.

I get this when running rake compile. Just checked out from rubyforge,
and I’ve previously successfully built many other revisions of IR on
this box.

Should I just roll back to a previous version, or am I doing something
wrong?

(in c:/development/ironruby)
Read in 17 resources from
“c:\development\ironruby\src\microsoft.scripting\math\MathResources.resx”
Writing resource file… Done.
warning CS1685: The predefined type
‘System.Runtime.CompilerServices.ExtensionAttribute’ is defined in
multiple assemblies in the global alias; using definition from
‘c:\development\ironruby\src\microsoft.scripting\utils\extension.cs’
warning CS1685: The predefined type
‘System.Runtime.CompilerServices.ExtensionAttribute’ is defined in
multiple assemblies in the global alias; using definition from
‘c:\development\ironruby\src\ironruby\extension.cs’
warning CS1685: The predefined type
‘System.Runtime.CompilerServices.ExtensionAttribute’ is defined in
multiple assemblies in the global alias; using definition from
‘c:\development\ironruby\build\debug\Microsoft.Scripting.Core.dll’
initializers.generated.cs(6813,17): error CS0123: No overload for ‘Add’
matches delegate
‘System.Func<Microsoft.Scripting.Runtime.CodeContext,IronRuby.StandardLibrary.BigDecimal.BigDecimal,object,object,object>’
c:\development\ironruby\build\debug\Microsoft.Scripting.Core.dll:
(Location of symbol related to previous error)
bigdecimal\BigDecimalOps.cs(352,30): (Location of symbol related to
previous error)
initializers.generated.cs(6822,17): error CS0123: No overload for
‘Coerce’ matches delegate
‘System.Func<Microsoft.Scripting.Runtime.CodeContext,IronRuby.StandardLibrary.BigDecimal.BigDecimal,double,IronRuby.Builtins.RubyArray>’
c:\development\ironruby\build\debug\Microsoft.Scripting.Core.dll:
(Location of symbol related to previous error)
bigdecimal\BigDecimalOps.cs(268,38): (Location of symbol related to
previous error)
bigdecimal\BigDecimalOps.cs(272,38): (Location of symbol related to
previous error)
bigdecimal\BigDecimalOps.cs(276,38): (Location of symbol related to
previous error)
bigdecimal\BigDecimalOps.cs(280,38): (Location of symbol related to
previous error)
initializers.generated.cs(6876,17): error CS0123: No overload for
‘Inspect’ matches delegate
‘System.Func<Microsoft.Scripting.Runtime.CodeContext,IronRuby.StandardLibrary.BigDecimal.BigDecimal,IronRuby.Builtins.MutableString>’
c:\development\ironruby\build\debug\Microsoft.Scripting.Core.dll:
(Location of symbol related to previous error)
bigdecimal\BigDecimalOps.cs(257,42): (Location of symbol related to
previous error)
initializers.generated.cs(6897,17): error CS0123: No overload for
‘Multiply’ matches delegate
‘System.Func<Microsoft.Scripting.Runtime.CodeContext,IronRuby.StandardLibrary.BigDecimal.BigDecimal,object,object,object>’
c:\development\ironruby\build\debug\Microsoft.Scripting.Core.dll:
(Location of symbol related to previous error)
bigdecimal\BigDecimalOps.cs(438,30): (Location of symbol related to
previous error)
initializers.generated.cs(6953,17): error CS0123: No overload for
‘Subtract’ matches delegate
‘System.Func<Microsoft.Scripting.Runtime.CodeContext,IronRuby.StandardLibrary.BigDecimal.BigDecimal,object,object,object>’
c:\development\ironruby\build\debug\Microsoft.Scripting.Core.dll:
(Location of symbol related to previous error)
bigdecimal\BigDecimalOps.cs(395,30): (Location of symbol related to
previous error)
initializers.generated.cs(6972,17): error CS0123: No overload for
‘ToString’ matches delegate
‘System.Func<Microsoft.Scripting.Runtime.CodeContext,IronRuby.StandardLibrary.BigDecimal.BigDecimal,object,IronRuby.Builtins.MutableString>’
c:\development\ironruby\build\debug\Microsoft.Scripting.Core.dll:
(Location of symbol related to previous error)
bigdecimal\BigDecimalOps.cs(228,42): (Location of symbol related to
previous error)
bigdecimal\BigDecimalOps.cs(232,42): (Location of symbol related to
previous error)
bigdecimal\BigDecimalOps.cs(236,42): (Location of symbol related to
previous error)
c:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll: (Location of
symbol related to previous error)
initializers.generated.cs(6998,17): error CS0123: No overload for
‘InducedFrom’ matches delegate
‘System.Func<Microsoft.Scripting.Runtime.CodeContext,IronRuby.Builtins.RubyClass,object,IronRuby.StandardLibrary.BigDecimal.BigDecimal>’
c:\development\ironruby\build\debug\Microsoft.Scripting.Core.dll:
(Location of symbol related to previous error)
bigdecimal\BigDecimalOps.cs(178,34): (Location of symbol related to
previous error)
bigdecimal\BigDecimalOps.cs(182,34): (Location of symbol related to
previous error)
bigdecimal\BigDecimalOps.cs(186,34): (Location of symbol related to
previous error)
bigdecimal\BigDecimalOps.cs(190,34): (Location of symbol related to
previous error)
initializers.generated.cs(7003,17): error CS0123: No overload for
‘Limit’ matches delegate
‘System.Func<Microsoft.Scripting.Runtime.CodeContext,IronRuby.Builtins.RubyClass,object,int>’
c:\development\ironruby\build\debug\Microsoft.Scripting.Core.dll:
(Location of symbol related to previous error)
bigdecimal\BigDecimalOps.cs(158,27): (Location of symbol related to
previous error)
bigdecimal\BigDecimalOps.cs(164,27): (Location of symbol related to
previous error)


Ironruby-core mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core

I agree, Anders doesn’t allow the argument to be so convincing.
However, I generally go 2.0 > 3.0 > Ruby - Ruby still better… :slight_smile:

On Tue, Sep 30, 2008 at 4:36 PM, John L. (IRONRUBY)

I agree, Anders doesn’t allow the argument to be so convincing.
However, I generally go 2.0 > 3.0 > Ruby - Ruby still better… :slight_smile:

Sorry about the pendantry, but I think you wanted that to say
“2.0 < 3.0 < Ruby”

:slight_smile:

-Curt

Loved the Borat photo and the Duck!

But to be fair, your IsCool function could have been written:

public bool IsCool() { return m_name.Contains(“0”); }

And the new C# 3.0 Property stuff would have let you write:

public string Name { get; set; }

I used to use these kinds of arguments for C# 2.0, but Anders keeps on
making it harder to continue doing so :slight_smile:

Thanks,
-John

From: [email protected]
[mailto:[email protected]] On Behalf Of Orion E.
Sent: Monday, September 29, 2008 3:52 PM
To: [email protected]
Subject: [Ironruby-core] Presentation

I recently gave a presentation about IronRuby to my local .NET user
group.

As none of them knew anything about ruby it’s about 2/3’rds introduction
to ruby and 1/3’rd talking about IronRuby and the DLR specifically.

As part of this I also built a small project which is basically “IRB in
your winforms app”.
I found it to be a really effective way of showing off :slight_smile:

I’ve posted links on my blog for the members of the local DNUG to have a
look, but I figured other IronRubyists might be interested, so if you
are,

Link to blog entry showing presentation
slideshttp://orionedwards.blogspot.com/2008/09/ironruby-presentation.html

Link to blog entry explaining interactive console
thinghttp://orionedwards.blogspot.com/2008/09/embedded-ironruby-interactive-console.html

Cheers, and thanks to all the IronRuby team for all their hard work :slight_smile:

hehehe! I actually meant how the code can progresses and improves as
you move along the line :slight_smile:

2.0 (not great) --> 3.0 (better) --> Ruby (Much better!)

Make sense?

On Tue, Sep 30, 2008 at 10:37 AM, Curt H.
[email protected]wrote:

I agree, Anders doesn’t allow the argument to be so convincing.
However, I generally go 2.0 > 3.0 > Ruby - Ruby still better… :slight_smile:

Sorry about the pendantry, but I think you wanted that to say
“2.0 < 3.0 < Ruby”

I hope that was what he was trying to say. Otherwise, he could be the IT
Director at my old job.

Thanks everyone for the responses :slight_smile: