119 lines
4.2 KiB
Perl
119 lines
4.2 KiB
Perl
use base "installedtest";
|
|
use strict;
|
|
use testapi;
|
|
use utils;
|
|
|
|
# This test checks that the descriptions in /etc/os-release file are correct and that they
|
|
# match the current version.
|
|
sub strip_marks {
|
|
# Remove the quotation marks from the string:
|
|
my $string = shift;
|
|
$string =~ tr/"//d;
|
|
return $string;
|
|
}
|
|
|
|
sub run {
|
|
# First, let us define some variables needed to run the program.
|
|
my $self = shift;
|
|
# The file to be checked
|
|
my $filename = '/etc/os-release';
|
|
|
|
# Read the content of the file to compare. Let us parse the file
|
|
# and create a hash with those values, so that we can easily access
|
|
# them and assert them.
|
|
my $infile = script_output "cat /etc/os-release";
|
|
my @infile = split /\n/, $infile;
|
|
my %content = ();
|
|
foreach (@infile) {
|
|
chomp $_;
|
|
my ($key, $value) = split /=/, $_;
|
|
$content{$key} = $value;
|
|
}
|
|
|
|
# Now, we have all the data ready and we can start testing, first let us get
|
|
# correct variables to compare the system data with.
|
|
# First, we know the basic stuff
|
|
my $id = get_var("DISTRI"); # Should be "rocky"
|
|
|
|
my $name = ucfirst($id);
|
|
# $NAME is "Rocky Linux" not just "Rocky"
|
|
my $fullname = $name . " Linux";
|
|
|
|
my $version_id = get_var("VERSION"); # Should be the version number.
|
|
my $ver_major = substr($version_id, 0, index($version_id, q/./));
|
|
my $ver_minor = substr($version_id, index($version_id, q/./), length($version_id));
|
|
my $target = lc($ver_major);
|
|
if ($ver_major == '9' || '8') {
|
|
$target = lc($version_id);
|
|
}
|
|
|
|
my $reltag = script_output 'rpm -q rocky-release --qf "%{RELEASE}\n"';
|
|
my $relver = substr($reltag, 0, rindex($reltag, q/./));
|
|
my $eltag = substr($reltag, rindex($reltag, q/./) + 1, length($reltag));
|
|
|
|
my $code_name = get_code_name();
|
|
my $version = "$version_id ($code_name)";
|
|
my $platform_id = "platform:$eltag";
|
|
my $pretty = "$fullname $version_id ($code_name)";
|
|
|
|
#Now. we can start testing the real values from the installed system.
|
|
my @fails = ();
|
|
my $failref = \@fails;
|
|
|
|
# Test for name
|
|
my $strip = strip_marks($content{'NAME'});
|
|
rec_log "NAME should be $fullname and is $strip", $strip eq $fullname, $failref;
|
|
|
|
# Test for version.
|
|
$strip = strip_marks($content{'VERSION'});
|
|
rec_log "VERSION should be $version and is $strip", $strip eq $version, $failref;
|
|
|
|
# Test for version_id
|
|
$strip = strip_marks($content{'VERSION_ID'});
|
|
rec_log "VERSION_ID should be $version_id and is $strip", $strip eq $version_id, $failref;
|
|
|
|
# Test for platform_id
|
|
$strip = strip_marks($content{'PLATFORM_ID'});
|
|
rec_log "PLATFORM_ID should be $platform_id and is $strip", $strip eq $platform_id, $failref;
|
|
|
|
# Test for pretty name
|
|
$strip = strip_marks($content{'PRETTY_NAME'});
|
|
rec_log "PRETTY_NAME should be $pretty and is $strip", $strip eq $pretty, $failref;
|
|
|
|
# Test for Rocky Support Product
|
|
$strip = strip_marks($content{'ROCKY_SUPPORT_PRODUCT'});
|
|
if ($ver_major == '9' || '8') {
|
|
$fullname = qq/$fullname $ver_major/;
|
|
$fullname =~ s/ /-/g;
|
|
}
|
|
rec_log "ROCKY_SUPPORT_PRODUCT should be $fullname and is $strip", $strip eq $fullname, $failref;
|
|
|
|
# Test for Rocky Support Product Version
|
|
$strip = strip_marks($content{ROCKY_SUPPORT_PRODUCT_VERSION});
|
|
rec_log "ROCKY_SUPPORT_PRODUCT_VERSION should be $target and is $strip", $strip eq $target, $failref;
|
|
|
|
# VERSION_ID should be 8.4 and is "8.4"
|
|
# PLATFORM_ID should be platform: and is platform:el8
|
|
# ROCKY_SUPPORT_PRODUCT should be Rocky and is Rocky Linux
|
|
# ROCKY_SUPPORT_PRODUCT_VERSION should be and is 8 at /var/lib/openqa/share/tests/rocky/tests/os_release.pm line 95.
|
|
|
|
# Check for fails, count them, collect their messages and die if something was found.
|
|
my $failcount = scalar @fails;
|
|
script_run "echo \"There were $failcount failures in total.\" >> /tmp/os-release.log";
|
|
upload_logs "/tmp/os-release.log", failok => 1;
|
|
|
|
my $failmessages = "";
|
|
foreach my $fail (@fails) {
|
|
$failmessages .= "\n" . $fail;
|
|
}
|
|
die $failmessages if ($failcount > 0);
|
|
}
|
|
|
|
sub test_flags {
|
|
return {always_rollback => 1};
|
|
}
|
|
|
|
1;
|
|
|
|
# vim: set sw=4 et:
|