Skip to content

Commit 6742974

Browse files
committed
Created spec test to check and remove duplicated lines between the default OS mapping and each OS-specific mappings.
Fix #484 Signed-off-by: Ong, Yen Yee <[email protected]> Signed-off-by: Chiam, Jia Ying <[email protected]> Signed-off-by: yeetengangIntel <[email protected]> Signed-off-by: Wei Shan <[email protected]> Signed-off-by: Seow, Wen Jie <[email protected]>
1 parent a5432dd commit 6742974

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

spec/os_mapping_spec.rb

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
require 'spec_helper'
2+
3+
LKP_SRC_PATH = "#{LKP_SRC}/distro/adaptation".freeze
4+
5+
def find_duplicated_lines(default_subdir, os_specific_subdir)
6+
default_mapping_lines = read_mappings(default_subdir)
7+
os_specific_mapping_lines = read_mappings(os_specific_subdir)
8+
9+
default_mapping_lines & os_specific_mapping_lines
10+
end
11+
12+
def read_mappings(file_path)
13+
File.readlines(file_path).map(&:strip).reject(&:empty?)
14+
end
15+
16+
def generate_mappings(lkp_src)
17+
mappings = Hash.new { |h, k| h[k] = { default: nil, os_specific: [] } }
18+
19+
# Iterate through each subdirectory in the lkp_src directory
20+
Dir.entries(lkp_src).each do |subdir|
21+
next if ['.', '..', 'README.md'].include?(subdir)
22+
23+
subdir_path = File.join(lkp_src, subdir)
24+
next unless File.directory?(subdir_path)
25+
26+
# Get a list of files in the subdirectory
27+
files = Dir.entries(subdir_path).select do |f|
28+
file_path = File.join(subdir_path, f)
29+
File.file?(file_path) && !File.symlink?(file_path)
30+
end
31+
32+
# Populate the mappings hash with files from the subdirectory
33+
files.each do |file|
34+
base_name = subdir
35+
if file.include?('default')
36+
mappings[base_name][:default] = File.join(subdir_path, file)
37+
else
38+
mappings[base_name][:os_specific] << File.join(subdir_path, file)
39+
end
40+
end
41+
end
42+
43+
mappings
44+
end
45+
46+
describe 'package mapping uniqueness' do
47+
grouped_files = generate_mappings(LKP_SRC_PATH)
48+
49+
grouped_files.each_value do |files|
50+
default_file = files[:default]
51+
os_specific_files = files[:os_specific]
52+
53+
it "does not have duplicated lines between #{default_file} and any OS-specific files" do
54+
skip 'No default file found for this group.' if default_file.nil?
55+
skip "No OS-specific files to compare with default file: #{default_file}." if os_specific_files.nil? || os_specific_files.empty?
56+
57+
os_specific_files.each do |os_specific_file|
58+
duplicated_lines = find_duplicated_lines(default_file, os_specific_file)
59+
expect(duplicated_lines).to be_empty, "Duplicated lines found between files:\nDefault: #{default_file}\nOS-specific: #{os_specific_file}\nDuplicated lines:\n#{duplicated_lines.join("\n")}"
60+
end
61+
end
62+
63+
it 'does not have duplicated lines among all OS-specific files' do
64+
skip 'No OS-specific files to compare among themselves.' if os_specific_files.nil? || os_specific_files.empty? || os_specific_files.size < 2
65+
66+
all_os_specific_lines = os_specific_files.map { |file| read_mappings(file) }
67+
duplicated_lines = all_os_specific_lines.reduce(&:&)
68+
expect(duplicated_lines).to be_empty, "Duplicated lines found among OS-specific files in folder #{File.dirname(os_specific_files.first)}:\nDuplicated lines:\n#{duplicated_lines.join("\n")}"
69+
end
70+
end
71+
end

0 commit comments

Comments
 (0)