/home/.cpanm/work/1759492321.34808/Alien-Build-2.84/t
use 5.008004; use Test2::V0 -no_srand => 1; use Test::Alien::Build; use Alien::Build::Plugin::Fetch::HTTPTiny; use lib 't/lib'; use Path::Tiny qw( path ); use MyTest::HTTP; use MyTest::CaptureNote; use Alien::Build::Util qw( _dump ); use JSON::PP qw( decode_json ); subtest 'updates requires' => sub { my $plugin = Alien::Build::Plugin::Fetch::HTTPTiny->new( url => 'http://example.test/' ); my $build = alienfile filename => 'corpus/blank/alienfile'; my $meta = $build->meta; $plugin->init($meta); is( $build->requires('share'), hash { field 'HTTP::Tiny' => '0.044'; field 'URI' => '0'; field 'Net::SSLeay' => DNE(); field 'IO::Socket::SSL' => DNE(); etc; }, ); note _dump($build->requires('share')); }; subtest 'updates requires ssl' => sub { my $plugin = Alien::Build::Plugin::Fetch::HTTPTiny->new( url => 'https://example.test/' ); my $build = alienfile filename => 'corpus/blank/alienfile'; my $meta = $build->meta; $plugin->init($meta); is( $build->requires('share'), hash { field 'HTTP::Tiny' => '0.044'; field 'URI' => '0'; field 'Net::SSLeay' => T(); field 'IO::Socket::SSL' => T(); etc; }, ); note _dump($build->requires('share')); }; subtest 'use start_url' => sub { subtest 'sets start_url' => sub { my $build = alienfile_ok q{ use alienfile; plugin 'Fetch::HTTPTiny' => 'http://foo.bar.baz'; }; is $build->meta_prop->{start_url}, 'http://foo.bar.baz'; }; subtest 'uses start_url' => sub { my $mock = mock 'Alien::Build::Plugin::Fetch::HTTPTiny'; my $plugin; $mock->after(init => sub { my($self, $meta) = @_; $plugin = $self; }); my $build = alienfile_ok q{ use alienfile; meta->prop->{start_url} = 'http://baz.bar.foo'; plugin 'Fetch::HTTPTiny'; }; is $plugin->url, 'http://baz.bar.foo'; }; }; subtest 'fetch' => sub { skip_all 'test requires HTTP::Tiny' unless eval { require HTTP::Tiny; HTTP::Tiny->VERSION(0.044) }; my $url = http_url; skip_all http_error unless $url; my($proto) = $url =~ /^([a-z]+):/; # tests usually in CI only against a real http server on localhost local $ENV{ALIEN_DOWNLOAD_RULE} = $ENV{ALIEN_DOWNLOAD_RULE}; $ENV{ALIEN_DOWNLOAD_RULE} = 'warn' if $proto ne 'https'; like $proto, qr/^https?$/, "protocol is either http or https (url = $url)"; my $plugin = Alien::Build::Plugin::Fetch::HTTPTiny->new( url => "$url" ); my $build = alienfile filename => 'corpus/blank/alienfile'; my $meta = $build->meta; $plugin->init($meta); eval { $build->load_requires('share') }; skip_all 'test requires HTTP::Tiny' if $@; subtest 'listing' => sub { my $res = $build->fetch; is( $res, hash { field type => 'html'; field base => match qr!^http:/!; field content => match qr!foo-1\.00\.tar\.gz!; field protocol => $proto; }, ); }; subtest 'file' => sub { my $furl = URI->new_abs("foo-1.00.tar.gz", $url); note "url = $furl"; my $expected_content = path('corpus/dist/foo-1.00.tar.gz')->slurp_raw; my $res = $build->fetch("$furl"); is( $res, hash { field type => 'file'; field filename => 'foo-1.00.tar.gz'; field content => $expected_content; field protocol => $proto; }, ); }; subtest 'not found' => sub { my $furl = URI->new_abs("bogus.tar.gz", $url); note "url = $furl"; capture_note { is dies { $build->fetch("$furl") }, match qr/^error fetching http:/; }; }; subtest 'headers' => sub { my $furl = URI->new_abs("test1/foo.txt", $url); note "url = $furl"; my $res = capture_note { $build->fetch("$furl", http_headers => [ Foo => 'Bar1', Foo => 'Bar2', Baz => 1 ]) }; my $content; is $content = decode_json($res->{content}), hash { field headers => hash { field Foo => 'Bar1, Bar2'; field Baz => 1; etc; }; etc; }, ; note _dump($content); }; }; done_testing;
.
Edit
..
Edit
00_diag.t
Edit
01_use.t
Edit
alien_base.t
Edit
alien_base__system_installed.t
Edit
alien_base_pkgconfig.t
Edit
alien_base_wrapper.t
Edit
alien_build.t
Edit
alien_build__download_rule.t
Edit
alien_build_commandsequence.t
Edit
alien_build_commandsequence__cd.t
Edit
alien_build_interpolate.t
Edit
alien_build_interpolate_default.t
Edit
alien_build_log.t
Edit
alien_build_log_abbreviate.t
Edit
alien_build_log_default.t
Edit
alien_build_meta.t
Edit
alien_build_mm.t
Edit
alien_build_plugin.t
Edit
alien_build_plugin_build_autoconf.t
Edit
alien_build_plugin_build_cmake.t
Edit
alien_build_plugin_build_copy.t
Edit
alien_build_plugin_build_make.t
Edit
alien_build_plugin_build_msys.t
Edit
alien_build_plugin_build_searchdep.t
Edit
alien_build_plugin_core_cleaninstall.t
Edit
alien_build_plugin_core_download.t
Edit
alien_build_plugin_core_ffi.t
Edit
alien_build_plugin_core_gather.t
Edit
alien_build_plugin_core_legacy.t
Edit
alien_build_plugin_core_override.t
Edit
alien_build_plugin_core_setup.t
Edit
alien_build_plugin_core_tail.t
Edit
alien_build_plugin_decode_dirlisting.t
Edit
alien_build_plugin_decode_dirlistingftpcopy.t
Edit
alien_build_plugin_decode_html.t
Edit
alien_build_plugin_decode_mojo.t
Edit
alien_build_plugin_digest_negotiate.t
Edit
alien_build_plugin_digest_sha.t
Edit
alien_build_plugin_digest_shapp.t
Edit
alien_build_plugin_download_negotiate.t
Edit
alien_build_plugin_extract_archivetar.t
Edit
alien_build_plugin_extract_archivezip.t
Edit
alien_build_plugin_extract_commandline.t
Edit
alien_build_plugin_extract_commandline__tar_can.t
Edit
alien_build_plugin_extract_directory.t
Edit
alien_build_plugin_extract_file.t
Edit
alien_build_plugin_extract_negotiate.t
Edit
alien_build_plugin_fetch_curlcommand.t
Edit
alien_build_plugin_fetch_httptiny.t
Edit
alien_build_plugin_fetch_local.t
Edit
alien_build_plugin_fetch_localdir.t
Edit
alien_build_plugin_fetch_lwp.t
Edit
alien_build_plugin_fetch_netftp.t
Edit
alien_build_plugin_fetch_wget.t
Edit
alien_build_plugin_gather_isolatedynamic.t
Edit
alien_build_plugin_meta.t
Edit
alien_build_plugin_pkgconfig_commandline.t
Edit
alien_build_plugin_pkgconfig_libpkgconf.t
Edit
alien_build_plugin_pkgconfig_makestatic.t
Edit
alien_build_plugin_pkgconfig_negotiate.t
Edit
alien_build_plugin_pkgconfig_negotiate__pick.t
Edit
alien_build_plugin_pkgconfig_pp.t
Edit
alien_build_plugin_prefer_badversion.t
Edit
alien_build_plugin_prefer_goodversion.t
Edit
alien_build_plugin_prefer_sortversions.t
Edit
alien_build_plugin_probe_cbuilder.t
Edit
alien_build_plugin_probe_cbuilder__live.t
Edit
alien_build_plugin_probe_commandline.t
Edit
alien_build_plugin_probe_vcpkg.t
Edit
alien_build_plugin_test_mock.t
Edit
alien_build_rc.t
Edit
alien_build_rc__prepostload.t
Edit
alien_build_rc__prepostload_plugin.t
Edit
alien_build_temp.t
Edit
alien_build_tempdir.t
Edit
alien_build_util.t
Edit
alien_build_version_basic.t
Edit
alien_role.t
Edit
alien_util.t
Edit
alienfile.t
Edit
bin
Edit
lib
Edit
test_alien.t
Edit
test_alien_build.t
Edit
test_alien_cancompile.t
Edit
test_alien_canplatypus.t
Edit
test_alien_diag.t
Edit
test_alien_run.t
Edit
test_alien_synthetic.t
Edit