* [Tarantool-patches] [PATCH 0/2] popen: fixes to make master branch happy
@ 2020-02-28 9:48 Cyrill Gorcunov
2020-02-28 9:48 ` [Tarantool-patches] [PATCH 1/2] popen: fix empty envp type for nonlinux builds Cyrill Gorcunov
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Cyrill Gorcunov @ 2020-02-28 9:48 UTC (permalink / raw)
To: tml
The rule of thumb is to keep master branch in good shape so that
it will be used to verify own work on top. The popen test cause
some problems which I have to rework thus just revert it.
Also fix popen build on non linux machines.
branch gorcunov/gh-4031-popen-fixes-2
Cyrill Gorcunov (2):
popen: fix empty envp type for nonlinux builds
Revert "test: unit/popen"
src/lib/core/popen.c | 2 +-
test/unit/CMakeLists.txt | 3 -
test/unit/popen.c | 253 ---------------------------------------
test/unit/popen.result | 28 -----
4 files changed, 1 insertion(+), 285 deletions(-)
delete mode 100644 test/unit/popen.c
delete mode 100644 test/unit/popen.result
base-commit: 40a516477aa337b3d15184f99bb1ec1a3095d60a
--
2.20.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Tarantool-patches] [PATCH 1/2] popen: fix empty envp type for nonlinux builds
2020-02-28 9:48 [Tarantool-patches] [PATCH 0/2] popen: fixes to make master branch happy Cyrill Gorcunov
@ 2020-02-28 9:48 ` Cyrill Gorcunov
2020-02-28 9:48 ` [Tarantool-patches] [PATCH 2/2] Revert "test: unit/popen" Cyrill Gorcunov
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Cyrill Gorcunov @ 2020-02-28 9:48 UTC (permalink / raw)
To: tml
Fix for f58cb606a
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
---
src/lib/core/popen.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/lib/core/popen.c b/src/lib/core/popen.c
index 2f27b49a2..1cfe58ee0 100644
--- a/src/lib/core/popen.c
+++ b/src/lib/core/popen.c
@@ -612,7 +612,7 @@ get_envp(struct popen_opts *opts)
if (!said)
say_warn("popen: Environment inheritance "
"unsupported, passing empty");
- return (char *)empty_envp;
+ return (char **)empty_envp;
#endif
}
return opts->env;
--
2.20.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Tarantool-patches] [PATCH 2/2] Revert "test: unit/popen"
2020-02-28 9:48 [Tarantool-patches] [PATCH 0/2] popen: fixes to make master branch happy Cyrill Gorcunov
2020-02-28 9:48 ` [Tarantool-patches] [PATCH 1/2] popen: fix empty envp type for nonlinux builds Cyrill Gorcunov
@ 2020-02-28 9:48 ` Cyrill Gorcunov
2020-02-28 11:42 ` [Tarantool-patches] [PATCH 0/2] popen: fixes to make master branch happy Alexander Turenko
2020-02-28 11:55 ` Alexander Turenko
3 siblings, 0 replies; 5+ messages in thread
From: Cyrill Gorcunov @ 2020-02-28 9:48 UTC (permalink / raw)
To: tml
This test is buggy, need to revrite. Thus to not
block other developers which refer the master branch
just revert it.
This reverts commit 40a516477aa337b3d15184f99bb1ec1a3095d60a.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
---
test/unit/CMakeLists.txt | 3 -
test/unit/popen.c | 253 ---------------------------------------
test/unit/popen.result | 28 -----
3 files changed, 284 deletions(-)
delete mode 100644 test/unit/popen.c
delete mode 100644 test/unit/popen.result
diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt
index 4ac08de8d..c037ac539 100644
--- a/test/unit/CMakeLists.txt
+++ b/test/unit/CMakeLists.txt
@@ -240,6 +240,3 @@ target_link_libraries(swim_errinj.test unit swim)
add_executable(merger.test merger.test.c)
target_link_libraries(merger.test unit core box)
-
-add_executable(popen.test popen.c)
-target_link_libraries(popen.test misc unit core)
diff --git a/test/unit/popen.c b/test/unit/popen.c
deleted file mode 100644
index f364cee14..000000000
--- a/test/unit/popen.c
+++ /dev/null
@@ -1,253 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "trivia/util.h"
-#include "unit.h"
-
-#include "coio.h"
-#include "coio_task.h"
-#include "memory.h"
-#include "fiber.h"
-#include "popen.h"
-#include "say.h"
-
-#define TEST_POPEN_COMMON_FLAGS \
- (POPEN_FLAG_SETSID | \
- POPEN_FLAG_SHELL | \
- POPEN_FLAG_RESTORE_SIGNALS)
-
-static int
-wait_exit(struct popen_handle *handle, int *state, int *exit_code)
-{
- for (;;) {
- if (popen_state(handle, state, exit_code))
- return -1;
- if (*state == POPEN_STATE_EXITED ||
- *state == POPEN_STATE_SIGNALED)
- break;
- fiber_sleep(0.1);
- }
- return 0;
-}
-
-static int
-popen_write_exit(void)
-{
- struct popen_handle *handle;
- char *child_argv[] = {
- "/bin/sh", "-c",
- "prompt=''; read -n 5 prompt; echo -n $prompt",
- NULL,
- };
-
- const char data[] = "12345";
- int state, exit_code;
-
- struct popen_opts opts = {
- .argv = child_argv,
- .nr_argv = lengthof(child_argv),
- .env = NULL,
- .flags =
- POPEN_FLAG_FD_STDIN |
- POPEN_FLAG_FD_STDOUT |
- POPEN_FLAG_FD_STDERR |
- TEST_POPEN_COMMON_FLAGS,
- };
- int rc;
-
- plan(7);
- header();
-
- handle = popen_new(&opts);
- ok(handle != NULL, "popen_new");
- if (handle == NULL)
- goto out;
-
- rc = popen_state(handle, &state, &exit_code);
- ok(rc == 0, "popen_state");
-
- ok(state == POPEN_STATE_ALIVE, "state %s",
- popen_state_str(state));
-
- rc = popen_write_timeout(handle, (void *)data,
- (int)strlen(data),
- POPEN_FLAG_FD_STDOUT, 180);
- ok(rc == -1, "write flag check");
-
- rc = popen_write_timeout(handle, (void *)data,
- (int)strlen(data),
- POPEN_FLAG_FD_STDIN, 180);
- diag("write %d bytes '%s'", (int)strlen(data), data);
- ok(rc == (int)strlen(data), "write %s (%d bytes)",
- data, (int)strlen(data));
- if (rc != (int)strlen(data))
- goto out_kill;
-
- rc = wait_exit(handle, &state, &exit_code);
- if (rc) {
- ok(false, "child wait");
- goto out_kill;
- }
-
- ok(state == POPEN_STATE_EXITED, "child exited");
-
-out_kill:
- rc = popen_delete(handle);
- ok(rc == 0, "popen_delete");
-
-out:
- footer();
- return rc | check_plan();
-}
-
-static int
-popen_read_exit(void)
-{
- struct popen_handle *handle;
- char *child_argv[] = {
- "/bin/sh", "-c",
- "echo -n 1 2 3 4 5",
- NULL,
- };
-
- int state, exit_code;
- char data[32] = { };
-
- struct popen_opts opts = {
- .argv = child_argv,
- .nr_argv = lengthof(child_argv),
- .env = NULL,
- .flags =
- POPEN_FLAG_FD_STDIN |
- POPEN_FLAG_FD_STDOUT |
- POPEN_FLAG_FD_STDERR |
- TEST_POPEN_COMMON_FLAGS,
- };
- int rc;
-
- plan(5);
- header();
-
- handle = popen_new(&opts);
- ok(handle != NULL, "popen_new");
- if (handle == NULL)
- goto out;
-
- rc = wait_exit(handle, &state, &exit_code);
- if (rc) {
- ok(false, "child wait");
- goto out_kill;
- }
- ok(state == POPEN_STATE_EXITED, "child exited");
-
- rc = popen_read_timeout(handle, data, sizeof(data),
- POPEN_FLAG_FD_STDIN, 180);
- ok(rc == -1, "read flag check");
-
- rc = popen_read_timeout(handle, data, sizeof(data),
- POPEN_FLAG_FD_STDOUT, 180);
- diag("read %d bytes '%s'\n", rc, data);
- ok(rc == 9 && !strcmp(data, "1 2 3 4 5"),
- "read %s (%d bytes)", data, rc);
-
-out_kill:
- rc = popen_delete(handle);
- ok(rc == 0, "popen_delete");
-
-out:
- footer();
- return rc | check_plan();
-}
-
-static int
-popen_kill(void)
-{
- struct popen_handle *handle;
- char *child_argv[] = {
- "/bin/sh", "-c",
- "while [ 1 ]; do sleep 10; done",
- NULL,
- };
-
- int state, exit_code;
-
- struct popen_opts opts = {
- .argv = child_argv,
- .nr_argv = lengthof(child_argv),
- .env = NULL,
- .flags =
- POPEN_FLAG_FD_STDIN |
- POPEN_FLAG_FD_STDOUT |
- POPEN_FLAG_FD_STDERR |
- TEST_POPEN_COMMON_FLAGS,
- };
- int rc;
-
- plan(4);
- header();
-
- handle = popen_new(&opts);
- ok(handle != NULL, "popen_new");
- if (handle == NULL)
- goto out;
-
- rc = popen_send_signal(handle, SIGTERM);
- ok(rc == 0, "popen_send_signal");
- if (rc != 0)
- goto out_kill;
-
- rc = wait_exit(handle, &state, &exit_code);
- if (rc) {
- ok(false, "child wait");
- goto out_kill;
- }
- ok(state == POPEN_STATE_SIGNALED, "child terminated");
-
-out_kill:
- rc = popen_delete(handle);
- ok(rc == 0, "popen_delete");
-
-out:
- footer();
- return rc | check_plan();
-}
-
-static int
-main_f(va_list ap)
-{
- int rc = 0;
-
- rc |= popen_write_exit();
- rc |= popen_read_exit();
- rc |= popen_kill();
-
- ev_break(loop(), EVBREAK_ALL);
- return 0;
-}
-
-
-int
-main(int argc, char *argv[])
-{
- //say_logger_init(NULL, S_DEBUG, 0, "plain", 0);
- memory_init();
-
- fiber_init(fiber_c_invoke);
- popen_init();
- coio_init();
- coio_enable();
-
- if (!loop())
- panic("%s", "can't init event loop");
-
- struct fiber *test = fiber_new("coio_stat", main_f);
- fiber_wakeup(test);
-
- ev_now_update(loop());
- ev_run(loop(), 0);
- popen_free();
- fiber_free();
- memory_free();
-
- return check_plan();
-}
diff --git a/test/unit/popen.result b/test/unit/popen.result
deleted file mode 100644
index f9ffa008f..000000000
--- a/test/unit/popen.result
+++ /dev/null
@@ -1,28 +0,0 @@
-# write 5 bytes '12345'
-# read 9 bytes '1 2 3 4 5'
-
-1..7
- *** popen_write_exit ***
-ok 1 - popen_new
-ok 2 - popen_state
-ok 3 - state alive
-ok 4 - write flag check
-ok 5 - write 12345 (5 bytes)
-ok 6 - child exited
-ok 7 - popen_delete
- *** popen_write_exit: done ***
-1..5
- *** popen_read_exit ***
-ok 1 - popen_new
-ok 2 - child exited
-ok 3 - read flag check
-ok 4 - read 1 2 3 4 5 (9 bytes)
-ok 5 - popen_delete
- *** popen_read_exit: done ***
-1..4
- *** popen_kill ***
-ok 1 - popen_new
-ok 2 - popen_send_signal
-ok 3 - child terminated
-ok 4 - popen_delete
- *** popen_kill: done ***
--
2.20.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Tarantool-patches] [PATCH 0/2] popen: fixes to make master branch happy
2020-02-28 9:48 [Tarantool-patches] [PATCH 0/2] popen: fixes to make master branch happy Cyrill Gorcunov
2020-02-28 9:48 ` [Tarantool-patches] [PATCH 1/2] popen: fix empty envp type for nonlinux builds Cyrill Gorcunov
2020-02-28 9:48 ` [Tarantool-patches] [PATCH 2/2] Revert "test: unit/popen" Cyrill Gorcunov
@ 2020-02-28 11:42 ` Alexander Turenko
2020-02-28 11:55 ` Alexander Turenko
3 siblings, 0 replies; 5+ messages in thread
From: Alexander Turenko @ 2020-02-28 11:42 UTC (permalink / raw)
To: Cyrill Gorcunov; +Cc: tml
Pushed to master, but disabled the test rather than remove it.
WBR, Alexander Turenko.
On Fri, Feb 28, 2020 at 12:48:13PM +0300, Cyrill Gorcunov wrote:
> The rule of thumb is to keep master branch in good shape so that
> it will be used to verify own work on top. The popen test cause
> some problems which I have to rework thus just revert it.
>
> Also fix popen build on non linux machines.
>
> branch gorcunov/gh-4031-popen-fixes-2
>
> Cyrill Gorcunov (2):
> popen: fix empty envp type for nonlinux builds
> Revert "test: unit/popen"
>
> src/lib/core/popen.c | 2 +-
> test/unit/CMakeLists.txt | 3 -
> test/unit/popen.c | 253 ---------------------------------------
> test/unit/popen.result | 28 -----
> 4 files changed, 1 insertion(+), 285 deletions(-)
> delete mode 100644 test/unit/popen.c
> delete mode 100644 test/unit/popen.result
>
>
> base-commit: 40a516477aa337b3d15184f99bb1ec1a3095d60a
> --
> 2.20.1
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Tarantool-patches] [PATCH 0/2] popen: fixes to make master branch happy
2020-02-28 9:48 [Tarantool-patches] [PATCH 0/2] popen: fixes to make master branch happy Cyrill Gorcunov
` (2 preceding siblings ...)
2020-02-28 11:42 ` [Tarantool-patches] [PATCH 0/2] popen: fixes to make master branch happy Alexander Turenko
@ 2020-02-28 11:55 ` Alexander Turenko
3 siblings, 0 replies; 5+ messages in thread
From: Alexander Turenko @ 2020-02-28 11:55 UTC (permalink / raw)
To: Cyrill Gorcunov; +Cc: tml
Due to -Werror error on the test reverted its disabling and reverted the
test itself.
WBR, Alexander Turenko.
On Fri, Feb 28, 2020 at 12:48:13PM +0300, Cyrill Gorcunov wrote:
> The rule of thumb is to keep master branch in good shape so that
> it will be used to verify own work on top. The popen test cause
> some problems which I have to rework thus just revert it.
>
> Also fix popen build on non linux machines.
>
> branch gorcunov/gh-4031-popen-fixes-2
>
> Cyrill Gorcunov (2):
> popen: fix empty envp type for nonlinux builds
> Revert "test: unit/popen"
>
> src/lib/core/popen.c | 2 +-
> test/unit/CMakeLists.txt | 3 -
> test/unit/popen.c | 253 ---------------------------------------
> test/unit/popen.result | 28 -----
> 4 files changed, 1 insertion(+), 285 deletions(-)
> delete mode 100644 test/unit/popen.c
> delete mode 100644 test/unit/popen.result
>
>
> base-commit: 40a516477aa337b3d15184f99bb1ec1a3095d60a
> --
> 2.20.1
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-02-28 11:55 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-28 9:48 [Tarantool-patches] [PATCH 0/2] popen: fixes to make master branch happy Cyrill Gorcunov
2020-02-28 9:48 ` [Tarantool-patches] [PATCH 1/2] popen: fix empty envp type for nonlinux builds Cyrill Gorcunov
2020-02-28 9:48 ` [Tarantool-patches] [PATCH 2/2] Revert "test: unit/popen" Cyrill Gorcunov
2020-02-28 11:42 ` [Tarantool-patches] [PATCH 0/2] popen: fixes to make master branch happy Alexander Turenko
2020-02-28 11:55 ` Alexander Turenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox