diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2019-09-02 14:32:54 -0300 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2019-09-03 14:56:49 -0300 |
commit | 96b6b9ca9cf77922863d440247850b6b7c4bb9ae (patch) | |
tree | f090af9c1d03c21bf3ba8f6d556b17f7630e3a57 | |
parent | 989c58dff675532cf6378ade3790fd7e28e5bc07 (diff) | |
download | luarocks-96b6b9ca9cf77922863d440247850b6b7c4bb9ae.tar.gz luarocks-96b6b9ca9cf77922863d440247850b6b7c4bb9ae.tar.bz2 luarocks-96b6b9ca9cf77922863d440247850b6b7c4bb9ae.zip |
build: fix --branch flag
The `--branch` flag is optional and takes a string argument.
The `--branch` flag does not make sense for `luarocks make` because
it does not fetch sources, it builds/installs based on whatever is
in the current directory.
This also adds tests that verify the behavior, but these don't
run in Travis CI because of issues running a Git daemon there.
They were verified locally.
-rw-r--r-- | spec/build_spec.lua | 35 | ||||
-rw-r--r-- | spec/install_spec.lua | 29 | ||||
-rw-r--r-- | spec/util/git_repo.lua | 1 | ||||
-rw-r--r-- | src/luarocks/build.lua | 15 | ||||
-rw-r--r-- | src/luarocks/cmd/build.lua | 6 | ||||
-rw-r--r-- | src/luarocks/cmd/install.lua | 2 | ||||
-rw-r--r-- | src/luarocks/cmd/make.lua | 6 |
7 files changed, 67 insertions, 27 deletions
diff --git a/spec/build_spec.lua b/spec/build_spec.lua index 41c169d9..f0377b5f 100644 --- a/spec/build_spec.lua +++ b/spec/build_spec.lua | |||
@@ -4,6 +4,7 @@ local get_tmp_path = test_env.get_tmp_path | |||
4 | local run = test_env.run | 4 | local run = test_env.run |
5 | local testing_paths = test_env.testing_paths | 5 | local testing_paths = test_env.testing_paths |
6 | local write_file = test_env.write_file | 6 | local write_file = test_env.write_file |
7 | local git_repo = require("spec.util.git_repo") | ||
7 | 8 | ||
8 | test_env.unload_luarocks() | 9 | test_env.unload_luarocks() |
9 | local cfg = require("luarocks.core.cfg") | 10 | local cfg = require("luarocks.core.cfg") |
@@ -109,12 +110,6 @@ describe("LuaRocks build tests #integration", function() | |||
109 | end, finally) | 110 | end, finally) |
110 | end) | 111 | end) |
111 | 112 | ||
112 | it("LuaRocks build lpeg branch=master", function() | ||
113 | -- FIXME should use dev package | ||
114 | assert.is_true(run.luarocks_bool("build --branch=master lpeg")) | ||
115 | assert.is.truthy(lfs.attributes(testing_paths.testing_sys_rocks .. "/lpeg/1.0.0-1/lpeg-1.0.0-1.rockspec")) | ||
116 | end) | ||
117 | |||
118 | it("LuaRocks build fails if the deps-mode argument is invalid", function() | 113 | it("LuaRocks build fails if the deps-mode argument is invalid", function() |
119 | assert.is_false(run.luarocks_bool("build --deps-mode=123 " .. testing_paths.fixtures_dir .. "/a_rock-1.0-1.rockspec")) | 114 | assert.is_false(run.luarocks_bool("build --deps-mode=123 " .. testing_paths.fixtures_dir .. "/a_rock-1.0-1.rockspec")) |
120 | assert.falsy(lfs.attributes(testing_paths.testing_sys_rocks .. "/a_rock/1.0-1/a_rock-1.0-1.rockspec")) | 115 | assert.falsy(lfs.attributes(testing_paths.testing_sys_rocks .. "/a_rock/1.0-1/a_rock-1.0-1.rockspec")) |
@@ -928,5 +923,33 @@ describe("LuaRocks build tests #unit", function() | |||
928 | end) | 923 | end) |
929 | end) | 924 | end) |
930 | end) | 925 | end) |
926 | |||
927 | describe("#unix build from #git", function() | ||
928 | local git | ||
929 | |||
930 | setup(function() | ||
931 | git = git_repo.start() | ||
932 | end) | ||
933 | |||
934 | teardown(function() | ||
935 | if git then | ||
936 | git:stop() | ||
937 | end | ||
938 | end) | ||
939 | |||
940 | it("using --branch", function() | ||
941 | write_file("my_branch-1.0-1.rockspec", [[ | ||
942 | rockspec_format = "3.0" | ||
943 | package = "my_branch" | ||
944 | version = "1.0-1" | ||
945 | source = { | ||
946 | url = "git://localhost/testrock" | ||
947 | } | ||
948 | ]], finally) | ||
949 | assert.is_false(run.luarocks_bool("build --branch unknown-branch ./my_branch-1.0-1.rockspec")) | ||
950 | assert.is_true(run.luarocks_bool("build --branch test-branch ./my_branch-1.0-1.rockspec")) | ||
951 | end) | ||
952 | end) | ||
953 | |||
931 | end) | 954 | end) |
932 | 955 | ||
diff --git a/spec/install_spec.lua b/spec/install_spec.lua index 77ac6225..3b0b22fb 100644 --- a/spec/install_spec.lua +++ b/spec/install_spec.lua | |||
@@ -3,8 +3,8 @@ local lfs = require("lfs") | |||
3 | local run = test_env.run | 3 | local run = test_env.run |
4 | local testing_paths = test_env.testing_paths | 4 | local testing_paths = test_env.testing_paths |
5 | local env_variables = test_env.env_variables | 5 | local env_variables = test_env.env_variables |
6 | local get_tmp_path = test_env.get_tmp_path | ||
7 | local write_file = test_env.write_file | 6 | local write_file = test_env.write_file |
7 | local git_repo = require("spec.util.git_repo") | ||
8 | 8 | ||
9 | test_env.unload_luarocks() | 9 | test_env.unload_luarocks() |
10 | 10 | ||
@@ -234,4 +234,31 @@ describe("luarocks install #integration", function() | |||
234 | end) | 234 | end) |
235 | end) | 235 | end) |
236 | 236 | ||
237 | describe("#unix install runs build from #git", function() | ||
238 | local git | ||
239 | |||
240 | setup(function() | ||
241 | git = git_repo.start() | ||
242 | end) | ||
243 | |||
244 | teardown(function() | ||
245 | if git then | ||
246 | git:stop() | ||
247 | end | ||
248 | end) | ||
249 | |||
250 | it("using --branch", function() | ||
251 | write_file("my_branch-1.0-1.rockspec", [[ | ||
252 | rockspec_format = "3.0" | ||
253 | package = "my_branch" | ||
254 | version = "1.0-1" | ||
255 | source = { | ||
256 | url = "git://localhost/testrock" | ||
257 | } | ||
258 | ]], finally) | ||
259 | assert.is_false(run.luarocks_bool("install --branch unknown-branch ./my_branch-1.0-1.rockspec")) | ||
260 | assert.is_true(run.luarocks_bool("install --branch test-branch ./my_branch-1.0-1.rockspec")) | ||
261 | end) | ||
262 | end) | ||
263 | |||
237 | end) | 264 | end) |
diff --git a/spec/util/git_repo.lua b/spec/util/git_repo.lua index 6cccfcc4..b3ddd9ef 100644 --- a/spec/util/git_repo.lua +++ b/spec/util/git_repo.lua | |||
@@ -82,6 +82,7 @@ function git_repo.start() | |||
82 | test_env.execute("git add " .. name) | 82 | test_env.execute("git add " .. name) |
83 | end | 83 | end |
84 | assert(test_env.execute("git commit -a -m 'initial commit'")) | 84 | assert(test_env.execute("git commit -a -m 'initial commit'")) |
85 | assert(test_env.execute("git branch test-branch")) | ||
85 | print("git daemon --reuseaddr --pid-file="..pidfile.." --base-path="..basedir.." --export-all "..repodir.." &") | 86 | print("git daemon --reuseaddr --pid-file="..pidfile.." --base-path="..basedir.." --export-all "..repodir.." &") |
86 | assert(test_env.execute("git daemon --reuseaddr --pid-file="..pidfile.." --base-path="..basedir.." --export-all "..repodir.." &")) | 87 | assert(test_env.execute("git daemon --reuseaddr --pid-file="..pidfile.." --base-path="..basedir.." --export-all "..repodir.." &")) |
87 | assert(test_env.execute("sleep 0.1; netstat -ln | grep '0.0.0.0:9418 .* LISTEN'")) | 88 | assert(test_env.execute("sleep 0.1; netstat -ln | grep '0.0.0.0:9418 .* LISTEN'")) |
diff --git a/src/luarocks/build.lua b/src/luarocks/build.lua index 2ac7dd3a..948c5f53 100644 --- a/src/luarocks/build.lua +++ b/src/luarocks/build.lua | |||
@@ -18,7 +18,7 @@ build.opts = util.opts_table("build.opts", { | |||
18 | deps_mode = "string", | 18 | deps_mode = "string", |
19 | build_only_deps = "boolean", | 19 | build_only_deps = "boolean", |
20 | namespace = "string?", | 20 | namespace = "string?", |
21 | branch = "boolean", | 21 | branch = "string?", |
22 | verify = "boolean", | 22 | verify = "boolean", |
23 | }) | 23 | }) |
24 | 24 | ||
@@ -337,18 +337,7 @@ local function write_rock_dir_files(rockspec, opts) | |||
337 | end | 337 | end |
338 | 338 | ||
339 | --- Build and install a rock given a rockspec. | 339 | --- Build and install a rock given a rockspec. |
340 | -- @param rockspec_file string: local or remote filename of a rockspec. | 340 | -- @param opts table: build options table |
341 | -- @param need_to_fetch boolean: true if sources need to be fetched, | ||
342 | -- false if the rockspec was obtained from inside a source rock. | ||
343 | -- @param minimal_mode boolean: true if there's no need to fetch, | ||
344 | -- unpack or change dir (this is used by "luarocks make"). Implies | ||
345 | -- need_to_fetch = false. | ||
346 | -- @param deps_mode string: Dependency mode: "one" for the current default tree, | ||
347 | -- "all" for all trees, "order" for all trees with priority >= the current default, | ||
348 | -- "none" for no trees. | ||
349 | -- @param build_only_deps boolean: true to build the listed dependencies only. | ||
350 | -- @param namespace string?: a namespace for the rockspec | ||
351 | -- @param branch string?: a forced branch to use | ||
352 | -- @return (string, string) or (nil, string, [string]): Name and version of | 341 | -- @return (string, string) or (nil, string, [string]): Name and version of |
353 | -- installed rock if succeeded or nil and an error message followed by an error code. | 342 | -- installed rock if succeeded or nil and an error message followed by an error code. |
354 | function build.build_rockspec(rockspec, opts) | 343 | function build.build_rockspec(rockspec, opts) |
diff --git a/src/luarocks/cmd/build.lua b/src/luarocks/cmd/build.lua index 57e722b5..ea47cbb0 100644 --- a/src/luarocks/cmd/build.lua +++ b/src/luarocks/cmd/build.lua | |||
@@ -31,6 +31,10 @@ function cmd_build.add_to_parser(parser) | |||
31 | 31 | ||
32 | cmd:flag("--only-deps", "Installs only the dependencies of the rock.") | 32 | cmd:flag("--only-deps", "Installs only the dependencies of the rock.") |
33 | cmd:flag("--no-doc", "Installs the rock without its documentation.") | 33 | cmd:flag("--no-doc", "Installs the rock without its documentation.") |
34 | cmd:option("--branch", "Override the `source.branch` field in the loaded ".. | ||
35 | "rockspec. Allows to specify a different branch to fetch. Particularly ".. | ||
36 | 'for "dev" rocks.') | ||
37 | :argname("<name>") | ||
34 | make.cmd_options(cmd) | 38 | make.cmd_options(cmd) |
35 | end | 39 | end |
36 | 40 | ||
@@ -131,7 +135,7 @@ function cmd_build.command(args) | |||
131 | deps_mode = deps.get_deps_mode(args), | 135 | deps_mode = deps.get_deps_mode(args), |
132 | build_only_deps = not not args.only_deps, | 136 | build_only_deps = not not args.only_deps, |
133 | namespace = args.namespace, | 137 | namespace = args.namespace, |
134 | branch = not not args.branch, | 138 | branch = args.branch, |
135 | verify = not not args.verify, | 139 | verify = not not args.verify, |
136 | }) | 140 | }) |
137 | 141 | ||
diff --git a/src/luarocks/cmd/install.lua b/src/luarocks/cmd/install.lua index 4020918e..be4b0104 100644 --- a/src/luarocks/cmd/install.lua +++ b/src/luarocks/cmd/install.lua | |||
@@ -42,7 +42,7 @@ function install.add_to_parser(parser) | |||
42 | util.deps_mode_option(cmd) | 42 | util.deps_mode_option(cmd) |
43 | -- luarocks build options | 43 | -- luarocks build options |
44 | parser:flag("--pack-binary-rock"):hidden(true) | 44 | parser:flag("--pack-binary-rock"):hidden(true) |
45 | parser:flag("--branch"):hidden(true) | 45 | parser:option("--branch"):hidden(true) |
46 | parser:flag("--sign"):hidden(true) | 46 | parser:flag("--sign"):hidden(true) |
47 | end | 47 | end |
48 | 48 | ||
diff --git a/src/luarocks/cmd/make.lua b/src/luarocks/cmd/make.lua index 480ec48d..3ff5c277 100644 --- a/src/luarocks/cmd/make.lua +++ b/src/luarocks/cmd/make.lua | |||
@@ -26,10 +26,6 @@ function make.cmd_options(parser) | |||
26 | "previously installed versions if it would break dependencies.") | 26 | "previously installed versions if it would break dependencies.") |
27 | parser:flag("--force-fast", "Like --force, but performs a forced removal ".. | 27 | parser:flag("--force-fast", "Like --force, but performs a forced removal ".. |
28 | "without reporting dependency issues.") | 28 | "without reporting dependency issues.") |
29 | parser:option("--branch", "Override the `source.branch` field in the loaded ".. | ||
30 | "rockspec. Allows to specify a different branch to fetch. Particularly ".. | ||
31 | 'for "dev" rocks.') | ||
32 | :argname("<name>") | ||
33 | parser:flag("--verify", "Verify signature of the rockspec or src.rock being ".. | 29 | parser:flag("--verify", "Verify signature of the rockspec or src.rock being ".. |
34 | "built. If the rockspec or src.rock is being downloaded, LuaRocks will ".. | 30 | "built. If the rockspec or src.rock is being downloaded, LuaRocks will ".. |
35 | "attempt to download the signature as well. Otherwise, the signature ".. | 31 | "attempt to download the signature as well. Otherwise, the signature ".. |
@@ -95,7 +91,7 @@ function make.command(args) | |||
95 | deps_mode = deps.get_deps_mode(args), | 91 | deps_mode = deps.get_deps_mode(args), |
96 | build_only_deps = false, | 92 | build_only_deps = false, |
97 | namespace = args.namespace, | 93 | namespace = args.namespace, |
98 | branch = not not args.branch, | 94 | branch = args.branch, |
99 | verify = not not args.verify, | 95 | verify = not not args.verify, |
100 | }) | 96 | }) |
101 | 97 | ||