#!perl -w
# Copyright (C) 2020 all contributors
# License: AGPL-3.0+
use strict;
use Test::More;
use File::Temp qw(tempfile);
use PublicInbox::TestCommon;
use PublicInbox::Spawn qw(which);
use_ok 'PublicInbox::NDC_PP';
SKIP: {
my $nr = 2;
skip 'test is Linux-only', $nr if $^O ne 'linux';
my $dir = $ENV{BTRFS_TESTDIR};
skip 'BTRFS_TESTDIR not defined', $nr unless defined $dir;
skip 'chattr(1) not installed', $nr unless which('chattr');
my $lsattr = which('lsattr') or skip 'lsattr(1) not installed', $nr;
my ($fh, $name) = tempfile(DIR => $dir, UNLINK => 1);
BAIL_OUT "tempfile: $!" unless $fh && defined($name);
my $pp_sub = \&PublicInbox::NDC_PP::set_nodatacow;
$pp_sub->(fileno($fh));
my $res = xqx([$lsattr, $name]);
like($res, qr/C/, "`C' attribute set with pure Perl");
my $ic_sub = \&PublicInbox::Spawn::set_nodatacow;
$pp_sub == $ic_sub and
skip 'Inline::C or Linux kernel headers missing', 1;
($fh, $name) = tempfile(DIR => $dir, UNLINK => 1);
$ic_sub->(fileno($fh));
$res = xqx([$lsattr, $name]);
like($res, qr/C/, "`C' attribute set with Inline::C");
};
done_testing;