[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