Skip to content

Commit 4e4d9d0

Browse files
authored
Merge pull request #6556 from Martchus/deceptive-realpath-resolution
Avoid showing confusing data in the needles table
2 parents 720c194 + f35b0d9 commit 4e4d9d0

File tree

2 files changed

+2
-114
lines changed

2 files changed

+2
-114
lines changed

lib/OpenQA/WebAPI/Controller/Admin/Needle.pm

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -36,32 +36,13 @@ sub _translate_cond ($cond) {
3636
$translated ? [{$operator => $translated}, @additional_conds] : die "Unknown '$cond'";
3737
}
3838

39-
sub _prepare_data_table ($self, $n, $paths, $dir_rs, $needles_rs) {
39+
sub _prepare_data_table ($self, $n, $dir_rs, $needles_rs) {
4040
my $filename = $n->filename;
4141
my $hash = {
4242
id => $n->id,
4343
directory => $n->directory->name,
4444
filename => $filename,
4545
};
46-
my $dir_path = $n->directory->path;
47-
my $real_dir_id;
48-
49-
if ($paths->{$dir_path}) {
50-
$real_dir_id = $paths->{$dir_path}->{real_path_id} if $dir_path ne ($paths->{$dir_path}->{real_path} // '');
51-
}
52-
else {
53-
my $real_path_id = $n->directory->id;
54-
my $dir_real_path = realpath($dir_path);
55-
if ($dir_real_path && $dir_real_path ne $dir_path) {
56-
my $real_dir = $dir_rs->find({path => $dir_real_path});
57-
$real_dir_id = $real_path_id = $real_dir->id if $real_dir;
58-
}
59-
$paths->{$dir_path} = {
60-
real_path => $dir_real_path,
61-
real_path_id => $real_path_id,
62-
};
63-
}
64-
$n = ($real_dir_id ? $needles_rs->find({dir_id => $real_dir_id, filename => $filename}) : undef) // $n;
6546
return $self->populate_hash_with_needle_timestamps_and_urls($n, $hash);
6647
}
6748

@@ -98,8 +79,7 @@ sub ajax ($self) {
9879
prepare_data_function => sub {
9980
my $needle_dirs = $self->schema->resultset('NeedleDirs');
10081
my $needles = $self->schema->resultset('Needles');
101-
my %paths;
102-
[map { $self->_prepare_data_table($_, \%paths, $needle_dirs, $needles) } shift->all];
82+
[map { $self->_prepare_data_table($_, $needle_dirs, $needles) } shift->all];
10383
},
10484
);
10585
}

t/ui/21-admin-needles.t

Lines changed: 0 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -96,98 +96,6 @@ like(
9696
"redirected to right module too"
9797
);
9898

99-
subtest 'dereference symlink when displaying needles info' => sub {
100-
my $real_needle_dir = getcwd . '/t/data/openqa/share/tests/opensuse';
101-
my $symlink_needle_dir = getcwd . '/t/data/openqa/share/tests/test_symlink_dir';
102-
unlink($symlink_needle_dir);
103-
symlink($real_needle_dir, $symlink_needle_dir) or die "Cannot make symlink $!";
104-
my $needle_dir = $schema->resultset('NeedleDirs');
105-
my $symlink_needle_dir_id = $needle_dir->create(
106-
{
107-
path => $symlink_needle_dir . '/needles',
108-
name => '1symlink_needle_dir'
109-
})->id;
110-
my $real_needle_dir_id = $needle_dir->create(
111-
{
112-
path => $real_needle_dir . '/needles',
113-
name => 'real_needle_dir'
114-
})->id;
115-
my $needles = $schema->resultset('Needles');
116-
my @need_deleted_needles;
117-
my $symlink_needle = $needles->create(
118-
{
119-
dir_id => $symlink_needle_dir_id,
120-
filename => 'bootloader.json',
121-
last_seen_module_id => undef,
122-
last_seen_time => undef,
123-
last_matched_time => undef,
124-
last_matched_module_id => undef,
125-
file_present => 1,
126-
});
127-
push @need_deleted_needles, $symlink_needle;
128-
129-
my $default_show_needles_num = 10;
130-
for (my $i = 1; $i < $default_show_needles_num; $i++) {
131-
my $added_needle = $needles->create(
132-
{
133-
dir_id => $symlink_needle_dir_id,
134-
filename => $i . '.json',
135-
last_seen_module_id => undef,
136-
last_seen_time => undef,
137-
last_matched_time => undef,
138-
last_matched_module_id => undef,
139-
file_present => 1,
140-
});
141-
push @need_deleted_needles, $added_needle;
142-
}
143-
my $real_needle = $needles->create(
144-
{
145-
dir_id => $real_needle_dir_id,
146-
filename => 'bootloader.json',
147-
last_seen_module_id => 10,
148-
last_seen_time => time2str('%Y-%m-%d %H:%M:%S', time - 100000, 'UTC'),
149-
last_matched_module_id => 9,
150-
last_matched_time => time2str('%Y-%m-%d %H:%M:%S', time - 50000, 'UTC'),
151-
file_present => 1,
152-
t_created => time2str('%Y-%m-%d %H:%M:%S', time - 200000, 'UTC'),
153-
t_updated => time2str('%Y-%m-%d %H:%M:%S', time - 200000, 'UTC'),
154-
});
155-
push @need_deleted_needles, $real_needle;
156-
157-
my $real_needle_id = $real_needle->id;
158-
my $last_seen_module_id = $real_needle->last_seen_module_id;
159-
my $last_matched_module_id = $real_needle->last_matched_module_id;
160-
161-
$needles_table = goto_admin_needle_table;
162-
wait_for_data_table($needles_table, 10);
163-
my @needle_trs = $driver->find_elements('#needles tbody tr');
164-
my @symlink_needle_tds = $driver->find_child_elements($needle_trs[9], 'td', 'css');
165-
is((shift @symlink_needle_tds)->get_text(), '1symlink_needle_dir', 'symlink needle dir is displayed correctly');
166-
is((shift @symlink_needle_tds)->get_text(), 'bootloader.json', 'symlink needle file name is displayed correctly');
167-
my $last_used_td = shift @symlink_needle_tds;
168-
is($last_used_td->get_text(), 'a day ago', 'symlink needle last use is displayed correctly');
169-
is(
170-
$last_used_td->child('a')->get_attribute('title'),
171-
$real_needle->last_seen_time . '+0000Z',
172-
'symlink needle last use tooltip is displayed correctly'
173-
);
174-
like(
175-
$driver->find_child_element($last_used_td, 'a')->get_attribute('href'),
176-
qr/admin\/needles\/$last_seen_module_id\/$real_needle_id/,
177-
'symlink needle last used module link is correctly'
178-
);
179-
my $last_matched_td = shift @symlink_needle_tds;
180-
is($last_matched_td->get_text(), 'about 14 hours ago', 'symlink needle last match is displayed correctly');
181-
like(
182-
$driver->find_child_element($last_matched_td, 'a')->get_attribute('href'),
183-
qr/admin\/needles\/$last_matched_module_id\/$real_needle_id/,
184-
'symlink needle last used module link is correct'
185-
);
186-
187-
$_->delete for @need_deleted_needles;
188-
unlink($symlink_needle_dir);
189-
};
190-
19199
$needles_table = goto_admin_needle_table;
192100
wait_for_data_table($needles_table, 2);
193101

0 commit comments

Comments
 (0)