diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7ebb0850..2604d6dc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -77,6 +77,7 @@ jobs: smalltalk: GemStone64-3.6.0 - os: windows-2019 smalltalk: GemStone64-3.6.5 + continue-on-error: ${{ matrix.os == 'macos-latest' && startsWith(matrix.smalltalk, 'GemStone64') }} runs-on: ${{ matrix.os }} name: ${{ matrix.smalltalk }} on ${{ matrix.os }} steps: diff --git a/repository/BaselineOfSmalltalkCI.package/BaselineOfSmalltalkCI.class/instance/setUpPharo5AndGreaterPackages..st b/repository/BaselineOfSmalltalkCI.package/BaselineOfSmalltalkCI.class/instance/setUpPharo5AndGreaterPackages..st index ec4da646..8936a1e1 100644 --- a/repository/BaselineOfSmalltalkCI.package/BaselineOfSmalltalkCI.class/instance/setUpPharo5AndGreaterPackages..st +++ b/repository/BaselineOfSmalltalkCI.package/BaselineOfSmalltalkCI.class/instance/setUpPharo5AndGreaterPackages..st @@ -2,7 +2,7 @@ baseline setUpPharo5AndGreaterPackages: spec spec - for: #(#'pharo5.x' #'pharo6.x' #'pharo7.x' #'pharo8.x' #'pharo9.x' #'pharo10.x' #'pharo11.x' #'pharo12.x', #'pharo13.x') + for: #(#'pharo5.x' #'pharo6.x' #'pharo7.x' #'pharo8.x' #'pharo9.x' #'pharo10.x' #'pharo11.x' #'pharo12.x' #'pharo13.x') do: [ spec package: 'SmalltalkCI-Core' with: [ spec includes: #('SmalltalkCI-Pharo-Core') ]; package: 'SmalltalkCI-Pharo-Core' with: [ spec requires: 'SmalltalkCI-Core' ]; diff --git a/repository/SmalltalkCI-Tests.package/SCITestReporterStdoutTest.class/class/failureFixture.st b/repository/SmalltalkCI-Tests.package/SCITestReporterStdoutTest.class/class/failureFixture.st index 38d337c9..5f665045 100644 --- a/repository/SmalltalkCI-Tests.package/SCITestReporterStdoutTest.class/class/failureFixture.st +++ b/repository/SmalltalkCI-Tests.package/SCITestReporterStdoutTest.class/class/failureFixture.st @@ -1,31 +1,35 @@ fixtures failureFixture - ^ #( '#################################################' - '# Stdout-testReportFailure #' - '# 8 Tests with 4 Failures and 1 Errors in 0.01s #' - '#################################################' + ^ #( + "The length of the separators and right padding depend on the time + the test suite took to execute, so we need to account for differences" + '#############################################*' + '# Stdout-testReportFailure *#' + '# 8 Tests with 4 Failures and 1 Errors in *s #' + '#############################################*' '' '(3 tests passed)' '' 'SCIExcludedTests' - ' ✓ #testDeprecation (0ms)' - ' ✓ #testShouldFail (1ms)' - ' ✓ #testShouldPass (0ms)' + ' ✓ #testDeprecation (*ms)' + ' ✓ #testShouldFail (*ms)' + ' ✓ #testShouldPass (*ms)' '#########################' '# 5 tests did not pass: #' '#########################' - '' ' ✗ #testAssertError (5ms)' - 'TestFailure: Got 3 instead of 4.' - ' ✗ #testError (1ms)' + '' ' ✗ #testAssertError (*ms)' + "Squeak and Pharo differ in the wording for the next line" + 'TestFailure: * 3 * 4.' + ' ✗ #testError (*ms)' 'Error: An error message.' - ' ✗ #testFailure (3ms)' + ' ✗ #testFailure (*ms)' 'TestFailure: A failure message.' - ' ✗ #testShouldPassUnexpectedly (0ms)' - 'TestFailure: Test passed unexpectedly ✗ #testThisIsAVeryLongMethodNameThat...playedCorrectlyInATravisLog (0ms)' + ' ✗ #testShouldPassUnexpectedly (*ms)' + 'TestFailure: Test passed unexpectedly ✗ #testThisIsAVeryLongMethodNameThat...playedCorrectlyInATravisLog (*ms)' 'TestFailure: Assertion failed' '###########' '# Summary #' - '###########' '' ' ✗ #testAssertError (5ms)' - ' ✗ #testError (1ms)' ' ✗ #testFailure (3ms)' - ' ✗ #testShouldPassUnexpectedly (0ms)' - ' ✗ #testThisIsAVeryLongMethodNameThatProbablyNeedsToBeContractedInOrderToBeDisplayedCorrectlyInATravisLog (0ms)' + '###########' '' ' ✗ #testAssertError (*ms)' + ' ✗ #testError (*ms)' ' ✗ #testFailure (*ms)' + ' ✗ #testShouldPassUnexpectedly (*ms)' + ' ✗ #testThisIsAVeryLongMethodNameThatProbablyNeedsToBeContractedInOrderToBeDisplayedCorrectlyInATravisLog (*ms)' 'smalltalkCI Deprecation Warnings' ' - SCIExcludedTests>>testDeprecation (This is just a test)' - ' Executed 8 Tests with 4 Failures and 1 Errors in 0.01s.' ) \ No newline at end of file + ' Executed 8 Tests with 4 Failures and 1 Errors in *s.' ) \ No newline at end of file diff --git a/repository/SmalltalkCI-Tests.package/SCITestReporterStdoutTest.class/class/successFixture.st b/repository/SmalltalkCI-Tests.package/SCITestReporterStdoutTest.class/class/successFixture.st index 5d07f9b3..60526ac2 100644 --- a/repository/SmalltalkCI-Tests.package/SCITestReporterStdoutTest.class/class/successFixture.st +++ b/repository/SmalltalkCI-Tests.package/SCITestReporterStdoutTest.class/class/successFixture.st @@ -1,14 +1,16 @@ fixtures successFixture - ^ #( '#################################################' - '# Stdout-testReportSuccess #' - '# 5 Tests with 0 Failures and 0 Errors in 0.01s #' - '#################################################' + ^ #( "The length of the separators and right padding depend on the time + the test suite took to execute, so we need to account for differences" + '#############################################*' + '# Stdout-testReportSuccess *#' + '# 5 Tests with 0 Failures and 0 Errors in *s #' + '#############################################*' '' '(5 tests passed)' '' 'SCIPassingTests' - ' ✓ #testAssert (0ms)' - ' ✓ #testAssertEquals (0ms)' - ' ✓ #testDeny (0ms)' - ' ✓ #testEmpty (0ms)' - ' ✓ #testRaise (0ms)' - ' Executed 5 Tests with 0 Failures and 0 Errors in 0.01s.' ) \ No newline at end of file + ' ✓ #testAssert (*ms)' + ' ✓ #testAssertEquals (*ms)' + ' ✓ #testDeny (*ms)' + ' ✓ #testEmpty (*ms)' + ' ✓ #testRaise (*ms)' + ' Executed 5 Tests with 0 Failures and 0 Errors in *s.' ) \ No newline at end of file diff --git a/repository/SmalltalkCI-Tests.package/SCITestReporterStdoutTest.class/instance/assert.matches..st b/repository/SmalltalkCI-Tests.package/SCITestReporterStdoutTest.class/instance/assert.matches..st index eb5f56ee..49ee9693 100644 --- a/repository/SmalltalkCI-Tests.package/SCITestReporterStdoutTest.class/instance/assert.matches..st +++ b/repository/SmalltalkCI-Tests.package/SCITestReporterStdoutTest.class/instance/assert.matches..st @@ -2,23 +2,17 @@ helpers assert: fixtures matches: aString "Assert that all lines in the fixture are present. The actual output may contain additional lines and the order may be different. - Note that we replace durations in both fixtures and input." + Note that the fixtures are patterns for #match:" - | cleanRegex cleanString cleanLines | - cleanRegex := ' [0-9]+\.[0-9]+s|\([0-9]+ms\)' asRegex. - cleanString := cleanRegex - copy: aString - replacingMatchesWith: '_duration_'. - - cleanLines := cleanString lines asOrderedCollection. + | cleanLines | + cleanLines := aString lines asOrderedCollection. fixtures do: [ :fixture | - | cleanFixture index | - cleanFixture := cleanRegex - copy: fixture - replacingMatchesWith: '_duration_'. - index := cleanLines indexOf: cleanFixture ifAbsent: [ + | matchedLine | + matchedLine := cleanLines + detect: [ :line | fixture match: line ] + ifNone: [ TestResult failure signal: - 'Cannot match: "' , cleanFixture , '" to: "' - , cleanString , '"' ]. + 'Cannot match: "' , fixture , '" to: "' + , aString , '"' ]. "We've seen this line, no need to look at it again" - cleanLines removeAt: index ] \ No newline at end of file + cleanLines remove: matchedLine ] \ No newline at end of file