code-preloader/spec/filelist_spec.cr

105 lines
2.2 KiB
Crystal
Raw Permalink Normal View History

2024-01-02 11:32:00 +00:00
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