• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2require '../auto/generate_module.rb'
3require 'fileutils'
4
5def touch_src(file)
6  FileUtils.touch "sandbox/src/#{file}"
7end
8
9def touch_test(file)
10  FileUtils.touch "sandbox/test/#{file}"
11end
12
13def create_src_with_known_content(file)
14  File.open("sandbox/src/#{file}", "w") {|f| f.write("the original #{file}")}
15end
16
17def create_test_with_known_content(file)
18  File.open("sandbox/test/#{file}", "w") {|f| f.write("the original #{file}")}
19end
20
21def expect_src_content_didnt_change(file)
22  expect(File.read("sandbox/src/#{file}")).to eq("the original #{file}")
23end
24
25def expect_test_content_didnt_change(file)
26  expect(File.read("sandbox/test/#{file}")).to eq("the original #{file}")
27end
28
29def expect_src_file_to_exist(file)
30  expect(File.exist?("sandbox/src/#{file}")).to be true
31end
32
33def expect_test_file_to_exist(file)
34  expect(File.exist?("sandbox/test/#{file}")).to be true
35end
36
37describe "UnityModuleGenerator" do
38
39  before do
40    # clean sandbox and setup our "project" folders
41    FileUtils.rm_rf "sandbox"
42    FileUtils.mkdir_p "sandbox"
43    FileUtils.mkdir_p "sandbox/src"
44    FileUtils.mkdir_p "sandbox/test"
45
46    @options = {
47      :path_src => "sandbox/src",
48      :path_tst => "sandbox/test",
49    }
50  end
51
52  context "with src pattern" do
53    before do
54      @options[:pattern] = "src"
55    end
56
57    it "fails when all files already exist" do
58      # create an existing triad of files
59      touch_src "meh.c"
60      touch_src "meh.h"
61      touch_test "Testmeh.c"
62      expect {
63        UnityModuleGenerator.new(@options).generate("meh")
64      }.to raise_error("ERROR: File meh already exists. Exiting.")
65    end
66
67    it "creates the test file if the source and header files exist" do
68      # Create the existing files.
69      touch_src "meh.c"
70      touch_src "meh.h"
71
72      UnityModuleGenerator.new(@options).generate("meh")
73
74      expect_test_file_to_exist "Testmeh.c"
75    end
76
77    it "does not alter existing files" do
78      # Create some files with known content.
79      create_src_with_known_content "meh.c"
80      create_src_with_known_content "meh.h"
81
82      UnityModuleGenerator.new(@options).generate("meh")
83
84      expect_src_content_didnt_change "meh.c"
85      expect_src_content_didnt_change "meh.c"
86    end
87
88    it "does not alter existing test files" do
89      # Create some files with known content.
90      create_test_with_known_content "Testmeh.c"
91
92      UnityModuleGenerator.new(@options).generate("meh")
93
94      expect_test_content_didnt_change "Testmeh.c"
95    end
96
97  end
98
99  context "with mch pattern" do
100    before do
101      @options[:pattern] = "mch"
102    end
103
104    it "fails when all files exist" do
105        touch_src "meh_model.c"
106        touch_src "meh_conductor.c"
107        touch_src "meh_hardware.c"
108        touch_src "meh_model.h"
109        touch_src "meh_conductor.h"
110        touch_src "meh_hardware.h"
111        touch_test "Testmeh_model.c"
112        touch_test "Testmeh_conductor.c"
113        touch_test "Testmeh_hardware.c"
114        expect {
115          UnityModuleGenerator.new(@options).generate("meh")
116        }.to raise_error("ERROR: File meh_model already exists. Exiting.")
117    end
118
119    it "creates files that don't exist" do
120      touch_src "meh_model.c"
121      touch_src "meh_conductor.c"
122      touch_src "meh_hardware.c"
123      touch_src "meh_model.h"
124      touch_src "meh_conductor.h"
125
126      UnityModuleGenerator.new(@options).generate("meh")
127
128      expect_src_file_to_exist "meh_hardware.h"
129      expect_test_file_to_exist "Testmeh_model.c"
130      expect_test_file_to_exist "Testmeh_conductor.c"
131      expect_test_file_to_exist "Testmeh_hardware.c"
132    end
133
134    it "does not alter existing source files" do
135      create_src_with_known_content "meh_model.c"
136      create_src_with_known_content "meh_model.c"
137      create_src_with_known_content "meh_model.c"
138      create_src_with_known_content "meh_model.h"
139      create_src_with_known_content "meh_model.c"
140
141      UnityModuleGenerator.new(@options).generate("meh")
142
143      expect_src_content_didnt_change "meh_model.c"
144      expect_src_content_didnt_change "meh_model.c"
145      expect_src_content_didnt_change "meh_model.c"
146      expect_src_content_didnt_change "meh_model.c"
147    end
148
149    it "does not alter existing test files" do
150      create_test_with_known_content "Testmeh_model.c"
151
152      UnityModuleGenerator.new(@options).generate("meh")
153
154      expect_test_content_didnt_change "Testmeh_model.c"
155    end
156
157  end
158end
159