123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- 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
|