create rspec environment for build tests

This commit is contained in:
Josh Holtrop 2013-06-30 15:23:00 -04:00
parent a62d2605bf
commit 4152cfd1ea
7 changed files with 61 additions and 0 deletions

1
.gitignore vendored
View File

@ -15,3 +15,4 @@ spec/reports
test/tmp test/tmp
test/version_tmp test/version_tmp
tmp tmp
build_tests_run

2
.rspec Normal file
View File

@ -0,0 +1,2 @@
--color
--require spec_helper

View File

@ -1,5 +1,15 @@
require "bundler"
begin
Bundler.setup(:default, :development)
rescue Bundler::BundlerError => e
raise LoadError.new("Unable to setup Bundler; you might need to `bundle install`: #{e.message}")
end
require "bundler/gem_tasks" require "bundler/gem_tasks"
require "rspec/core/rake_task" require "rspec/core/rake_task"
require "rake/clean"
CLEAN.include 'build_tests_run'
RSpec::Core::RakeTask.new(:spec) RSpec::Core::RakeTask.new(:spec)

View File

@ -0,0 +1,3 @@
Rscons::Environment.new do |env|
env.Program('simple', Dir['*.c'])
end

View File

@ -0,0 +1,6 @@
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("This is a simple C program\n");
}

View File

@ -16,4 +16,13 @@ Gem::Specification.new do |gem|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) } gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
gem.test_files = gem.files.grep(%r{^(test|spec|features)/}) gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
gem.require_paths = ["lib"] gem.require_paths = ["lib"]
gem.add_development_dependency "rspec-core"
gem.add_development_dependency "rspec-mocks"
gem.add_development_dependency "rspec-expectations"
gem.add_development_dependency "rspec"
gem.add_development_dependency "rake"
gem.add_development_dependency "simplecov"
gem.add_development_dependency "json"
gem.add_development_dependency 'rdoc'
end end

30
spec/build_tests_spec.rb Normal file
View File

@ -0,0 +1,30 @@
require 'fileutils'
describe Rscons do
before(:all) do
FileUtils.rm_rf('build_tests_run')
FileUtils.cp_r('build_tests', 'build_tests_run')
@owd = Dir.pwd
end
after(:each) do
Dir.chdir(@owd)
end
def test_dir(build_test_directory)
Dir.chdir("build_tests_run/#{build_test_directory}")
if File.exists?('build.rb')
system('ruby build.rb')
end
end
###########################################################################
# Tests
###########################################################################
it 'builds a C program with one source file' do
test_dir('simple')
File.exists?('simple.o').should be_true
`./simple`.should == "This is a simple C program\n"
end
end