Tarantool development patches archive
 help / color / mirror / Atom feed
From: Igor Munkin via Tarantool-patches <tarantool-patches@dev.tarantool.org>
To: Sergey Kaplun <skaplun@tarantool.org>,
	Alexander Turenko <alexander.turenko@tarantool.org>
Cc: tarantool-patches@dev.tarantool.org
Subject: [Tarantool-patches] [PATCH luajit] test: fix luacheck invocation for non-real paths
Date: Sat,  6 Mar 2021 02:20:30 +0300	[thread overview]
Message-ID: <de1139d94e7501628e69e56d7837fc76cf6b5120.1614986102.git.imun@tarantool.org> (raw)

Unfortunately, luacheck doesn't handle the working directory or one used
in options if it is not a real path. As a result of this patch both
PROJECT_SOURCE_DIR and PROJECT_BINARY_DIR are resolved prior to be used
within luacheck target custom command.

The issue has been already fixed in Tarantool repo after applying
af448464d15f60b87f1c9ef41a7816911c889459 ('tools: fix luacheck
invocation in different cases'), and this patch is necessary, since
<LuaJIT-luacheck> is the dependency for Tarantool <luacheck> target.

Relates to mpeterv/luacheck#208

Reported-by: Alexander Turenko <alexander.turenko@tarantool.org>
Signed-off-by: Igor Munkin <imun@tarantool.org>
---

Branch: https://github.com/tarantool/luajit/tree/imun/luacheck-realpath
CI is green on this branch (see the tick near the HEAD commit):
https://github.com/tarantool/tarantool/tree/imun/fix-luacheck-invocation

 test/CMakeLists.txt | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index d166c9d8..c58a8ed5 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -5,25 +5,33 @@ cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
 
 find_program(LUACHECK luacheck)
 if(LUACHECK)
-  set(LUACHECK_RC ${PROJECT_SOURCE_DIR}/.luacheckrc)
-  file(GLOB_RECURSE LUACHECK_DEPS ${PROJECT_SOURCE_DIR}/*.lua)
+  # XXX: The tweak below relates to luacheck problem with paths.
+  # If the working directory or one used in luacheck options is
+  # not a real path, luacheck doesn't handle it the right way.
+  # Hence the paths used by luacheck in CMake ought to be resolved
+  # to the real ones. For more info, see the following issue.
+  # https://github.com/mpeterv/luacheck/issues/208
+  get_filename_component(LUACHECK_SRCDIR "${PROJECT_SOURCE_DIR}" REALPATH)
+  get_filename_component(LUACHECK_BINDIR "${PROJECT_BINARY_DIR}" REALPATH)
+  set(LUACHECK_RC ${LUACHECK_SRCDIR}/.luacheckrc)
+  file(GLOB_RECURSE LUACHECK_DEPS ${LUACHECK_SRCDIR}/*.lua)
   add_custom_target(${PROJECT_NAME}-luacheck
     DEPENDS ${LUACHECK_RC} ${LUACHECK_DEPS}
   )
   add_custom_command(TARGET ${PROJECT_NAME}-luacheck
     COMMENT "Running luacheck static analysis"
     COMMAND
-      ${LUACHECK} ${PROJECT_SOURCE_DIR}
+      ${LUACHECK} ${LUACHECK_SRCDIR}
         --codes
         --config ${LUACHECK_RC}
         # XXX: jit/vmdef.lua is an autogenerated Lua source, so
         # there is no need to run luacheck against it. Hence
         # explicitly exclude this file from the list for check.
-        --exclude-files ${LUAJIT_BINARY_DIR}/jit/vmdef.lua
+        --exclude-files ${LUACHECK_BINDIR}/src/jit/vmdef.lua
     # XXX: Filenames in .luacheckrc are considered relative to
     # the working directory, hence luacheck should be run in the
     # project root directory.
-    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+    WORKING_DIRECTORY ${LUACHECK_SRCDIR}
   )
 else()
   add_custom_target(${PROJECT_NAME}-luacheck)
-- 
2.25.0


             reply	other threads:[~2021-03-05 23:20 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-05 23:20 Igor Munkin via Tarantool-patches [this message]
2021-03-08  4:27 ` Alexander Turenko via Tarantool-patches
2021-03-10  0:14   ` Igor Munkin via Tarantool-patches
2021-03-08 19:26 ` Sergey Kaplun via Tarantool-patches
2021-03-10  0:14   ` Igor Munkin via Tarantool-patches
2021-03-10 16:25 ` Igor Munkin via Tarantool-patches

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=de1139d94e7501628e69e56d7837fc76cf6b5120.1614986102.git.imun@tarantool.org \
    --to=tarantool-patches@dev.tarantool.org \
    --cc=alexander.turenko@tarantool.org \
    --cc=imun@tarantool.org \
    --cc=skaplun@tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH luajit] test: fix luacheck invocation for non-real paths' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox