1+ # frozen_string_literal: true
2+
13require 'rails/diff/file_tracker'
24
35RSpec . describe FileTracker do
4- context "integration tests" do
5- let ( :temp_dir ) { Dir . mktmpdir }
6-
7- after do
8- FileUtils . remove_entry ( temp_dir )
9- end
10-
11- it "tracks newly created files" do
12- FileUtils . touch ( "#{ temp_dir } /file1.rb" )
13- file_tracker = FileTracker . new
14-
15- new_files = file_tracker . track_new_files ( temp_dir , [ ] ) do
16- FileUtils . touch ( "#{ temp_dir } /file2.rb" )
17- FileUtils . touch ( "#{ temp_dir } /file3.rb" )
18- end
19-
20- expect ( new_files ) . to contain_exactly ( "#{ temp_dir } /file2.rb" , "#{ temp_dir } /file3.rb" )
21- end
22-
23- it "excludes skipped files" do
24- FileUtils . touch ( "#{ temp_dir } /file1.rb" )
25- file_tracker = FileTracker . new
26-
27- new_files = file_tracker . track_new_files ( temp_dir , [ "file2.rb" ] ) do
28- FileUtils . touch ( "#{ temp_dir } /file2.rb" )
29- FileUtils . touch ( "#{ temp_dir } /file3.rb" )
30- end
31-
32- expect ( new_files ) . to contain_exactly ( "#{ temp_dir } /file3.rb" )
33- end
34-
35- it "ignores files in special directories" do
36- FileUtils . mkdir_p ( "#{ temp_dir } /.git" )
37- FileUtils . mkdir_p ( "#{ temp_dir } /tmp" )
38- FileUtils . mkdir_p ( "#{ temp_dir } /log" )
39- FileUtils . touch ( "#{ temp_dir } /file1.rb" )
40- file_tracker = FileTracker . new
41-
42- new_files = file_tracker . track_new_files ( temp_dir , [ ] ) do
43- FileUtils . touch ( "#{ temp_dir } /.git/config" )
44- FileUtils . touch ( "#{ temp_dir } /tmp/cache" )
45- FileUtils . touch ( "#{ temp_dir } /log/development.log" )
46- FileUtils . touch ( "#{ temp_dir } /file2.rb" )
47- end
48-
49- expect ( new_files ) . to contain_exactly ( "#{ temp_dir } /file2.rb" )
50- end
51-
52- it "handles nested directories" do
53- FileUtils . touch ( "#{ temp_dir } /file1.rb" )
54- file_tracker = FileTracker . new
55-
56- new_files = file_tracker . track_new_files ( temp_dir , [ ] ) do
57- FileUtils . mkdir_p ( "#{ temp_dir } /nested/dir" )
58- FileUtils . touch ( "#{ temp_dir } /nested/file2.rb" )
59- FileUtils . touch ( "#{ temp_dir } /nested/dir/file3.rb" )
60- end
61-
62- expect ( new_files ) . to contain_exactly ( "#{ temp_dir } /nested/file2.rb" , "#{ temp_dir } /nested/dir/file3.rb" )
63- end
6+ context 'integration tests' do
7+ let ( :temp_dir ) { Dir . mktmpdir }
8+
9+ after do
10+ FileUtils . remove_entry ( temp_dir )
11+ end
12+
13+ it 'tracks newly created files' do
14+ FileUtils . touch ( "#{ temp_dir } /file1.rb" )
15+ file_tracker = FileTracker . new
16+
17+ new_files = file_tracker . track_new_files ( temp_dir , [ ] ) do
18+ FileUtils . touch ( "#{ temp_dir } /file2.rb" )
19+ FileUtils . touch ( "#{ temp_dir } /file3.rb" )
20+ end
21+
22+ expect ( new_files ) . to contain_exactly ( "#{ temp_dir } /file2.rb" , "#{ temp_dir } /file3.rb" )
23+ end
24+
25+ it 'excludes skipped files' do
26+ FileUtils . touch ( "#{ temp_dir } /file1.rb" )
27+ file_tracker = FileTracker . new
28+
29+ new_files = file_tracker . track_new_files ( temp_dir , [ 'file2.rb' ] ) do
30+ FileUtils . touch ( "#{ temp_dir } /file2.rb" )
31+ FileUtils . touch ( "#{ temp_dir } /file3.rb" )
32+ end
33+
34+ expect ( new_files ) . to contain_exactly ( "#{ temp_dir } /file3.rb" )
35+ end
36+
37+ it 'handles files with --only option' do
38+ FileUtils . touch ( "#{ temp_dir } /file1.rb" )
39+ file_tracker = FileTracker . new
40+ new_files = file_tracker . track_new_files ( temp_dir , [ ] , [ 'file2.rb' ] ) do
41+ FileUtils . touch ( "#{ temp_dir } /file2.rb" )
42+ FileUtils . touch ( "#{ temp_dir } /file3.rb" )
43+ end
44+ expect ( new_files ) . to contain_exactly ( "#{ temp_dir } /file2.rb" )
45+ end
46+
47+ it 'ignores files in special directories' do
48+ FileUtils . mkdir_p ( "#{ temp_dir } /.git" )
49+ FileUtils . mkdir_p ( "#{ temp_dir } /tmp" )
50+ FileUtils . mkdir_p ( "#{ temp_dir } /log" )
51+ FileUtils . touch ( "#{ temp_dir } /file1.rb" )
52+ file_tracker = FileTracker . new
53+
54+ new_files = file_tracker . track_new_files ( temp_dir , [ ] ) do
55+ FileUtils . touch ( "#{ temp_dir } /.git/config" )
56+ FileUtils . touch ( "#{ temp_dir } /tmp/cache" )
57+ FileUtils . touch ( "#{ temp_dir } /log/development.log" )
58+ FileUtils . touch ( "#{ temp_dir } /file2.rb" )
59+ end
60+
61+ expect ( new_files ) . to contain_exactly ( "#{ temp_dir } /file2.rb" )
62+ end
63+
64+ it 'handles nested directories' do
65+ FileUtils . touch ( "#{ temp_dir } /file1.rb" )
66+ file_tracker = FileTracker . new
67+
68+ new_files = file_tracker . track_new_files ( temp_dir , [ ] ) do
69+ FileUtils . mkdir_p ( "#{ temp_dir } /nested/dir" )
70+ FileUtils . touch ( "#{ temp_dir } /nested/file2.rb" )
71+ FileUtils . touch ( "#{ temp_dir } /nested/dir/file3.rb" )
72+ end
73+
74+ expect ( new_files ) . to contain_exactly ( "#{ temp_dir } /nested/file2.rb" , "#{ temp_dir } /nested/dir/file3.rb" )
6475 end
65- end
76+ end
77+ end
0 commit comments