diff options
-rw-r--r-- | src/actions/make/make_csharp.lua | 2 | ||||
-rw-r--r-- | src/base/project.lua | 8 | ||||
-rw-r--r-- | tests/premake4.lua | 1 | ||||
-rw-r--r-- | tests/project/test_eachfile.lua | 47 |
4 files changed, 54 insertions, 4 deletions
diff --git a/src/actions/make/make_csharp.lua b/src/actions/make/make_csharp.lua index fbb424b..102db6e 100644 --- a/src/actions/make/make_csharp.lua +++ b/src/actions/make/make_csharp.lua @@ -53,7 +53,7 @@ local embedded = { } local copypairs = { } - for fcfg in premake.eachfile(prj) do + for fcfg in premake.project.eachfile(prj) do local action = csc.getbuildaction(fcfg) if action == "Compile" then table.insert(sources, fcfg.name) diff --git a/src/base/project.lua b/src/base/project.lua index 6a41c54..3c7b139 100644 --- a/src/base/project.lua +++ b/src/base/project.lua @@ -21,7 +21,7 @@ local tr = premake.tree.new(prj.name) tr.project = prj - for fcfg in premake.eachfile(prj) do + for fcfg in premake.project.eachfile(prj) do local node = premake.tree.add(tr, fcfg.name) node.cfg = fcfg end @@ -58,7 +58,7 @@ -- Iterator for a project's files; returns a file configuration object. -- - function premake.eachfile(prj) + function premake.project.eachfile(prj) -- project root config contains the file config list if not prj.project then prj = premake.getconfig(prj) end local i = 0 @@ -66,7 +66,9 @@ return function () i = i + 1 if (i <= #t) then - return prj.__fileconfigs[t[i]] + local fcfg = prj.__fileconfigs[t[i]] + fcfg.vpath = premake.project.getvpath(prj, fcfg.name) + return fcfg end end end diff --git a/tests/premake4.lua b/tests/premake4.lua index 071ebdd..96ca4fa 100644 --- a/tests/premake4.lua +++ b/tests/premake4.lua @@ -58,6 +58,7 @@ -- Project API tests dofile("test_project.lua") + dofile("project/test_eachfile.lua") dofile("project/test_vpaths.lua") -- Baking tests diff --git a/tests/project/test_eachfile.lua b/tests/project/test_eachfile.lua new file mode 100644 index 0000000..c7bc3e5 --- /dev/null +++ b/tests/project/test_eachfile.lua @@ -0,0 +1,47 @@ +-- +-- tests/project/test_eachfile.lua +-- Automated test suite for the file iteration function. +-- Copyright (c) 2011 Jason Perkins and the Premake project +-- + + T.project_eachfile = { } + local suite = T.project_eachfile + local project = premake.project + + +-- +-- Setup and teardown +-- + + local sln, prj + function suite.setup() + sln = test.createsolution() + end + + local function prepare() + premake.bake.buildconfigs() + prj = premake.solution.getproject(sln, 1) + end + + +-- +-- Tests +-- + + function suite.ReturnsAllFiles() + files { "hello.h", "hello.c" } + prepare() + local iter = project.eachfile(prj) + test.isequal("hello.h", iter().name) + test.isequal("hello.c", iter().name) + test.isnil(iter()) + end + + + function suite.ReturnedObjectIncludesVpath() + files { "hello.h", "hello.c" } + vpaths { ["*.h"] = "Headers" } + prepare() + local iter = project.eachfile(prj) + test.isequal("Headers/hello.h", iter().vpath) + end |