diff --git a/spec/rscons/builders/cfile_spec.rb b/spec/rscons/builders/cfile_spec.rb index 829f8c9..5605ca4 100644 --- a/spec/rscons/builders/cfile_spec.rb +++ b/spec/rscons/builders/cfile_spec.rb @@ -15,6 +15,11 @@ module Rscons subject.run("lexer.cc", ["parser.ll"], :cache, env, {}) end + it "supports overriding construction variables" do + subject.should_receive(:standard_build).with("LEX lexer.c", "lexer.c", ["hi", "parser.l"], ["parser.l"], env, :cache) + subject.run("lexer.c", ["parser.l"], :cache, env, "LEX_CMD" => ["hi", "${_SOURCES}"]) + end + it "raises an error when an unknown source file is specified" do expect {subject.run("file.c", ["foo.bar"], :cache, env, {})}.to raise_error /Unknown source file .foo.bar. for CFile builder/ end diff --git a/spec/rscons/builders/disassemble_spec.rb b/spec/rscons/builders/disassemble_spec.rb new file mode 100644 index 0000000..de7c350 --- /dev/null +++ b/spec/rscons/builders/disassemble_spec.rb @@ -0,0 +1,17 @@ +module Rscons + module Builders + describe Disassemble do + let(:env) {Environment.new} + subject {Disassemble.new} + + it "supports overriding DISASM_CMD construction variable" do + cache = "cache" + cache.stub(:up_to_date?) { false } + cache.stub(:mkdir_p) { } + cache.stub(:register_build) { } + env.should_receive(:execute).with("Disassemble a_file.txt", ["my_disasm", "a_file.exe"], anything).and_return(true) + subject.run("a_file.txt", ["a_file.exe"], cache, env, "DISASM_CMD" => ["my_disasm", "${_SOURCES}"]) + end + end + end +end diff --git a/spec/rscons/builders/library_spec.rb b/spec/rscons/builders/library_spec.rb new file mode 100644 index 0000000..8fe4e35 --- /dev/null +++ b/spec/rscons/builders/library_spec.rb @@ -0,0 +1,18 @@ +module Rscons + module Builders + describe Library do + let(:env) {Environment.new} + subject {Library.new} + + it "supports overriding AR construction variable" do + subject.should_receive(:standard_build).with("AR prog.a", "prog.a", ["sp-ar", "rcs", "prog.a", "prog.o"], ["prog.o"], env, :cache) + subject.run("prog.a", ["prog.o"], :cache, env, "AR" => "sp-ar") + end + + it "supports overriding ARCMD construction variable" do + subject.should_receive(:standard_build).with("AR prog.a", "prog.a", ["special", "AR!", "prog.o"], ["prog.o"], env, :cache) + subject.run("prog.a", ["prog.o"], :cache, env, "ARCMD" => ["special", "AR!", "${_SOURCES}"]) + end + end + end +end diff --git a/spec/rscons/builders/object_spec.rb b/spec/rscons/builders/object_spec.rb new file mode 100644 index 0000000..789d8e3 --- /dev/null +++ b/spec/rscons/builders/object_spec.rb @@ -0,0 +1,23 @@ +module Rscons + module Builders + describe Object do + let(:env) {Environment.new} + subject {Object.new} + + it "supports overriding CCCMD construction variable" do + cache = "cache" + cache.stub(:up_to_date?) { false } + cache.stub(:mkdir_p) { } + cache.stub(:register_build) { } + FileUtils.stub(:rm_f) { } + File.stub(:exists?) { false } + env.should_receive(:execute).with("CC mod.o", ["llc", "mod.c"]).and_return(true) + subject.run("mod.o", ["mod.c"], cache, env, "CCCMD" => ["llc", "${_SOURCES}"]) + end + + it "raises an error when given a source file with an unknown suffix" do + expect { subject.run("mod.o", ["mod.xyz"], :cache, env, {}) }.to raise_error /unknown input file type: "mod.xyz"/ + end + end + end +end diff --git a/spec/rscons/builders/preprocess_spec.rb b/spec/rscons/builders/preprocess_spec.rb new file mode 100644 index 0000000..2a47213 --- /dev/null +++ b/spec/rscons/builders/preprocess_spec.rb @@ -0,0 +1,18 @@ +module Rscons + module Builders + describe Preprocess do + let(:env) {Environment.new} + subject {Preprocess.new} + + it "supports overriding CC construction variable" do + subject.should_receive(:standard_build).with("Preprocess module.pp", "module.pp", ["my_cpp", "-E", "-o", "module.pp", "module.c"], ["module.c"], env, :cache) + subject.run("module.pp", ["module.c"], :cache, env, "CC" => "my_cpp") + end + + it "supports overriding CPP_CMD construction variable" do + subject.should_receive(:standard_build).with("Preprocess module.pp", "module.pp", ["my_cpp", "module.c"], ["module.c"], env, :cache) + subject.run("module.pp", ["module.c"], :cache, env, "CPP_CMD" => ["my_cpp", "${_SOURCES}"]) + end + end + end +end diff --git a/spec/rscons/builders/program_spec.rb b/spec/rscons/builders/program_spec.rb new file mode 100644 index 0000000..d81b067 --- /dev/null +++ b/spec/rscons/builders/program_spec.rb @@ -0,0 +1,18 @@ +module Rscons + module Builders + describe Program do + let(:env) {Environment.new} + subject {Program.new} + + it "supports overriding CC construction variable" do + subject.should_receive(:standard_build).with("LD prog", "prog", ["sp-c++", "-o", "prog", "prog.o"], ["prog.o"], env, :cache) + subject.run("prog", ["prog.o"], :cache, env, "CC" => "sp-c++") + end + + it "supports overriding LDCMD construction variable" do + subject.should_receive(:standard_build).with("LD prog", "prog", ["special", "LD!", "prog.o"], ["prog.o"], env, :cache) + subject.run("prog", ["prog.o"], :cache, env, "LDCMD" => ["special", "LD!", "${_SOURCES}"]) + end + end + end +end