Files
perl-Test-HexString/perl-Test-HexString.spec

93 lines
3.2 KiB
RPMSpec
Raw Permalink Normal View History

#
# spec file for package perl-Test-HexString
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define cpan_name Test-HexString
Name: perl-Test-HexString
Version: 0.30.0
Release: 0
# 0.03 -> normalize -> 0.30.0
%define cpan_version 0.03
License: Artistic-1.0 OR GPL-1.0-or-later
Summary: Test binary strings with hex dump diagnostics
URL: https://metacpan.org/release/%{cpan_name}
Source0: https://cpan.metacpan.org/authors/id/P/PE/PEVANS/%{cpan_name}-%{cpan_version}.tar.gz
2025-08-12 18:17:44 +02:00
Source100: README.md
BuildArch: noarch
BuildRequires: perl
BuildRequires: perl-macros
BuildRequires: perl(Module::Build)
Provides: perl(Test::HexString) = %{version}
%undefine __perllib_provides
%{perl_requires}
%description
This testing module provides a single function, 'is_hexstr()', which
asserts that the given string matches what was expected. When the strings
match (i.e. compare equal using the 'eq' operator), the behaviour is
identical to the usual 'is()' function provided by 'Test::More'.
When the strings are different, a hex dump is produced as diagnostic,
rather than the string values being printed raw. This may be beneficial if
the string contains largely binary data, such as may be produced by binary
file or network protocol modules.
To print the hex dump when it fails, each string is broken into 16 byte
chunks. The first pair of chunks that fail to match are then printed, in
both hexadecimal and character form, in a message in the following format:
# Failed test at -e line 1.
# at bytes 0-0xf (0-15)
# got: | 61 20 6c 6f 6e 67 20 73 74 72 69 6e 67 20 68 65 |a long string he|
# exp: | 61 20 6c 6f 6e 67 20 53 74 72 69 6e 67 20 68 65 |a long String he|
# Looks like you failed 1 test of 1.
Only bytes in the range '0x20-0x7e' are printed as literal characters. Any
other byte is rendered as '.':
# Failed test at -e line 1.
# at bytes 0-0xf (0-15)
# got: | 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f |................|
# exp: | 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 |................|
# Looks like you failed 1 test of 1.
Only the first differing line is printed; because otherwise it may result
in a long output because of misaligned bytes.
If STDOUT is a terminal, then different bytes are printed in bold for
visibility.
%prep
%autosetup -n %{cpan_name}-%{cpan_version}
%build
perl Build.PL --installdirs=vendor
./Build build --flags=%{?_smp_mflags}
%check
./Build test
%install
./Build install --destdir=%{buildroot} --create_packlist=0
%perl_gen_filelist
%files -f %{name}.files
%doc Changes README
%license LICENSE
%changelog