From f794727788bad1465a4496a0d46a9aa4ecf10c8b Mon Sep 17 00:00:00 2001 From: oO <47592289+oocytanb@users.noreply.github.com> Date: Mon, 2 Aug 2021 18:43:56 +0900 Subject: [PATCH] Fix the directory separator for windows --- src/luacov/multiple/tools.lua | 6 ++++++ src/luacov/reporter/multiple/cobertura.lua | 5 +++-- src/luacov/reporter/multiple/html.lua | 8 +++++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/luacov/multiple/tools.lua b/src/luacov/multiple/tools.lua index 7016396..40bba3e 100644 --- a/src/luacov/multiple/tools.lua +++ b/src/luacov/multiple/tools.lua @@ -84,4 +84,10 @@ function tools.toxml(value, indentation) return xml end +local separator_is_backslash = string.match(package.config, "^[^\n]+") == "\\" + +function tools.normalize_path(path) + return separator_is_backslash and (path:gsub("\\", "/")) or path +end + return tools diff --git a/src/luacov/reporter/multiple/cobertura.lua b/src/luacov/reporter/multiple/cobertura.lua index c409559..d10fbf9 100644 --- a/src/luacov/reporter/multiple/cobertura.lua +++ b/src/luacov/reporter/multiple/cobertura.lua @@ -47,10 +47,11 @@ function CoberturaReporter:on_start() end function CoberturaReporter:on_new_file(filename) + local norm_filename = tools.normalize_path(filename) -- "test/package/file.lua" -> "file.lua" - local class_name = filename:gsub("^.*/", "") + local class_name = norm_filename:gsub("^.*/", "") -- "test/package/file.lua" -> "test/package" - local package_name = filename:gsub(filename:gsub("^.*/", ""), ""):gsub("/$", "") + local package_name = norm_filename:gsub(norm_filename:gsub("^.*/", ""), ""):gsub("/$", "") local package for _,p in pairs(self.cobertura.coverage.packages) do diff --git a/src/luacov/reporter/multiple/html.lua b/src/luacov/reporter/multiple/html.lua index ff3320c..39e9a9b 100644 --- a/src/luacov/reporter/multiple/html.lua +++ b/src/luacov/reporter/multiple/html.lua @@ -59,11 +59,12 @@ function HtmlReporter:on_start() end function HtmlReporter:on_new_file(filename) + local norm_filename = tools.normalize_path(filename) -- class_name: "test/package/file.lua" -> "file.lua" -- package_name: "test/package/file.lua" -> "test/package" - local package_name, class_name = filename:match("^(.*)/([^/]+)") + local package_name, class_name = norm_filename:match("^(.*)/([^/]+)") class_name = class_name or "" - package_name = package_name or filename + package_name = package_name or norm_filename local package for _, p in pairs(self.data.coverage.packages) do @@ -121,6 +122,7 @@ end -- @param hits -- @param miss function HtmlReporter:on_end_file(filename, hits, miss) + local norm_filename = tools.normalize_path(filename) self.current_package["hits"] = self.current_package["hits"] + hits self.current_package["miss"] = self.current_package["miss"] + miss self.current_package["rate"] = @@ -152,7 +154,7 @@ function HtmlReporter:on_end_file(filename, hits, miss) out:write(lustache:render(templateFile, { css = css, filename = filename, - basename = filename:gsub("(.*/)(.*)", "%2"), + basename = norm_filename:gsub("(.*/)(.*)", "%2"), packageParts = packageParts, lines = self.current_class.lines, path = self.current_package.name,