# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
setvar pkgname = 'lua-busted'
setvar _pkgname = 'busted'
setvar pkgver = '2.0_rc12'
setvar _pkgver = "${pkgver/_/.}-1"
setvar pkgrel = '4'
setvar pkgdesc = ""Elegant Lua unit testing""
setvar url = ""https://olivinelabs.com/busted/""
setvar arch = ""noarch""
setvar license = ""MIT""
# Note: We have replaced dkjson with lua-cjson.
setvar depends = ""lua-cliargs lua-filesystem lua-system lua-cjson lua-say
	lua-luassert lua-term lua-penlight lua-mediator""
setvar checkdepends = """"
setvar subpackages = """"
setvar source = ""$pkgname-$pkgver.tar.gz::https://github.com/Olivine-Labs/$_pkgname/archive/v$_pkgver.tar.gz
	fix-tests.patch
	use-cjson.patch""
setvar builddir = ""$srcdir/$_pkgname-$_pkgver""
# tests fail on x86_64 because cl_standalone.lua output is different, i don't know why --kaniini
setvar options = ""!check""

# luajit is not available for selected arches
case (CARCH) {
	ppc64le | s390x { setvar _luajit = """"}
	* { setvar checkdepends = ""$checkdepends luajit"," _luajit = ""jit""}
}

setvar _luaversions = ""5.1 5.2 5.3""
for _v in $_luaversions {
	setvar subpackages = ""$subpackages lua$_v-${pkgname#lua-}:_subpackage""
	setvar checkdepends = ""$checkdepends lua$_v""
}

proc prepare {
	default_prepare || return 1

	cd $builddir

	local lver; for lver in $_luaversions $_luajit {
		sed "s|/usr/bin/env lua|/usr/bin/lua$lver|" \
			bin/busted > bin/busted-$lver || return 1
	}
}

proc check {
	cd $builddir

	mv bin/busted bin/busted.orig

	local lver; for lver in $_luaversions $_luajit {
		# Some specs invokes bin/busted as subprocess, so we must
		# ensure that it will run on the correct Lua version.
		install -m 755 bin/busted-$lver bin/busted || return 1

		msg "Running tests on lua$lver..."
		lua$lver bin/busted spec || return 1
	}

	mv bin/busted.orig bin/busted
}

proc package {
	cd $builddir

	# Executable with shebang `/usr/bin/env lua`.
	install -m 755 -D bin/busted "$pkgdir"/usr/bin/busted
}

proc _subpackage {
	local lver="${subpkgname:3:3}"
	setvar pkgdesc = ""$pkgdesc (for Lua $lver)""
	setvar depends = ""lua$lver ${depends//lua-/lua$lver-}""
	setvar install_if = ""$pkgname=$pkgver-r$pkgrel lua$lver""
	local destdir="$subpkgdir/usr/share/lua/$lver/$_pkgname"
	local rockdir="$subpkgdir/usr/lib/luarocks/rocks-$lver/$_pkgname/$_pkgver"

	cd $builddir

	mkdir -p $destdir
	cp -r busted/* $destdir || return 1

	mkdir -p $rockdir
	echo 'rock_manifest = {}' > "$rockdir"/rock_manifest

	install -m 755 -D bin/busted-$lver "$subpkgdir"/usr/bin/busted-$lver
}

setvar sha512sums = ""0cb1f6a66110514dc3675b2e667cca676e6672e895b57ffba438e89a1e0a7f4f8f941cab54ead905758987be15e9885e1eeb82baabc9d18bf29ea56b832b89b1  lua-busted-2.0_rc12.tar.gz
c4ec5de43d76da18a7c723744d2930fc78224fe151fd80c141dbb08dce9f10ee94335684a794ad35c902285f40234899e0b12d1995825cb3d250c29ed82bdeec  fix-tests.patch
6de3c1181a391956f6ea01994960a5de3292a377be1949556eb6cd11986267e3da707decef1838f42f0236af4b25ce4ce09217abe976caa0110840b69efcab43  use-cjson.patch""