package init

This commit is contained in:
root 2020-08-11 11:03:00 +08:00
parent 08152a4e4d
commit 521e7f660c
5 changed files with 154 additions and 0 deletions

59
basic_test.rb Normal file
View File

@ -0,0 +1,59 @@
require 'test/unit'
require 'rubygems'
require 'shadow'
require 'stringio'
class RubyShadowTest < Test::Unit::TestCase
STRUCT_METHODS = %w( sp_namp sp_pwdp sp_lstchg sp_min sp_max sp_warn sp_inact sp_expire sp_loginclass )
# --------------------------------------------------- test_smoke_test_getspent
def test_smoke_test_getspent
x = Shadow::Passwd.getspent
assert( x, "ensure you have permissions to check this (sudo?)" )
check_struct( x )
end
# ----------------------------------------------------- test_getspnam_for_user
def test_getspnam_for_user
user = `whoami`.strip
x = Shadow::Passwd.getspnam( user )
assert( x, "ensure you have permissions to check this (sudo?)" )
check_struct( x )
end
# ---------------------------------------- test_getspnam_for_non_existent_user
def test_getspnam_for_non_existent_user
assert_nil( Shadow::Passwd.getspnam( 'somebadusername' ) )
end
# -------------------------------------------------------------- test_putspent
def test_putspent
omit_if( Shadow::IMPLEMENTATION != 'SHADOW' ) if respond_to?( :omit_if )
#result = StringIO.open( '', 'w' ) do |fh|
File.open( 'test_password', 'w' ) do |fh|
Shadow::Passwd.add_password_entry( sample_entry, fh )
end
assert( File.read( 'test_password' ).match( sample_entry.first ) )
end
# --------------------------------------------------------------- check_struct
def check_struct( s )
STRUCT_METHODS.each do |m|
s.send( m )
end
end
# ----------------------------------------------------------------- test_entry
def sample_entry( &block )
return ['test_user', # sp_namp
'new_pass', # sp_pwdp
0, #sp_lastchg
0, #sp_min
0, #sp_max
0, #sp_warn
0, #sp_inact
0, #????
0, #sp_expire
0 # sp_flag
]
e = Shadow::Passwd::Entry.new
e.sp_namp = 'test_user'
e.sp_pwdp = 'password'
yield e if block_given?
return e
end
end

View File

@ -0,0 +1,16 @@
--- extconf.rb~ 2017-10-05 20:21:59.480315863 +0200
+++ extconf.rb 2017-10-05 20:23:55.077931560 +0200
@@ -6,12 +6,7 @@
require 'mkmf'
require 'rbconfig'
-
-$CFLAGS = case RUBY_VERSION
- when /^1\.9/; '-DRUBY19'
- when /^2\./; '-DRUBY19'
- else; ''
- end
+$CFLAGS = "#{$CFLAGS} -DRUBY19"
implementation = case CONFIG['host_os']
when /linux/i; 'shadow'

BIN
ruby-shadow-2.5.0.gem Normal file

Binary file not shown.

74
rubygem-ruby-shadow.spec Normal file
View File

@ -0,0 +1,74 @@
%global gem_name ruby-shadow
Name: rubygem-%{gem_name}
Version: 2.5.0
Release: 1
Summary: Ruby shadow password module
License: Public Domain
URL: https://github.com/apalmblad/ruby-shadow
Source0: http://rubygems.org/gems/%{gem_name}-%{version}.gem
Source1: https://raw.githubusercontent.com/apalmblad/ruby-shadow/master/test/basic_test.rb
Patch0: ruby-shadow-2.5.0-cflags.patch
BuildRequires: gcc ruby(release) rubygems-devel ruby-devel rubygem(minitest)
BuildRequires: rubygem(test-unit)
Obsoletes: ruby-shadow < 1.4.1-36
Provides: ruby-shadow = %{version}-%{release}
Provides: ruby(shadow) = %{version}
%description
This module provides access to shadow passwords on Linux and Solaris.
%package doc
Summary: Documentation for %{name}
Requires: %{name} = %{version}-%{release}
BuildArch: noarch
%description doc
Documentation for %{name}.
%prep
gem unpack %{SOURCE0}
%setup -q -D -T -n %{gem_name}-%{version}
gem spec %{SOURCE0} -l --ruby > %{gem_name}.gemspec
%patch0 -p0
cp %{SOURCE1} .
%build
export CONFIGURE_ARGS="--with-cflags='%{optflags}'"
gem build %{gem_name}.gemspec
%gem_install
%install
mkdir -p %{buildroot}%{gem_dir}
cp -a .%{gem_dir}/* %{buildroot}%{gem_dir}/
find %{buildroot}%{gem_dir}/ -name \*.so -delete
mkdir -p %{buildroot}%{gem_extdir_mri}
cp -a .%{gem_extdir_mri}/{gem.build_complete,*.so} %{buildroot}%{gem_extdir_mri}/
rm -rf %{buildroot}%{gem_instdir}/ext/
%check
cp %{SOURCE1} .%{gem_instdir}
pushd .%{gem_instdir}
if [ $(id -u) = 0 ]; then
ruby -I. -e 'Dir.glob "*_test.rb", &method(:require)'
else
ruby -I. -e 'Dir.glob "*_test.rb", &method(:require)' || :
fi
popd
%files
%dir %{gem_instdir}
%{gem_extdir_mri}
%{gem_instdir}/%{gem_name}.gemspec
%exclude %{gem_instdir}/.*
%license %{gem_instdir}/LICENSE
%exclude %{gem_cache}
%{gem_spec}
%files doc
%doc %{gem_docdir}
%exclude %{gem_instdir}/*
%doc %{gem_instdir}/HISTORY
%doc %{gem_instdir}/README
%doc %{gem_instdir}/README.euc
%changelog
* Tue Jul 28 2020 shaoqiang kang <kangshaoqiang1@huawei.com> - 2.5.0-1
- Package init

5
rubygem-ruby-shadow.yaml Normal file
View File

@ -0,0 +1,5 @@
git_url: https://github.com/apalmblad/ruby-shadow
version_control: github
src_repo: apalmblad/ruby-shadow
tag_prefix: "^"
seperator: "."