I forked rhino.etl from hibernating rhinos in an attempt to target the 4.0 framework and introduce dynamics into the mix. I thought it would be a fun exercise :) I finally have the projects and build script targeting 4.0 but I have three failing tests, which were not failing prior to the 4.0 update.
Rhino.Etl.Tests.Dsl.AggregationFixture.CanPerformAggregationFromDsl
[FAIL]
Assert.Equal()
Failure
Position: First difference is at position 0
Expected: milk, sugar,
coffee
Actual: System.String[]
Stack Trace:
c:\Users\jasonmeckley\Documents\Visual Studio
2010\Projects\rhino-etl\Rhino.Etl.Tests\Dsl\AggregationFixture.cs(33,0)
at Rhino.Etl.Tests.Dsl.AggregationFixture.CanPerformAggregationFromDsl()
Rhino.Etl.Tests.Dsl.JoinFixture.CanWriteJoinsToDatabase
[FAIL]
Assert.Equal()
Failure
Position: First difference is at position 18
Expected: ayende
rahien is: admin, janitor, employee, customer
Actual: ayende rahien is:
System.String[]
Stack Trace:
c:\Users\jasonmeckley\Documents\Visual Studio
2010\Projects\rhino-etl\Rhino.Etl.Tests\Dsl\JoinFixture.cs(41,0) at Rhino.Etl.Tests.Dsl.JoinFixture.CanWriteJoinsToDatabase()
Rhino.Etl.Tests.Dsl.WireEtlProcessEventsFixture.CheckIfOnRowProcessedEventWasWired
[FAIL]
Assert.Equal()
Failure
Position: First difference is at position 0
Expected: chocolate,
sugar, coffee
Actual: System.String[]
Stack Trace:
c:\Users\jasonmeckley\Documents\Visual Studio
2010\Projects\rhino-etl\Rhino.Etl.Tests\Dsl\WireEtlProcessEventsFixture.cs(33,0)
at Rhino.Etl.Tests.Dsl.WireEtlProcessEventsFixture.CheckIfOnRowProcessedEventWasWired()
Rhino.Etl.Tests.LoadTest.LoadTestJoinsFixture.CanDoLargeJoinsefficently
[SKIP]
It depends too much of what the machine is doing and how powerful it
is
85 total, 3 failed, 1 skipped, took 155.514
seconds
default.ps1:Error: Failed to execute tests
The problem appears to be with boo & converting an enumerable to an array and preforming a string.Join().
for example
[Aggregate.boo line 12]
aggregate.names.ToArray(string)
I thought this may be a problem with Linq and another ToArray<string>() method somewhere so I replaced string.Join(", ", accumulate.names.ToArray(string)) with accumulate.names. This got me one step closer but the test still fails with
Test 'Rhino.Etl.Tests.Dsl.AggregationFixture.CanPerformAggregationFromDsl' failed: Assert.Equal() Failure
Position: First difference is at position 0
Expected: milk, sugar, coffee
Actual: [milk, sugar, coffee]
Dsl\AggregationFixture.cs(33,0): at Rhino.Etl.Tests.Dsl.AggregationFixture.CanPerformAggregationFromDsl()
I assume the brackets are coming from Boo and how it overrides ToString() for enumerables.
Ideally the tests are sound and failing tests means breaking changes. What should I do in this situation?
a. updates the boo scripts so the tests pass
b. update boo and/or Rhino.Dsl to properly handle ToArray(string) and leave the tests alone