require "spec" require "colorize" hint = "" def check_top_level_imports(directory) describe "./#{directory}/default.nix" do it "imports all modules in ./#{directory}/" do all_modules = Dir.children(directory) all_modules.delete("default.nix") modules = File.read("./#{directory}/default.nix") all_modules.each do |current_module| hint = "Missing ./#{current_module} import in ./#{directory}/default.nix." modules.includes?("./#{current_module}").should be_true end hint = "" end it "only imports modules that exist in ./#{directory}/" do all_modules = Dir.children(directory) all_modules.delete("default.nix") File.each_line("./#{directory}/default.nix") do |line| if line.includes? "./" imported_file = line.lstrip(' ').lstrip("./") hint = "./#{imported_file} was imported but doesn't exist in directory ./#{directory}/." all_modules.includes?(imported_file).should be_true end end hint = "" end end end Spec.after_suite do hint.empty? || puts "✗ #{hint}".colorize(:yellow) end