Test::Alien::Synthetic3pm
A mock alien object for testing
Usage
use Test2::V0;use Test::Alien;my $alien = synthetic {cflags => '-I/foo/bar/include',libs => '-L/foo/bar/lib -lbaz',};alien_ok $alien;done_testing;
Version
version 2.88
Overview
This class is used to model a synthetic Alien class that implements the minimum Alien::Base interface needed by Test::Alien.
It can be useful if you have a non-Alien::Base based Alien distribution that you need to test.
NOTE: The name of this class may move in the future, so do not refer to this class name directly. Instead create instances of this class using the Test::Alien#synthetic function.
Attributes
cflags
String containing the compiler flags
cflags_static
String containing the static compiler flags
libs
String containing the linker and library flags
libs_static
String containing the static linker and library flags
dynamic_libs
List reference containing the dynamic libraries.
bin_dir
Tool binary directory.
runtime_prop
Runtime properties.
Examples
Here is a complete example using Alien::Libarchive which is a non-Alien::Base based Alien distribution.
use strict;use warnings;use Test2::V0;use Test::Alien;use Alien::Libarchive;my $real = Alien::Libarchive->new;my $alien = synthetic {cflags => scalar $real->cflags,libs => scalar $real->libs,dynamic_libs => [$real->dlls],};alien_ok $alien;xs_ok do { local $/; <DATA> }, with_subtest {my($module) = @_;my $ptr = $module->archive_read_new;like $ptr, qr{^[0-9]+$};$module->archive_read_free($ptr);};ffi_ok { symbols => [qw( archive_read_new )] }, with_subtest {my($ffi) = @_;my $new = $ffi->function(archive_read_new => [] => 'opaque');my $free = $ffi->function(archive_read_close => ['opaque'] => 'void');my $ptr = $new->();like $ptr, qr{^[0-9]+$};$free->($ptr);};done_testing;__DATA__#include "EXTERN.h"#include "perl.h"#include "XSUB.h"#include <archive.h>MODULE = TA_MODULE PACKAGE = TA_MODULEvoid *archive_read_new(class);const char *class;CODE:RETVAL = (void*) archive_read_new();OUTPUT:RETVALvoid archive_read_free(class, ptr);const char *class;void *ptr;CODE:archive_read_free(ptr);
Copyright and license
This software is copyright (c) 2011-2022 by Graham Ollis.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
Releases
2 releases since Debian 13 (Trixie); the text changed 1 time.