mirror of
https://github.com/ThrowTheSwitch/Unity.git
synced 2025-07-15 00:52:46 +08:00

This resolves #219. When generating a new module, if all the files to generate already exist then it fails as before. If some of the files already exist, then the files that need to be created are created. Any existing files are not changed. Also added a bunch of tests for this feature via rspec. Run them from the test folder with `rake spec`.
159 lines
4.3 KiB
Ruby
159 lines
4.3 KiB
Ruby
|
|
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
|