[lua-ldap] cp -p, run tests in %check
Dan Callaghan
dcallagh at fedoraproject.org
Mon Jul 21 23:33:55 UTC 2014
commit 680634475f2655dd526ae567728db4682b672252
Author: Dan Callaghan <dcallagh at redhat.com>
Date: Mon Jun 30 11:45:45 2014 +1000
cp -p, run tests in %check
0001-update-test.lua-for-5.2.patch | 58 ++++++++++++
...ipt-to-run-test.lua-against-a-dummy-slapd.patch | 99 ++++++++++++++++++++
destdir.patch | 2 +-
fix-attempt-to-concatenate-a-nil-value.patch | 35 +++++++
lua-ldap.spec | 39 ++++++---
5 files changed, 220 insertions(+), 13 deletions(-)
---
diff --git a/0001-update-test.lua-for-5.2.patch b/0001-update-test.lua-for-5.2.patch
new file mode 100644
index 0000000..4de20ee
--- /dev/null
+++ b/0001-update-test.lua-for-5.2.patch
@@ -0,0 +1,58 @@
+From 85891948cd7b6e9eed2c0e4b199de2a8d19a0824 Mon Sep 17 00:00:00 2001
+From: Dan Callaghan <dcallagh at redhat.com>
+Date: Mon, 30 Jun 2014 11:18:04 +1000
+Subject: [PATCH 1/2] update test.lua for 5.2
+
+
+diff --git a/lualdap/tests/test.lua b/lualdap/tests/test.lua
+index 2dce95b..76c8640 100755
+--- a/lualdap/tests/test.lua
++++ b/lualdap/tests/test.lua
+@@ -27,7 +27,7 @@ function print_attrs (dn, attrs)
+ if tv == "string" then
+ io.write (values)
+ elseif tv == "table" then
+- local n = table.getn (values)
++ local n = #values
+ for i = 1, n-1 do
+ io.write (values[i]..",")
+ end
+@@ -77,7 +77,7 @@ function test_object (obj, objmethods)
+ -- trying to set metatable.
+ assert2 (false, pcall (setmetatable, ENV, {}))
+ -- checking existence of object's methods.
+- for i = 1, table.getn (objmethods) do
++ for i = 1, #objmethods do
+ local method = obj[objmethods[i]]
+ assert2 ("function", type(method))
+ assert2 (false, pcall (method), "no 'self' parameter accepted")
+@@ -128,7 +128,7 @@ end
+ -- checks return value which should be a function AND also its return value.
+ ---------------------------------------------------------------------
+ function check_future (ret, method, ...)
+- local ok, f = pcall (method, unpack (arg))
++ local ok, f = pcall (method, ...)
+ assert (ok, f)
+ assert2 ("function", type(f))
+ assert2 (ret, f())
+@@ -377,7 +377,7 @@ tests = {
+ -- Main
+ ---------------------------------------------------------------------
+
+-if table.getn(arg) < 1 then
++if #arg < 1 then
+ print (string.format ("Usage %s host[:port] base [who [password]]", arg[0]))
+ os.exit()
+ end
+@@ -390,7 +390,7 @@ PASSWORD = arg[4]
+ require"lualdap"
+ assert (type(lualdap)=="table", "couldn't load LDAP library")
+
+-for i = 1, table.getn (tests) do
++for i = 1, #tests do
+ local t = tests[i]
+ io.write (t[1].." ...")
+ t[2] ()
+--
+1.9.3
+
diff --git a/0002-script-to-run-test.lua-against-a-dummy-slapd.patch b/0002-script-to-run-test.lua-against-a-dummy-slapd.patch
new file mode 100644
index 0000000..7faf0b2
--- /dev/null
+++ b/0002-script-to-run-test.lua-against-a-dummy-slapd.patch
@@ -0,0 +1,99 @@
+From 847bbf5dbd8053ce21c90dd808ed98ff4b6e742a Mon Sep 17 00:00:00 2001
+From: Dan Callaghan <dcallagh at redhat.com>
+Date: Mon, 30 Jun 2014 11:27:56 +1000
+Subject: [PATCH 2/2] script to run test.lua against a dummy slapd
+
+
+diff --git a/lualdap/Makefile b/lualdap/Makefile
+index 6a4f06d..101a07f 100755
+--- a/lualdap/Makefile
++++ b/lualdap/Makefile
+@@ -26,3 +26,6 @@ install: src/$(LIBNAME)
+
+ clean:
+ rm -f $(OBJS) src/$(LIBNAME)
++
++check:
++ LUA_CPATH="src/?.so.$V" tests/run-tests.sh
+diff --git a/lualdap/tests/run-tests.sh b/lualdap/tests/run-tests.sh
+new file mode 100755
+index 0000000..22ac84b
+--- /dev/null
++++ b/lualdap/tests/run-tests.sh
+@@ -0,0 +1,73 @@
++#!/bin/bash
++set -ex
++
++d=$(readlink -f "$(dirname $0)")
++password=thepassword
++
++rm -rf "$d/slapd-config" "$d/slapd-data"
++mkdir "$d/slapd-config" "$d/slapd-data"
++
++# populate slapd config
++slapadd -F "$d/slapd-config" -n0 <<EOF
++dn: cn=config
++objectClass: olcGlobal
++cn: config
++olcPidFile: $d/slapd.pid
++
++dn: cn=schema,cn=config
++objectClass: olcSchemaConfig
++cn: schema
++
++include: file:///etc/openldap/schema/core.ldif
++include: file:///etc/openldap/schema/cosine.ldif
++include: file:///etc/openldap/schema/inetorgperson.ldif
++include: file:///etc/openldap/schema/nis.ldif
++
++dn: olcDatabase=config,cn=config
++objectClass: olcDatabaseConfig
++olcDatabase: config
++olcAccess: to * by * none
++
++dn: olcDatabase=bdb,cn=config
++objectClass: olcDatabaseConfig
++objectClass: olcBdbConfig
++olcDatabase: bdb
++olcSuffix: dc=example,dc=invalid
++olcDbDirectory: $d/slapd-data
++olcDbIndex: objectClass eq
++olcAccess: to * by * write
++#olcAccess: to * by users write
++EOF
++
++# populate slapd data
++slapadd -F "$d/slapd-config" -n1 <<EOF
++dn: dc=example,dc=invalid
++objectClass: top
++objectClass: domain
++
++#dn: ou=users,dc=example,dc=invalid
++#objectClass: top
++#objectClass: organizationalUnit
++#ou: users
++
++dn: uid=ldapuser,dc=example,dc=invalid
++objectClass: top
++objectClass: person
++objectClass: organizationalperson
++objectClass: inetorgperson
++objectClass: posixAccount
++cn: My LDAP User
++givenName: My
++sn: LDAP User
++uid: ldapuser
++uidNumber: 15549
++gidNumber: 15549
++homeDirectory: /home/lol
++mail: ldapuser at example.invalid
++userPassword: $(slappasswd -s "$password")
++EOF
++
++slapd -F "$d/slapd-config" -h ldap://localhost:3899/
++trap 'kill -TERM $(cat "$d/slapd.pid")' EXIT
++
++lua tests/test.lua localhost:3899 dc=example,dc=invalid uid=ldapuser,dc=example,dc=invalid "$password"
+--
+1.9.3
+
diff --git a/destdir.patch b/destdir.patch
index 09a8310..947af1c 100644
--- a/destdir.patch
+++ b/destdir.patch
@@ -9,7 +9,7 @@ diff -ur lualdap-1.1.0.orig/Makefile lualdap-1.1.0/Makefile
- cp src/$(LIBNAME) $(LUA_LIBDIR)
- cd $(LUA_LIBDIR); ln -f -s $(LIBNAME) $T.so
+ mkdir -p $(DESTDIR)$(LUA_LIBDIR)
-+ cp src/$(LIBNAME) $(DESTDIR)$(LUA_LIBDIR)
++ cp -p src/$(LIBNAME) $(DESTDIR)$(LUA_LIBDIR)
+ ln -s $(LIBNAME) $(DESTDIR)$(LUA_LIBDIR)/$T.so
clean:
diff --git a/fix-attempt-to-concatenate-a-nil-value.patch b/fix-attempt-to-concatenate-a-nil-value.patch
new file mode 100644
index 0000000..4ff15f6
--- /dev/null
+++ b/fix-attempt-to-concatenate-a-nil-value.patch
@@ -0,0 +1,35 @@
+From 0d2e40bb182d8e417a5dac9000e5a5bb17422adf Mon Sep 17 00:00:00 2001
+From: Dennis Schridde <devurandom at gmx.net>
+Date: Thu, 31 May 2012 17:30:49 +0200
+Subject: [PATCH] Fix potential Lua error (attempt to concatenate a nil value)
+ when ldap_parse_result returns a NULL error message
+
+---
+ src/lualdap.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/src/lualdap.c b/src/lualdap.c
+index 99c756e..d170038 100755
+--- a/src/lualdap.c
++++ b/src/lualdap.c
+@@ -436,10 +436,14 @@ static int result_message (lua_State *L) {
+ default:
+ lua_pushnil (L);
+ lua_pushliteral (L, LUALDAP_PREFIX);
+- lua_pushstring (L, msg);
+- lua_pushliteral (L, " ");
+ lua_pushstring (L, ldap_err2string(err));
+- lua_concat (L, 4);
++ lua_concat (L, 2);
++ if (msg != NULL) {
++ lua_pushliteral (L, " (");
++ lua_pushstring (L, msg);
++ lua_pushliteral (L, ")");
++ lua_concat (L, 4);
++ }
+ ret = 2;
+ }
+ ldap_memfree (mdn);
+--
+1.9.3
+
diff --git a/lua-ldap.spec b/lua-ldap.spec
index 6b83685..a72172b 100644
--- a/lua-ldap.spec
+++ b/lua-ldap.spec
@@ -13,7 +13,7 @@
Name: lua-ldap
Version: 1.1.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: LDAP client library for Lua, using OpenLDAP
License: MIT
URL: http://www.keplerproject.org/lualdap/
@@ -22,13 +22,22 @@ Source0: http://files.luaforge.net/releases/lualdap/lualdap/LuaLDAP%{vers
Patch0: destdir.patch
# fixes for Lua 5.2 compatibility
Patch1: lua52.patch
-BuildRequires: lua-devel
-BuildRequires: openldap-devel
+# https://github.com/luaforge/lualdap/commit/0d2e40bb182d8e417a5dac9000e5a5bb17422adf
+Patch2: fix-attempt-to-concatenate-a-nil-value.patch
+# fix tests for Lua 5.2, make them runnable in the build
+# https://github.com/luaforge/lualdap/pull/2
+Patch3: 0001-update-test.lua-for-5.2.patch
+Patch4: 0002-script-to-run-test.lua-against-a-dummy-slapd.patch
%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
-Requires: lua(abi) = %{luaver}
+Requires: lua(abi) = %{luaver}
%else
-Requires: lua >= %{luaver}
+Requires: lua >= %{luaver}
%endif
+BuildRequires: lua-devel
+BuildRequires: openldap-devel
+# for tests
+BuildRequires: lua
+BuildRequires: openldap-servers
%description
LuaLDAP is a simple interface from Lua to an LDAP client. It enables a Lua
@@ -41,11 +50,7 @@ program to:
%package compat
Summary: LDAP client library for Lua 5.1, using OpenLDAP
BuildRequires: compat-lua-devel >= %{luacompatver}
-%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
-Requires: lua(abi) = %{luacompatver}
-%else
-Requires: lua >= %{luacompatver}
-%endif
+Requires: lua(abi) = %{luacompatver}
%description compat
LuaLDAP is a simple interface from Lua to an LDAP client. It enables a Lua 5.1
@@ -59,18 +64,22 @@ program to:
%setup -q -n lualdap-%{version}
%patch0 -p1
%patch1 -p1
+%patch2 -p1
+%patch3 -p2
+%patch4 -p2
+chmod a+x tests/run-tests.sh
+# LUA_VERSION_NUM is defined in lua.h, it shouldn't be set in config
+echo "LUA_VERSION_NUM = " >>config
%if "%{?luacompatver}"
rm -rf %{compatbuilddir}
cp -a . %{compatbuilddir}
%endif
echo "CFLAGS = $RPM_OPT_FLAGS -fPIC -I%{_includedir} -DLDAP_DEPRECATED" >>config
-echo "LUA_VERSION_NUM = $(subst .,,%{luaver})0" >>config
echo "LUA_LIBDIR = %{lualibdir}" >>config
%if "%{?luacompatver}"
echo "CFLAGS = $RPM_OPT_FLAGS -fPIC -I%{_includedir}/lua-%{luacompatver} -DLDAP_DEPRECATED" >>%{compatbuilddir}/config
-echo "LUA_VERSION_NUM = $(subst .,,%{luacompatver})0" >>%{compatbuilddir}/config
echo "LUA_LIBDIR = %{luacompatlibdir}" >>%{compatbuilddir}/config
%endif
@@ -83,6 +92,9 @@ make %{?_smp_mflags}
popd
%endif
+%check
+make check
+
%install
make install DESTDIR=%{buildroot}
@@ -103,5 +115,8 @@ popd
%endif
%changelog
+* Mon Jun 30 2014 Dan Callaghan <dcallagh at redhat.com> - 1.1.0-2
+- cp -p, run tests in %%check
+
* Thu Jun 05 2014 Dan Callaghan <dcallagh at redhat.com> - 1.1.0-1
- initial version
More information about the scm-commits
mailing list