{"thread":{"id":"46745","subject":"[PATCH] test-lib: don't use ulimit in test prerequisites on cygwin","startedAt":"2017-09-13T19:00:56Z","lastAt":"2017-09-15T19:33:15Z","messageCount":11,"participants":["Ramsay Jones","Jonathan Nieder","Michael J Gruber","Johannes Schindelin"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"327988","messageId":"b57731ed-4640-d27f-f7b2-6c70af8dd400@ramsayjones.plus.com","threadId":"46745","inReplyTo":null,"subject":"[PATCH] test-lib: don't use ulimit in test prerequisites on cygwin","fromName":"Ramsay Jones","fromEmail":"ramsay@ramsayjones.plus.com","sentAt":"2017-09-13T19:00:47Z","receivedAt":"2017-09-13T19:00:56Z","isPatch":true,"sender":{"key":"ramsay@ramsayjones.plus.com","avatar":"https://avatars.githubusercontent.com/u/33702710?v=4"},"body":"\nOn cygwin (and MinGW), the 'ulimit' built-in bash command does not have\nthe desired effect of limiting the resources of new processes, at least\nfor the stack and file descriptors. However, it always returns success\nand leads to several test prerequisites being erroneously set to true.\n\nAdd a check for cygwin and MinGW to the prerequisite expressions, using\n'uname -s', and return false instead of (indirectly) using 'ulimit'.\nThis affects the prerequisite expressions for the ULIMIT_STACK_SIZE,\nCMDLINE_LIMIT and ULIMIT_FILE_DESCRIPTORS prerequisites.\n\nSigned-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>\n---\n\nHi Michael,\n\nSo, I finally got around to testing ulimit with open files and\nfound that it does not limit them on cygwin (it actually fails\non the hard limit of 3200). Having seen Johannes email earlier,\nI took a chance and added MinGW to this patch as well. (Hopefully\nthis won't cause any screams!) ;-)\n\nSo, this patch was developed on top of the 'pu' branch, but it\nalso applies cleanly to your 'mg/name-rev-tests-with-short-stack'\nbranch (ie. on top of commit 31625b34c0).\n\nIf you are going to re-roll your branch, could you please add this\non top (after squashing the two comment deletions into your earlier\npatches, maybe).\n\nThanks!\n\nATB,\nRamsay Jones\n\n t/t1400-update-ref.sh | 11 ++++++++++-\n t/t6120-describe.sh   |  1 -\n t/t7004-tag.sh        |  1 -\n t/test-lib.sh         | 22 ++++++++++++++++++++--\n 4 files changed, 30 insertions(+), 5 deletions(-)\n\ndiff --git a/t/t1400-update-ref.sh b/t/t1400-update-ref.sh\nindex dc98b4bc6..49415074f 100755\n--- a/t/t1400-update-ref.sh\n+++ b/t/t1400-update-ref.sh\n@@ -1253,7 +1253,16 @@ run_with_limited_open_files () {\n \t(ulimit -n 32 && \"$@\")\n }\n \n-test_lazy_prereq ULIMIT_FILE_DESCRIPTORS 'run_with_limited_open_files true'\n+test_lazy_prereq ULIMIT_FILE_DESCRIPTORS '\n+\tcase $(uname -s) in\n+\tCYGWIN*|MINGW*)\n+\t\tfalse\n+\t\t;;\n+\t*)\n+\t\trun_with_limited_open_files true\n+\t\t;;\n+\tesac\n+'\n \n test_expect_success ULIMIT_FILE_DESCRIPTORS 'large transaction creating branches does not burst open file limit' '\n (\ndiff --git a/t/t6120-describe.sh b/t/t6120-describe.sh\nindex dd6dd9df9..3d45dc295 100755\n--- a/t/t6120-describe.sh\n+++ b/t/t6120-describe.sh\n@@ -279,7 +279,6 @@ test_expect_success 'describe ignoring a borken submodule' '\n \tgrep broken out\n '\n \n-# we require ulimit, this excludes Windows\n test_expect_failure ULIMIT_STACK_SIZE 'name-rev works in a deep repo' '\n \ti=1 &&\n \twhile test $i -lt 8000\ndiff --git a/t/t7004-tag.sh b/t/t7004-tag.sh\nindex 5bf5ace56..b545c33f8 100755\n--- a/t/t7004-tag.sh\n+++ b/t/t7004-tag.sh\n@@ -1863,7 +1863,6 @@ test_expect_success 'version sort with very long prerelease suffix' '\n \tgit tag -l --sort=version:refname\n '\n \n-# we require ulimit, this excludes Windows\n test_expect_success ULIMIT_STACK_SIZE '--contains and --no-contains work in a deep repo' '\n \t>expect &&\n \ti=1 &&\ndiff --git a/t/test-lib.sh b/t/test-lib.sh\nindex 83f5d3dd2..250ba5e9b 100644\n--- a/t/test-lib.sh\n+++ b/t/test-lib.sh\n@@ -1170,13 +1170,31 @@ run_with_limited_cmdline () {\n \t(ulimit -s 128 && \"$@\")\n }\n \n-test_lazy_prereq CMDLINE_LIMIT 'run_with_limited_cmdline true'\n+test_lazy_prereq CMDLINE_LIMIT '\n+\tcase $(uname -s) in\n+\tCYGWIN*|MINGW*)\n+\t\tfalse\n+\t\t;;\n+\t*)\n+\t\trun_with_limited_cmdline true\n+\t\t;;\n+\tesac\n+'\n \n run_with_limited_stack () {\n \t(ulimit -s 128 && \"$@\")\n }\n \n-test_lazy_prereq ULIMIT_STACK_SIZE 'run_with_limited_stack true'\n+test_lazy_prereq ULIMIT_STACK_SIZE '\n+\tcase $(uname -s) in\n+\tCYGWIN*|MINGW*)\n+\t\tfalse\n+\t\t;;\n+\t*)\n+\t\trun_with_limited_stack true\n+\t\t;;\n+\tesac\n+'\n \n build_option () {\n \tgit version --build-options |\n-- \n2.14.0\n"},{"id":"327991","messageId":"20170913192038.GH27425@aiede.mtv.corp.google.com","threadId":"46745","inReplyTo":"b57731ed-4640-d27f-f7b2-6c70af8dd400@ramsayjones.plus.com","subject":"Re: [PATCH] test-lib: don't use ulimit in test prerequisites on cygwin","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2017-09-13T19:20:38Z","receivedAt":"2017-09-13T19:20:46Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Ramsay Jones wrote:\n\n> On cygwin (and MinGW), the 'ulimit' built-in bash command does not have\n> the desired effect of limiting the resources of new processes, at least\n> for the stack and file descriptors. However, it always returns success\n> and leads to several test prerequisites being erroneously set to true.\n>\n> Add a check for cygwin and MinGW to the prerequisite expressions, using\n> 'uname -s', and return false instead of (indirectly) using 'ulimit'.\n> This affects the prerequisite expressions for the ULIMIT_STACK_SIZE,\n> CMDLINE_LIMIT and ULIMIT_FILE_DESCRIPTORS prerequisites.\n>\n> Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>\n> ---\n>  t/t1400-update-ref.sh | 11 ++++++++++-\n>  t/t6120-describe.sh   |  1 -\n>  t/t7004-tag.sh        |  1 -\n>  t/test-lib.sh         | 22 ++++++++++++++++++++--\n>  4 files changed, 30 insertions(+), 5 deletions(-)\n\nReviewed-by: Jonathan Nieder <jrnieder@gmail.com>\n\nThanks.\n\nAn alternative would be to do some more explicit feature-based test\nlike using \"ulimit\" to set a limit and then reading back the limit in\na separate process, but that feels like overkill.\n\nSincerely,\nJonathan\n"},{"id":"328036","messageId":"6a413ecf-47d6-e562-7cdd-e4c3a1d666e6@grubix.eu","threadId":"46745","inReplyTo":"20170913192038.GH27425@aiede.mtv.corp.google.com","subject":"Re: [PATCH] test-lib: don't use ulimit in test prerequisites on cygwin","fromName":"Michael J Gruber","fromEmail":"git@grubix.eu","sentAt":"2017-09-14T08:13:24Z","receivedAt":"2017-09-14T08:13:43Z","isPatch":true,"sender":{"key":"git@grubix.eu","avatar":"https://avatars.githubusercontent.com/u/233215?v=4"},"body":"Jonathan Nieder venit, vidit, dixit 13.09.2017 21:20:\n> Ramsay Jones wrote:\n> \n>> On cygwin (and MinGW), the 'ulimit' built-in bash command does not have\n>> the desired effect of limiting the resources of new processes, at least\n>> for the stack and file descriptors. However, it always returns success\n>> and leads to several test prerequisites being erroneously set to true.\n>>\n>> Add a check for cygwin and MinGW to the prerequisite expressions, using\n>> 'uname -s', and return false instead of (indirectly) using 'ulimit'.\n>> This affects the prerequisite expressions for the ULIMIT_STACK_SIZE,\n>> CMDLINE_LIMIT and ULIMIT_FILE_DESCRIPTORS prerequisites.\n>>\n>> Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>\n>> ---\n>>  t/t1400-update-ref.sh | 11 ++++++++++-\n>>  t/t6120-describe.sh   |  1 -\n>>  t/t7004-tag.sh        |  1 -\n>>  t/test-lib.sh         | 22 ++++++++++++++++++++--\n>>  4 files changed, 30 insertions(+), 5 deletions(-)\n> \n> Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>\n> \n> Thanks.\n> \n> An alternative would be to do some more explicit feature-based test\n> like using \"ulimit\" to set a limit and then reading back the limit in\n> a separate process, but that feels like overkill.\n\nIt's still not clear whether these limits would be in effect or just\nreported.\n\nRather than checking uname -s in several places, I think we should just\ndefine ulimit to be false in one place, or rather set the prerequisite\nthere.\n\nMichael\n"},{"id":"328047","messageId":"alpine.DEB.2.21.1.1709141440510.4132@virtualbox","threadId":"46745","inReplyTo":"b57731ed-4640-d27f-f7b2-6c70af8dd400@ramsayjones.plus.com","subject":"Re: [PATCH] test-lib: don't use ulimit in test prerequisites on cygwin","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-09-14T12:54:39Z","receivedAt":"2017-09-14T12:55:12Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Ramsay,\n\nOn Wed, 13 Sep 2017, Ramsay Jones wrote:\n\n> So, I finally got around to testing ulimit with open files and\n> found that it does not limit them on cygwin (it actually fails\n> on the hard limit of 3200).\n\nThank you!\n\n> Having seen Johannes email earlier, I took a chance and added MinGW to\n> this patch as well. (Hopefully this won't cause any screams!) ;-)\n\nIt earns you my gratitude instead.\n\nIf you want to see the difference between the MSYS2 runtime (Git for\nWindows flavor) and the Cygwin runtime, the patches applied on top of the\nCygwin runtime's source code can be seen here:\n\nhttps://github.com/git-for-windows/MSYS2-packages/tree/master/msys2-runtime\n\nThe current overall diff can be inspected here:\n\nhttps://github.com/git-for-windows/msys2-runtime/compare/aca9144e65ba...874e2c8efeed\n\nThe changes are not *all* that extensive, revolving more around the\nWindows <-> POSIX path conversion (I am actually no longer certain that\nthe characterisation of \"POSIX path\" is correct, think about VMS still\nbeing considered POSIX...).\n\nThere is also some stuff about environment variables, but that's about it.\n\nMost importantly, the core code (such as ulimit functionality) seems not\nto be changed at all IIAC.\n\nMeaning: I agree with your assessment to enable the workaround also for\n`uname -s` starting with MINGW.\n\nOne suggestion:\n\n> diff --git a/t/t1400-update-ref.sh b/t/t1400-update-ref.sh\n> index dc98b4bc6..49415074f 100755\n> --- a/t/t1400-update-ref.sh\n> +++ b/t/t1400-update-ref.sh\n> @@ -1253,7 +1253,16 @@ run_with_limited_open_files () {\n>  \t(ulimit -n 32 && \"$@\")\n>  }\n>  \n> -test_lazy_prereq ULIMIT_FILE_DESCRIPTORS 'run_with_limited_open_files true'\n> +test_lazy_prereq ULIMIT_FILE_DESCRIPTORS '\n> +\tcase $(uname -s) in\n> +\tCYGWIN*|MINGW*)\n> +\t\tfalse\n> +\t\t;;\n> +\t*)\n> +\t\trun_with_limited_open_files true\n> +\t\t;;\n> +\tesac\n> +'\n\nIt would be more semantically meanginful to do this instead:\n\n-test_lazy_prereq ULIMIT_FILE_DESCRIPTORS 'run_with_limited_open_files true'\n+test_lazy_prereq ULIMIT_FILE_DESCRIPTORS '\n+\ttest_have_prereq !MINGW,!CYGWIN && run_with_limited_open_files true\n+'\n\nIn other words, *spell out* that we want neither MINGW nor CYGWIN as\nprerequisites before testing ulimit with that shell function.\n\nIt would also be a little more succinct.\n\nCiao,\nDscho\n"},{"id":"328059","messageId":"4482ae18370f3e759bf98f71e15eaab19fdd009a.1505400392.git.git@grubix.eu","threadId":"46745","inReplyTo":"alpine.DEB.2.21.1.1709141440510.4132@virtualbox","subject":"[PATCH 1/2] test-lib: group system specific FIFO tests by system","fromName":"Michael J Gruber","fromEmail":"git@grubix.eu","sentAt":"2017-09-14T14:52:33Z","receivedAt":"2017-09-14T14:52:49Z","isPatch":true,"sender":{"key":"git@grubix.eu","avatar":"https://avatars.githubusercontent.com/u/233215?v=4"},"body":"test-lib determines whether a file-system supports FIFOs and needs to do\nspecial casing for CYGWIN and MINGW. This separates those system\nspecific settings from those at more central place.\n\nSet mkfifo()  to false in the central system specific place so that the\nsame test works everywhere.\n\nSigned-off-by: Michael J Gruber <git@grubix.eu>\n---\n t/test-lib.sh | 17 +++++++++--------\n 1 file changed, 9 insertions(+), 8 deletions(-)\n\ndiff --git a/t/test-lib.sh b/t/test-lib.sh\nindex 5fbd8d4a90..b8a0b05102 100644\n--- a/t/test-lib.sh\n+++ b/t/test-lib.sh\n@@ -994,6 +994,10 @@ case $uname_s in\n \tpwd () {\n \t\tbuiltin pwd -W\n \t}\n+\t# no FIFOs\n+\tmkfifo () {\n+\t\tfalse\n+\t}\n \t# no POSIX permissions\n \t# backslashes in pathspec are converted to '/'\n \t# exec does not inherit the PID\n@@ -1004,6 +1008,10 @@ case $uname_s in\n \tGIT_TEST_CMP=mingw_test_cmp\n \t;;\n *CYGWIN*)\n+\t# no FIFOs\n+\tmkfifo () {\n+\t\tfalse\n+\t}\n \ttest_set_prereq POSIXPERM\n \ttest_set_prereq EXECKEEPSPID\n \ttest_set_prereq CYGWIN\n@@ -1062,14 +1070,7 @@ test_i18ngrep () {\n \n test_lazy_prereq PIPE '\n \t# test whether the filesystem supports FIFOs\n-\tcase $(uname -s) in\n-\tCYGWIN*|MINGW*)\n-\t\tfalse\n-\t\t;;\n-\t*)\n-\t\trm -f testfifo && mkfifo testfifo\n-\t\t;;\n-\tesac\n+\trm -f testfifo && mkfifo testfifo\n '\n \n test_lazy_prereq SYMLINKS '\n-- \n2.14.1.712.gda4591c8a2\n\n"},{"id":"328060","messageId":"00b6d2a5508520635956da1d2db656bca126cd1a.1505400392.git.git@grubix.eu","threadId":"46745","inReplyTo":"alpine.DEB.2.21.1.1709141440510.4132@virtualbox","subject":"[PATCH 2/2] test-lib: ulimit does not limit on CYGWIN and MINGW","fromName":"Michael J Gruber","fromEmail":"git@grubix.eu","sentAt":"2017-09-14T14:52:34Z","receivedAt":"2017-09-14T14:53:00Z","isPatch":true,"sender":{"key":"git@grubix.eu","avatar":"https://avatars.githubusercontent.com/u/233215?v=4"},"body":"ulimit succeeds (by return value) but does not limit on some systems.\n\nSet ulimit() to false on these systems so that we do not rely on its\noutput nor effect. As an intended side-effect, ulimit based\nprerequisites are set correctly (to \"not-have\") on these systems.\n\nReported-by: Ramsay Jones <ramsay@ramsayjones.plus.com>\nReported-by: Adam Dinwoodie <adam@dinwoodie.org>\nReported-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>\nSigned-off-by: Michael J Gruber <git@grubix.eu>\n---\nThis is independent of my series, but should best go before so that no\nulimit based test is run on CYGWIN and MINGW.\n\nIt follows the basic assumption that a tool like ulimit is either\npresent and functional or not present; and that we work around by\ndefines or such when that assumption is broken.\n(Alternatively, we could set ULIMT_LIMITS or so and depend on that.)\n\n t/test-lib.sh | 8 ++++++++\n 1 file changed, 8 insertions(+)\n\ndiff --git a/t/test-lib.sh b/t/test-lib.sh\nindex b8a0b05102..f6ac60d487 100644\n--- a/t/test-lib.sh\n+++ b/t/test-lib.sh\n@@ -998,6 +998,10 @@ case $uname_s in\n \tmkfifo () {\n \t\tfalse\n \t}\n+\t# ulimit succeeds but does not limit\n+\tulimit () {\n+\t\tfalse\n+\t}\n \t# no POSIX permissions\n \t# backslashes in pathspec are converted to '/'\n \t# exec does not inherit the PID\n@@ -1012,6 +1016,10 @@ case $uname_s in\n \tmkfifo () {\n \t\tfalse\n \t}\n+\t# ulimit succeeds but does not limit\n+\tulimit () {\n+\t\tfalse\n+\t}\n \ttest_set_prereq POSIXPERM\n \ttest_set_prereq EXECKEEPSPID\n \ttest_set_prereq CYGWIN\n-- \n2.14.1.712.gda4591c8a2\n\n"},{"id":"328069","messageId":"5b0fcb15-cb02-92e4-29a9-39f45eda1786@ramsayjones.plus.com","threadId":"46745","inReplyTo":"00b6d2a5508520635956da1d2db656bca126cd1a.1505400392.git.git@grubix.eu","subject":"Re: [PATCH 2/2] test-lib: ulimit does not limit on CYGWIN and MINGW","fromName":"Ramsay Jones","fromEmail":"ramsay@ramsayjones.plus.com","sentAt":"2017-09-14T17:31:06Z","receivedAt":"2017-09-14T17:31:19Z","isPatch":true,"sender":{"key":"ramsay@ramsayjones.plus.com","avatar":"https://avatars.githubusercontent.com/u/33702710?v=4"},"body":"\n\nOn 14/09/17 15:52, Michael J Gruber wrote:\n> ulimit succeeds (by return value) but does not limit on some systems.\n> \n> Set ulimit() to false on these systems so that we do not rely on its\n> output nor effect. As an intended side-effect, ulimit based\n> prerequisites are set correctly (to \"not-have\") on these systems.\n> \n> Reported-by: Ramsay Jones <ramsay@ramsayjones.plus.com>\n> Reported-by: Adam Dinwoodie <adam@dinwoodie.org>\n> Reported-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>\n> Signed-off-by: Michael J Gruber <git@grubix.eu>\n> ---\n> This is independent of my series, but should best go before so that no\n> ulimit based test is run on CYGWIN and MINGW.\n> \n> It follows the basic assumption that a tool like ulimit is either\n> present and functional or not present; and that we work around by\n> defines or such when that assumption is broken.\n> (Alternatively, we could set ULIMT_LIMITS or so and depend on that.)\n\nHeh, this was my first suggestion, if you recall, but I decided to\ngo a different way ... ;-)\n\nAlso, Johannes made a good suggestion, which lead to a new version\nof my patch (which could easily be extended to cover the FIFO).\n\nI don't have a strong preference for either approach (but I would\nhave to test your patches, which I haven't done yet), so I would\nbe happy to see either applied.\n\nATB,\nRamsay Jones\n"},{"id":"328083","messageId":"alpine.DEB.2.21.1.1709150020070.219280@virtualbox","threadId":"46745","inReplyTo":"4482ae18370f3e759bf98f71e15eaab19fdd009a.1505400392.git.git@grubix.eu","subject":"Re: [PATCH 1/2] test-lib: group system specific FIFO tests by system","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-09-14T22:21:00Z","receivedAt":"2017-09-14T22:21:21Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Michael,\n\nOn Thu, 14 Sep 2017, Michael J Gruber wrote:\n\n> test-lib determines whether a file-system supports FIFOs and needs to do\n> special casing for CYGWIN and MINGW. This separates those system\n> specific settings from those at more central place.\n> \n> Set mkfifo()  to false in the central system specific place so that the\n> same test works everywhere.\n\nThe mkfifo() emulation of Cygwin seems to work, no? I think it works even\nin MSYS2, but not in MINGW.\n\nSo maybe this patch should affect only the MINGW arm?\n\nCiao,\nDscho\n"},{"id":"328114","messageId":"a159230a-d406-c772-13f0-f82a36faf763@grubix.eu","threadId":"46745","inReplyTo":"alpine.DEB.2.21.1.1709150020070.219280@virtualbox","subject":"Re: [PATCH 1/2] test-lib: group system specific FIFO tests by system","fromName":"Michael J Gruber","fromEmail":"git@grubix.eu","sentAt":"2017-09-15T10:31:32Z","receivedAt":"2017-09-15T10:31:46Z","isPatch":true,"sender":{"key":"git@grubix.eu","avatar":"https://avatars.githubusercontent.com/u/233215?v=4"},"body":"Johannes Schindelin venit, vidit, dixit 15.09.2017 00:21:\n> Hi Michael,\n> \n> On Thu, 14 Sep 2017, Michael J Gruber wrote:\n> \n>> test-lib determines whether a file-system supports FIFOs and needs to do\n>> special casing for CYGWIN and MINGW. This separates those system\n>> specific settings from those at more central place.\n>>\n>> Set mkfifo()  to false in the central system specific place so that the\n>> same test works everywhere.\n> \n> The mkfifo() emulation of Cygwin seems to work, no? I think it works even\n> in MSYS2, but not in MINGW.\n> \n> So maybe this patch should affect only the MINGW arm?\n\nI only reorganised the code, so in that sense the patch does not affect\nany system ;)\n\nIf indeed mkfifo works on CYGWIN than a separate patch should remove the\nexclusion of CYGWIN; alas, I can't confirm (I wish MS still had the old\nacademic alliance programme).\n\nMichael\n"},{"id":"328130","messageId":"42f879a9-c85a-2662-18e2-a5a26e8fb02e@ramsayjones.plus.com","threadId":"46745","inReplyTo":"a159230a-d406-c772-13f0-f82a36faf763@grubix.eu","subject":"Re: [PATCH 1/2] test-lib: group system specific FIFO tests by system","fromName":"Ramsay Jones","fromEmail":"ramsay@ramsayjones.plus.com","sentAt":"2017-09-15T16:38:56Z","receivedAt":"2017-09-15T16:39:03Z","isPatch":true,"sender":{"key":"ramsay@ramsayjones.plus.com","avatar":"https://avatars.githubusercontent.com/u/33702710?v=4"},"body":"\n\nOn 15/09/17 11:31, Michael J Gruber wrote:\n> Johannes Schindelin venit, vidit, dixit 15.09.2017 00:21:\n>> Hi Michael,\n>>\n>> On Thu, 14 Sep 2017, Michael J Gruber wrote:\n>>\n>>> test-lib determines whether a file-system supports FIFOs and needs to do\n>>> special casing for CYGWIN and MINGW. This separates those system\n>>> specific settings from those at more central place.\n>>>\n>>> Set mkfifo()  to false in the central system specific place so that the\n>>> same test works everywhere.\n>>\n>> The mkfifo() emulation of Cygwin seems to work, no? I think it works even\n>> in MSYS2, but not in MINGW.\n>>\n>> So maybe this patch should affect only the MINGW arm?\n> \n> I only reorganised the code, so in that sense the patch does not affect\n> any system ;)\n> \n> If indeed mkfifo works on CYGWIN than a separate patch should remove the\n> exclusion of CYGWIN; alas, I can't confirm (I wish MS still had the old\n> academic alliance programme).\n\nI haven't tried recently, but back in 2013 Mark Levedahl wrote\nin his commit message that mkfifo was known not to work on the cygwin\nmailing list. (see commit 9443605b5d, \"test-lib.sh - cygwin does\nnot have usable FIFOs\", 04-07-2013) In fact, you can see that this\nwas disabled on cygwin before MinGW!\n\nIt is possible, of course, that fifos now work on cygwin. (I will\nput it on my TODO list).\n\nIn any event, this is indeed a separate issue.\n\nATB,\nRamsay Jones\n\n"},{"id":"328159","messageId":"alpine.DEB.2.21.1.1709152128000.219280@virtualbox","threadId":"46745","inReplyTo":"a159230a-d406-c772-13f0-f82a36faf763@grubix.eu","subject":"Re: [PATCH 1/2] test-lib: group system specific FIFO tests by system","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2017-09-15T19:32:53Z","receivedAt":"2017-09-15T19:33:15Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Michael,\n\nOn Fri, 15 Sep 2017, Michael J Gruber wrote:\n\n> Johannes Schindelin venit, vidit, dixit 15.09.2017 00:21:\n> > \n> > On Thu, 14 Sep 2017, Michael J Gruber wrote:\n> > \n> >> test-lib determines whether a file-system supports FIFOs and needs to do\n> >> special casing for CYGWIN and MINGW. This separates those system\n> >> specific settings from those at more central place.\n> >>\n> >> Set mkfifo()  to false in the central system specific place so that the\n> >> same test works everywhere.\n> > \n> > The mkfifo() emulation of Cygwin seems to work, no? I think it works even\n> > in MSYS2, but not in MINGW.\n> > \n> > So maybe this patch should affect only the MINGW arm?\n> \n> I only reorganised the code, so in that sense the patch does not affect\n> any system ;)\n> \n> If indeed mkfifo works on CYGWIN than a separate patch should remove the\n> exclusion of CYGWIN; alas, I can't confirm (I wish MS still had the old\n> academic alliance programme).\n\nYou don't need an academic license, as there are free VMs available (they\nexpire after a while, though):\n\nhttps://developer.microsoft.com/en-us/windows/downloads/virtual-machines\n\nIt seems that the current free VM will expire in 4 days. After that,\nprobably a new one will be available that expires some time later (not\nsure about the exact time frame of those VMs).\n\nAlternatively, you can download VMs meant for web testing at\nhttps://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ which\nexpire after 90 days.\n\nCiao,\nDscho\n"}]}