| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with this |
| # work for additional information regarding copyright ownership. The ASF |
| # licenses this file to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| # License for the specific language governing permissions and limitations under |
| # the License. |
| |
| |
| require File.join(File.dirname(__FILE__), '../spec_helpers') |
| |
| describe Buildr::Scala::Specs do |
| |
| before(:each) do |
| # Force Scala 2.7.7 for specs; don't want to rely on SCALA_HOME |
| Buildr.settings.build['scala.version'] = "2.7.7" |
| end |
| |
| it 'should be the default when tests in src/spec/scala' do |
| write 'src/spec/scala/com/example/MySpecs.scala', <<-SCALA |
| package com.example |
| object MySpecs extends org.specs.Specification { |
| "it" should { |
| "add" in { |
| val sum = 1 + 1 |
| sum mustEqual 2 |
| } |
| } |
| } |
| SCALA |
| define 'foo' |
| project('foo').test.framework.should eql(:specs) |
| end |
| |
| it 'should include Specs dependencies' do |
| define('foo') { test.using(:specs) } |
| project('foo').test.compile.dependencies.should include(*artifacts(Scala::Specs.dependencies)) |
| project('foo').test.dependencies.should include(*artifacts(Scala::Specs.dependencies)) |
| end |
| |
| it 'should include ScalaCheck dependencies' do |
| define('foo') { test.using(:specs) } |
| project('foo').test.compile.dependencies.should include(*artifacts(Scala::Check.dependencies)) |
| project('foo').test.dependencies.should include(*artifacts(Scala::Check.dependencies)) |
| end |
| |
| it 'should include JMock dependencies' do |
| define('foo') { test.using(:scalatest) } |
| project('foo').test.compile.dependencies.should include(*artifacts(JMock.dependencies)) |
| project('foo').test.dependencies.should include(*artifacts(JMock.dependencies)) |
| end |
| |
| it 'should include public objects extending org.specs.Specification' do |
| write 'src/spec/scala/com/example/MySpecs.scala', <<-SCALA |
| package com.example |
| object MySpecs extends org.specs.Specification { |
| "it" should { |
| "add" in { |
| val sum = 1 + 1 |
| sum mustEqual 2 |
| } |
| } |
| } |
| SCALA |
| define('foo').test.invoke |
| project('foo').test.tests.should include('com.example.MySpecs') |
| end |
| |
| it 'should include public objects extending org.specs.Specification even with companion classes' do |
| write 'src/spec/scala/com/example/MySpecs.scala', <<-SCALA |
| package com.example |
| object MySpecs extends org.specs.Specification { |
| "it" should { |
| "add" in { |
| val sum = 1 + 1 |
| sum mustEqual 2 |
| } |
| } |
| } |
| class MySpecs extends org.specs.runner.JUnit4(MySpecs) |
| SCALA |
| define('foo').test.invoke |
| project('foo').test.tests.should include('com.example.MySpecs') |
| end |
| |
| it 'should pass when spec passes' do |
| write 'src/spec/scala/PassingSpecs.scala', <<-SCALA |
| object PassingSpecs extends org.specs.Specification { |
| "it" should { |
| "add" in { |
| val sum = 1 + 1 |
| sum mustEqual 2 |
| } |
| } |
| } |
| SCALA |
| lambda { define('foo').test.invoke }.should_not raise_error |
| end |
| |
| it 'should fail when spec fails' do |
| write 'src/spec/scala/StringSpecs.scala', <<-SCALA |
| import org.specs._ |
| import org.specs.runner._ |
| |
| object StringSpecs extends Specification { |
| "empty string" should { |
| "have a zero length" in { |
| ("".length) mustEqual(1) |
| } |
| } |
| } |
| SCALA |
| define('foo') |
| project('foo').test.invoke rescue |
| project('foo').test.failed_tests.should include('StringSpecs') |
| end |
| end |