| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 | 
require '../auto/generate_module.rb'require 'fileutils'def touch_src(file)  FileUtils.touch "sandbox/src/#{file}"enddef touch_test(file)  FileUtils.touch "sandbox/test/#{file}"enddef create_src_with_known_content(file)  File.open("sandbox/src/#{file}", "w") {|f| f.write("the original #{file}")}enddef create_test_with_known_content(file)  File.open("sandbox/test/#{file}", "w") {|f| f.write("the original #{file}")}enddef expect_src_content_didnt_change(file)  expect(File.read("sandbox/src/#{file}")).to eq("the original #{file}")enddef expect_test_content_didnt_change(file)  expect(File.read("sandbox/test/#{file}")).to eq("the original #{file}")enddef expect_src_file_to_exist(file)  expect(File.exist?("sandbox/src/#{file}")).to be trueenddef expect_test_file_to_exist(file)  expect(File.exist?("sandbox/test/#{file}")).to be trueenddescribe "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  endend
 |