diff options
author | Richard Maw <richard.maw@gmail.com> | 2017-01-08 14:59:25 +0000 |
---|---|---|
committer | Richard Maw <richard.maw@gmail.com> | 2017-01-08 15:01:29 +0000 |
commit | c9c0d3d997bf878164d9123743363d23e789932a (patch) | |
tree | 55a42e15dc4457d3016f1344ffe8df853b53193e | |
parent | 17284b8e42da5a359f06dd4b56488914a008c1c4 (diff) | |
download | gitano-c9c0d3d997bf878164d9123743363d23e789932a.tar.gz |
testing: Add a way to extract variables from the test suite
-rw-r--r-- | TESTING | 17 | ||||
-rw-r--r-- | lib/gitano/repository.lua | 23 | ||||
-rw-r--r-- | testing/gitano-test-tool.in | 3 |
3 files changed, 43 insertions, 0 deletions
@@ -254,3 +254,20 @@ Tip and tricks when writing tests for Gitano however, `bash` then you should take extra care not to write bashisms into your test implementations. +Analysing the variables used in lace contexts +============================================= + +The set of predicates and variables available to lace contexts +depends on the operation, and in many cases the data in the repository. + +This makes it difficult to know exactly what variables are available. + +To aid with this, if `GITANO_DUMP_VARIABLE_FILE` is set in the environment +it will write a table of variables and the operations they exist in +to the file path in `GITANO_DUMP_VARIABLE_FILE`. + +To make use of this in the test suite add +`--env GITANO_DUMP_VARIABLE_FILE=$file_path` to `YARN_ARGS`. + +This is not compatible with running yarns in parallel +and depends on the test suite coverage to produce sufficient results. diff --git a/lib/gitano/repository.lua b/lib/gitano/repository.lua index 7858a33..e48267f 100644 --- a/lib/gitano/repository.lua +++ b/lib/gitano/repository.lua @@ -165,6 +165,29 @@ end function repo_method:run_lace(context) self:populate_context(context) config.populate_context(self.config, context) + local vardump = luxio.getenv("GITANO_DUMP_VARIABLE_FILE") + if vardump then + local io = require "io" + local pretty = require "pl.pretty" + local t + local fh = io.open(vardump, "r") + if not fh then + t = {} + else + t = pretty.read(fh:read("*a")) + fh:close() + end + local op = context.operation + for k, _ in pairs(context) do + if not t[k] then + t[k] = {} + end + t[k][op] = true + end + local fh = io.open(vardump, "w+") + fh:write(pretty.write(t)) + fh:close() + end return lace.run(self.lace, context) end diff --git a/testing/gitano-test-tool.in b/testing/gitano-test-tool.in index 88ccbc5..944a3c2 100644 --- a/testing/gitano-test-tool.in +++ b/testing/gitano-test-tool.in @@ -46,6 +46,9 @@ local function unix_assert(ret, errno) end local function run_program(t) + if t.env and os.getenv("GITANO_DUMP_VARIABLE_FILE") then + t.env["GITANO_DUMP_VARIABLE_FILE"] = os.getenv("GITANO_DUMP_VARIABLE_FILE") + end local f = io.open(basedir .. "last-program", "w") local function print (...) f:write(...) |