104 lines
2.2 KiB
Crystal
104 lines
2.2 KiB
Crystal
|
|
require "./spec_helper"
|
|
require "../src/cli"
|
|
|
|
alias FileList = CodePreloader::FileList
|
|
|
|
describe CodePreloader::FileList do
|
|
|
|
it "can be created empty" do
|
|
fl = FileList.new
|
|
end
|
|
|
|
it "can be created with a list of directories" do
|
|
fl = FileList.new(["src/", "spec/"])
|
|
end
|
|
|
|
it "verifies that initial directories exists" do
|
|
expect_raises(FileList::NotADirectory) do
|
|
fl = FileList.new(["Alice", "Bob"])
|
|
end
|
|
end
|
|
|
|
it "can append extra sources" do
|
|
fl = FileList.new()
|
|
fl.add "spec/"
|
|
end
|
|
|
|
it "verifies that appended directories exists" do
|
|
fl = FileList.new()
|
|
expect_raises(FileList::NotADirectory) do
|
|
fl.add "Alice"
|
|
end
|
|
end
|
|
|
|
it "accept adding reject filters" do
|
|
fl = FileList.new()
|
|
fl.reject { |item| !!(item =~ /name/) }
|
|
end
|
|
|
|
it "accept adding select filters" do
|
|
fl = FileList.new()
|
|
fl.select { |item| !!(item =~ /name/) }
|
|
end
|
|
|
|
it "enumerates the files" do
|
|
fl = FileList.new()
|
|
fl.add("spec/filelist_data")
|
|
|
|
files = Dir["spec/filelist_data/*"]
|
|
fl.each do |file|
|
|
files.should contain(file)
|
|
files = files - [file]
|
|
end
|
|
files.size.should eq(0)
|
|
end
|
|
|
|
it "doesn't enumerate duplicate files" do
|
|
fl = FileList.new()
|
|
fl.add("spec/filelist_data")
|
|
fl.add("spec/filelist_data")
|
|
|
|
files = [] of String
|
|
fl.each do |file|
|
|
files << file
|
|
end
|
|
files.size.should eq(files.uniq.size)
|
|
end
|
|
|
|
it "doesn't enumerate files filtered out by select" do
|
|
fl = FileList.new()
|
|
fl.add("spec/filelist_data")
|
|
fl.select { |path| !!(path =~ /\.c$/) }
|
|
|
|
files = Dir["spec/filelist_data/*.c"]
|
|
fl.each do |file|
|
|
files.should contain(file)
|
|
files = files - [file]
|
|
end
|
|
files.size.should eq(0)
|
|
end
|
|
|
|
it "doesn't enumerate files filtered out by reject" do
|
|
fl = FileList.new()
|
|
fl.add("spec/filelist_data")
|
|
fl.reject { |path| !!(path =~ /\.txt$/) }
|
|
|
|
files = Dir["spec/filelist_data/*.c"]
|
|
fl.each do |file|
|
|
files.should contain(file)
|
|
files = files - [file]
|
|
end
|
|
files.size.should eq(0)
|
|
|
|
end
|
|
|
|
it "export the files as an array" do
|
|
end
|
|
|
|
it "doesn't export duplicate files" do
|
|
end
|
|
|
|
it "doesn't export filtered out files" do
|
|
end
|
|
end
|