Skip to content

Commit 1e96bd0

Browse files
yenyeeongyeetengangIntel
authored andcommitted
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]>
1 parent 029845e commit 1e96bd0

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

spec/os_mapping_spec.rb

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
require 'spec_helper'
2+
3+
LKP_SRC_PATH = "#{LKP_SRC}/distro/adaptation".freeze
4+
5+
def find_duplicated_lines(default_mapping_path, os_specific_mapping_path)
6+
default_mapping_file = File.readlines(default_mapping_path).map(&:strip)
7+
os_specific_mapping_file = File.readlines(os_specific_mapping_path).map(&:strip)
8+
9+
duplicated_lines = default_mapping_file & os_specific_mapping_file
10+
duplicated_lines
11+
end
12+
13+
def read_mappings(file_path)
14+
File.readlines(file_path).map(&:strip).reject(&:empty?)
15+
end
16+
17+
def generate_mappings(lkp_src)
18+
files = Dir.entries(lkp_src).select do |f|
19+
file_path = File.join(lkp_src, f)
20+
File.file?(file_path) && !File.symlink?(file_path) && f != 'README.md'
21+
end
22+
23+
mappings = {}
24+
25+
files.each do |file|
26+
base_name = file.split('-').first
27+
mappings[base_name] ||= []
28+
if file == base_name
29+
mappings[base_name].unshift(File.join(lkp_src, file))
30+
else
31+
mappings[base_name] << File.join(lkp_src, file)
32+
end
33+
end
34+
35+
mappings
36+
end
37+
38+
def find_common_packages(grouped_files)
39+
# Collect all unique package mappings across all files
40+
all_packages = grouped_files.values.flatten.map { |file| read_mappings(file) }.flatten.uniq
41+
common_packages = []
42+
43+
# Check if each package appears in at least one file in every group
44+
all_packages.each do |package|
45+
if grouped_files.all? { |_, files| files.any? { |file| read_mappings(file).include?(package) } }
46+
common_packages << package
47+
end
48+
end
49+
50+
common_packages
51+
end
52+
53+
describe 'package mapping uniqueness' do
54+
grouped_files = generate_mappings(LKP_SRC_PATH)
55+
56+
grouped_files.each do |base_name, files|
57+
default_file = files.first
58+
os_specific_files = files[1..]
59+
60+
os_specific_files.each do |os_specific_file|
61+
it "does not have duplicated lines between #{default_file} and #{os_specific_file}" do
62+
duplicated_lines = find_duplicated_lines(default_file, os_specific_file)
63+
expect(duplicated_lines).to be_empty, "Duplicated lines found between files:\nDefault: #{default_file}\nOS-specific: #{os_specific_file}\nDuplicated lines: #{duplicated_lines.join("\n")}"
64+
end
65+
end
66+
end
67+
68+
it 'does not have any package mapping repeated in all groups' do
69+
common_packages = find_common_packages(grouped_files)
70+
expect(common_packages).to be_empty, "Common package mappings found in all groups: #{common_packages.join(', ')}"
71+
end
72+
end

0 commit comments

Comments
 (0)