From 61346636d132419234f8dc9a2041b3e8877165a6 Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Sun, 9 Sep 2012 17:38:31 +0100 Subject: Move luacov out to a submodule --- extras/luacov | 1 + extras/luacov/src/bin/luacov | 142 ------------------------------------------- 2 files changed, 1 insertion(+), 142 deletions(-) create mode 160000 extras/luacov delete mode 100755 extras/luacov/src/bin/luacov (limited to 'extras/luacov/src/bin/luacov') diff --git a/extras/luacov b/extras/luacov new file mode 160000 index 0000000..fe10d23 --- /dev/null +++ b/extras/luacov @@ -0,0 +1 @@ +Subproject commit fe10d23a7c6eb6fbe37c3fba1afc10817629a60a diff --git a/extras/luacov/src/bin/luacov b/extras/luacov/src/bin/luacov deleted file mode 100755 index 6a24bc6..0000000 --- a/extras/luacov/src/bin/luacov +++ /dev/null @@ -1,142 +0,0 @@ -#!/usr/bin/env lua - -local luacov = require("luacov.stats") - -local data, most_hits = luacov.load() - -if not data then - print("Could not load stats file "..luacov.statsfile..".") - print("Run your Lua program with -lluacov and then rerun luacov.") - os.exit(1) -end - -local report = io.open("luacov.report.out", "w") - --- only report on files specified on the command line -local patterns = {} -local exclude_patterns = {} -local exclude_next = false -for i = 1, #arg do - if arg[i] == "-X" then - exclude_next = true - else - if exclude_next then - exclude_patterns[#exclude_patterns+1] = arg[i] - exclude_next = false - else - patterns[#patterns+1] = arg[i] - end - end -end - -local names = {} -for filename, _ in pairs(data) do - if not patterns[1] then - table.insert(names, filename) - else - local path = filename:gsub("/", "."):gsub("%.lua$", "") - local include = false - for _, p in ipairs(patterns) do - if path:match(p) then - include = true - break - end - end - if include then - for _, p in ipairs(exclude_patterns) do - if path:match(p) then - include = false - break - end - end - end - if include then - table.insert(names, filename) - end - end -end - -table.sort(names) - -local most_hits_length = ("%d"):format(most_hits):len() -local empty_format = (" "):rep(most_hits_length+1) -local false_negative_format = ("!%% %dd"):format(most_hits_length) -local zero_format = ("*"):rep(most_hits_length).."0" -local count_format = ("%% %dd"):format(most_hits_length+1) - -local exclusions = -{ - { false, "^#!" }, -- Unix hash-bang magic line - { true, "" }, -- Empty line - { true, "}" }, -- Just a close-brace - { true, "end,?" }, -- Single "end" - { true, "else" }, -- Single "else" - { true, "repeat" }, -- Single "repeat" - { true, "do" }, -- Single "do" - { true, "local%s+[%w_,%s]+" }, -- "local var1, ..., varN" - { true, "local%s+[%w_,%s]+%s*=" }, -- "local var1, ..., varN =" - { true, "local%s+function%s*%([%w_,%.%s]*%)" }, -- "local function(arg1, ..., argN)" - { true, "local%s+function%s+[%w_]*%s*%([%w_,%.%s]*%)" }, -- "local function f (arg1, ..., argN)" -} - -local function excluded(line) - for _, e in ipairs(exclusions) do - if e[1] then - if line:match("^%s*"..e[2].."%s*$") or line:match("^%s*"..e[2].."%s*%-%-") then return true end - else - if line:match(e[2]) then return true end - end - end - return false -end - -for _, filename in ipairs(names) do - local filedata = data[filename] - local file = io.open(filename, "r") - if file then - report:write("\n") - report:write("==============================================================================\n") - report:write(filename, "\n") - report:write("==============================================================================\n") - local line_nr = 1 - block_comment, equals = false, "" - while true do - local line = file:read("*l") - if not line then break end - local true_line = line - - local new_block_comment = false - if not block_comment then - local l, equals = line:match("^(.*)%-%-%[(=*)%[") - if l then - line = l - new_block_comment = true - end - else - local l = line:match("%]"..equals.."%](.*)$") - if l then - line = l - block_comment = false - end - end - - local hits = filedata[line_nr] or 0 - if block_comment or excluded(line) then - if hits > 0 then - report:write(false_negative_format:format(hits)) - else - report:write(empty_format) - end - else - if hits == 0 then - report:write(zero_format) - else - report:write(count_format:format(hits)) - end - end - report:write("\t", true_line, "\n") - if new_block_comment then block_comment = true end - line_nr = line_nr + 1 - end - end -end -- cgit v1.2.1