actions / actions/runner

Windows Runner Drops CTest Failure Output

Open
#1,206 22 comments 5 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug Runner Bug
Dominant language
C#
Stars
6.3k
Forks
1.4k
Avg merge
1d 16h
Merged PRs (30d)
24

Description

Describe the bug

On Windows, runner drops terminal output from the test scenarios spawned by ctest.

Working on Actions + Linux:
https://github.com/equalsraf/neovim-qt/pull/885/checks?check_run_id=3094273077

Working on AppVeyor + Win:
https://ci.appveyor.com/project/equalsraf/neovim-qt/builds/40031037/job/ddhiyj6vtqyaclt9

No Output on Actions + Win:
https://github.com/equalsraf/neovim-qt/pull/885/checks?check_run_id=3094273084

You can RDP into the Windows runner, manually run the test and observe the correct output.

The output is being dropped by the GitHub Actions Runner.

See https://github.com/equalsraf/neovim-qt/issues/884 for more details.

To Reproduce

Example scenario: https://github.com/equalsraf/neovim-qt/pull/885

  1. Run ctest within the action containing failures on Linux and Windows
  2. Notice failure output is present on Linux: FAIL! : ...
  3. Notice Windows drops failure output only when run inside GitHub Actions. No FAIL!: ... or PASS: ...

Expected behavior

GitHub actions should pipe output from ctest, and output from the tests it spawns.

You should see output for the failing tests such as tst_encoding. FAIL!: ...

Runner Version and Platform

Latest Github Actions hosted runner.

Does not work with windows-latest.

Works with ubuntu-latest and macos-latest.

AppVeyor + Windows example provided to demonstrate the underlying code works on Windows.

What's not working?

Please include error messages and screenshots.

Output from the failing test cases is missing. Only for GitHub Actions hosted instances running Windows.

Linux/MacOS work fine. Other CI tools work fine.

Actions + Linux (Good):

12/19 Test #12: tst_input_common_unix ............***Failed    0.05 sec
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-runner'
********* Start testing of TestInputCommon *********
Config: Using QtTest library 5.12.8, Qt 5.12.8 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 9.3.0)
PASS   : TestInputCommon::initTestCase()
FAIL!  : TestInputCommon::LessThanKey() 'false' returned FALSE. ()
   Loc: [../test/tst_input_common.cpp(32)]
PASS   : TestInputCommon::ModifierOnlyKeyEventsIgnored()
PASS   : TestInputCommon::VolumeKeysIgnored()
PASS   : TestInputCommon::ShiftKeyEventWellFormed()
PASS   : TestInputCommon::CapsLockIgnored()
PASS   : TestInputCommon::AltGrAloneIgnored()
PASS   : TestInputCommon::AltGrKeyEventWellFormed()
PASS   : TestInputCommon::ShiftSpaceWellFormed()
PASS   : TestInputCommon::ShiftBackSpaceWellFormed()
PASS   : TestInputCommon::MouseLeftClick()
PASS   : TestInputCommon::MouseRightClick()
PASS   : TestInputCommon::MouseMiddleClick()
PASS   : TestInputCommon::cleanupTestCase()
Totals: 13 passed, 1 failed, 0 skipped, 0 blacklisted, 1ms
********* Finished testing of TestInputCommon *********

      Start 13: tst_input_common_win32

AppVeyor + Windows (Good):

12: Test command: C:\projects\neovim-qt\build\bin\tst_input_common_unix.exe
12: Test timeout computed to be: 10000000
12: ********* Start testing of TestInputCommon *********
12: Config: Using QtTest library 5.15.2, Qt 5.15.2 (x86_64-little_endian-llp64 shared (dynamic) release build; by GCC 8.1.0), windows server2016
12: PASS   : TestInputCommon::initTestCase()
12: FAIL!  : TestInputCommon::LessThanKey() 'false' returned FALSE. ()
12: C:\projects\neovim-qt\test\tst_input_common.cpp(32) : failure location
12: PASS   : TestInputCommon::ModifierOnlyKeyEventsIgnored()
12: PASS   : TestInputCommon::VolumeKeysIgnored()
12: PASS   : TestInputCommon::ShiftKeyEventWellFormed()
12: PASS   : TestInputCommon::CapsLockIgnored()
12: PASS   : TestInputCommon::AltGrAloneIgnored()
12: PASS   : TestInputCommon::AltGrKeyEventWellFormed()
12: PASS   : TestInputCommon::ShiftSpaceWellFormed()
12: PASS   : TestInputCommon::ShiftBackSpaceWellFormed()
12: PASS   : TestInputCommon::MouseLeftClick()
12: PASS   : TestInputCommon::MouseRightClick()
12: PASS   : TestInputCommon::MouseMiddleClick()
12: PASS   : TestInputCommon::cleanupTestCase()
12: Totals: 13 passed, 1 failed, 0 skipped, 0 blacklisted, 1ms
12: ********* Finished testing of TestInputCommon *********
12/19 Test #12: tst_input_common_unix ............***Failed    0.05 sec
test 13
      Start 13: tst_input_common_win32

Actions + Windows (Bad):

12/19 Test #12: tst_input_common_unix ............***Failed    0.04 sec

      Start 13: tst_input_common_win32

Runner and Worker's Diagnostic Logs

Here are logs from the example above:

logs_269.zip

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the attached runner diagnostic logs and the ctest reproduction in PR 885, comparing Windows Actions output with the Linux and AppVeyor examples and issue 884. Trace how the GitHub Actions Runner handles output from spawned ctest processes; done means Windows hosted runs show the QtTest PASS/FAIL lines and failure details.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, github-actions
Domain
ci-cd, devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.