You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
158 lines
4.3 KiB
158 lines
4.3 KiB
|
|
require '../auto/generate_module.rb'
|
|
require 'fileutils'
|
|
|
|
def touch_src(file)
|
|
FileUtils.touch "sandbox/src/#{file}"
|
|
end
|
|
|
|
def touch_test(file)
|
|
FileUtils.touch "sandbox/test/#{file}"
|
|
end
|
|
|
|
def create_src_with_known_content(file)
|
|
File.open("sandbox/src/#{file}", "w") {|f| f.write("the original #{file}")}
|
|
end
|
|
|
|
def create_test_with_known_content(file)
|
|
File.open("sandbox/test/#{file}", "w") {|f| f.write("the original #{file}")}
|
|
end
|
|
|
|
def expect_src_content_didnt_change(file)
|
|
expect(File.read("sandbox/src/#{file}")).to eq("the original #{file}")
|
|
end
|
|
|
|
def expect_test_content_didnt_change(file)
|
|
expect(File.read("sandbox/test/#{file}")).to eq("the original #{file}")
|
|
end
|
|
|
|
def expect_src_file_to_exist(file)
|
|
expect(File.exist?("sandbox/src/#{file}")).to be true
|
|
end
|
|
|
|
def expect_test_file_to_exist(file)
|
|
expect(File.exist?("sandbox/test/#{file}")).to be true
|
|
end
|
|
|
|
describe "UnityModuleGenerator" do
|
|
|
|
before do
|
|
# clean sandbox and setup our "project" folders
|
|
FileUtils.rm_rf "sandbox"
|
|
FileUtils.mkdir_p "sandbox"
|
|
FileUtils.mkdir_p "sandbox/src"
|
|
FileUtils.mkdir_p "sandbox/test"
|
|
|
|
@options = {
|
|
:path_src => "sandbox/src",
|
|
:path_tst => "sandbox/test",
|
|
}
|
|
end
|
|
|
|
context "with src pattern" do
|
|
before do
|
|
@options[:pattern] = "src"
|
|
end
|
|
|
|
it "fails when all files already exist" do
|
|
# create an existing triad of files
|
|
touch_src "meh.c"
|
|
touch_src "meh.h"
|
|
touch_test "Testmeh.c"
|
|
expect {
|
|
UnityModuleGenerator.new(@options).generate("meh")
|
|
}.to raise_error("ERROR: File meh already exists. Exiting.")
|
|
end
|
|
|
|
it "creates the test file if the source and header files exist" do
|
|
# Create the existing files.
|
|
touch_src "meh.c"
|
|
touch_src "meh.h"
|
|
|
|
UnityModuleGenerator.new(@options).generate("meh")
|
|
|
|
expect_test_file_to_exist "Testmeh.c"
|
|
end
|
|
|
|
it "does not alter existing files" do
|
|
# Create some files with known content.
|
|
create_src_with_known_content "meh.c"
|
|
create_src_with_known_content "meh.h"
|
|
|
|
UnityModuleGenerator.new(@options).generate("meh")
|
|
|
|
expect_src_content_didnt_change "meh.c"
|
|
expect_src_content_didnt_change "meh.c"
|
|
end
|
|
|
|
it "does not alter existing test files" do
|
|
# Create some files with known content.
|
|
create_test_with_known_content "Testmeh.c"
|
|
|
|
UnityModuleGenerator.new(@options).generate("meh")
|
|
|
|
expect_test_content_didnt_change "Testmeh.c"
|
|
end
|
|
|
|
end
|
|
|
|
context "with mch pattern" do
|
|
before do
|
|
@options[:pattern] = "mch"
|
|
end
|
|
|
|
it "fails when all files exist" do
|
|
touch_src "meh_model.c"
|
|
touch_src "meh_conductor.c"
|
|
touch_src "meh_hardware.c"
|
|
touch_src "meh_model.h"
|
|
touch_src "meh_conductor.h"
|
|
touch_src "meh_hardware.h"
|
|
touch_test "Testmeh_model.c"
|
|
touch_test "Testmeh_conductor.c"
|
|
touch_test "Testmeh_hardware.c"
|
|
expect {
|
|
UnityModuleGenerator.new(@options).generate("meh")
|
|
}.to raise_error("ERROR: File meh_model already exists. Exiting.")
|
|
end
|
|
|
|
it "creates files that don't exist" do
|
|
touch_src "meh_model.c"
|
|
touch_src "meh_conductor.c"
|
|
touch_src "meh_hardware.c"
|
|
touch_src "meh_model.h"
|
|
touch_src "meh_conductor.h"
|
|
|
|
UnityModuleGenerator.new(@options).generate("meh")
|
|
|
|
expect_src_file_to_exist "meh_hardware.h"
|
|
expect_test_file_to_exist "Testmeh_model.c"
|
|
expect_test_file_to_exist "Testmeh_conductor.c"
|
|
expect_test_file_to_exist "Testmeh_hardware.c"
|
|
end
|
|
|
|
it "does not alter existing source files" do
|
|
create_src_with_known_content "meh_model.c"
|
|
create_src_with_known_content "meh_model.c"
|
|
create_src_with_known_content "meh_model.c"
|
|
create_src_with_known_content "meh_model.h"
|
|
create_src_with_known_content "meh_model.c"
|
|
|
|
UnityModuleGenerator.new(@options).generate("meh")
|
|
|
|
expect_src_content_didnt_change "meh_model.c"
|
|
expect_src_content_didnt_change "meh_model.c"
|
|
expect_src_content_didnt_change "meh_model.c"
|
|
expect_src_content_didnt_change "meh_model.c"
|
|
end
|
|
|
|
it "does not alter existing test files" do
|
|
create_test_with_known_content "Testmeh_model.c"
|
|
|
|
UnityModuleGenerator.new(@options).generate("meh")
|
|
|
|
expect_test_content_didnt_change "Testmeh_model.c"
|
|
end
|
|
|
|
end
|
|
end
|
|
|