Skip to content

Add src/... to test_rules_scala, fix Windows break #1724

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 28, 2025

Conversation

mbland
Copy link
Contributor

@mbland mbland commented Apr 27, 2025

Description

Adds src/... to the bazel build and bazel test commands in test_rules_scala.sh to follow up on #1719 and #1721.

Also includes:

  • Adding --test_output=errors to each bazel test invocation to make failure messages visible in the CI logs.

  • Joining the contents lines in WorkerTest.testPersistentWorkerArgsfile using the line.separator system property to fix a test failure on Windows.

  • Swapping the arguments of assertEquals() assertions to expected, actual instead of actual, expected to fit the assertion failure messages.

Motivation

After adding src/... to the bazel test commands in test_rules_scala.sh the first time, the Windows build failed with:

//src/java/io/bazel/rulesscala/worker:worker_test  FAILED in 1.1s
  C:/.../testlogs/src/java/io/bazel/rulesscala/worker/worker_test/test.log

Executed 120 out of 120 tests: 119 tests pass and 1 fails locally.
 Test "bazel test src/... test/..." failed  (18 sec)

Traceback (most recent call last):
  File "c:\b\bk-windows-gd7g\bazel\rules-scala-scala\bazelci.py",
    line 4528, in <module>
      sys.exit(main())
               ^^^^^^
  File "c:\b\bk-windows-gd7g\bazel\rules-scala-scala\bazelci.py",
    line 4496, in main
      execute_commands(
  File "c:\b\bk-windows-gd7g\bazel\rules-scala-scala\bazelci.py",
    line 1232, in execute_commands
      PrepareRepoInCwd(True, initial_setup=True)
  File "c:\b\bk-windows-gd7g\bazel\rules-scala-scala\bazelci.py",
    line 1228, in PrepareRepoInCwd
      execute_batch_commands(task_config.get("batch_commands", None), print_cmd_groups)
  File "c:\b\bk-windows-gd7g\bazel\rules-scala-scala\bazelci.py",
    line 1741, in execute_batch_commands
      return subprocess.run(batch_commands, shell=True, check=True, env=os.environ).returncode
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\python3\Lib\subprocess.py",
    line 571, in run
      raise CalledProcessError(retcode, process.args,

subprocess.CalledProcessError:
  Command 'set PATH=/usr/bin;%PATH%&bash -lc "pacman --noconfirm --needed -S libxml2"&bash test_rules_scala.sh'
  returned non-zero exit status 3

Updating the bazel test command to add --test_output=errors made the actual failure visible:

FAIL: //src/java/io/bazel/rulesscala/worker:worker_test
  (see C:/.../testlogs/src/java/io/bazel/rulesscala/worker/worker_test/test.log)

INFO: From Testing //src/java/io/bazel/rulesscala/worker:worker_test:
===== Test output for //src/java/io/bazel/rulesscala/worker:worker_test:
JUnit4 Test Runner
...E
Time: 0.432
There was 1 failure:
1) testPersistentWorkerArgsfile(io.bazel.rulesscala.worker.WorkerTest)
org.junit.ComparisonFailure: expected:<line 1[
--flag_1
]ome arg
> but was:<line 1[
--flag_1
some arg]
>
  at org.junit.Assert.assertEquals(Assert.java:117)
  at org.junit.Assert.assertEquals(Assert.java:146)
  at io.bazel.rulesscala.worker.WorkerTest.testPersistentWorkerArgsfile(WorkerTest.java:73)
FAILURES!!!
Tests run: 3,  Failures: 1

This was due to the line.separator system property being \r\n on Windows, and \n on every other platform. Notice the ]ome arg line, and the fact that this appeared as the expected: value in the assertion failure message.

Adds `src/...` to the `bazel build` and `bazel test` commands in
`test_rules_scala.sh` to follow up on bazel-contrib#1719 and bazel-contrib#1721.

Also includes:

- Adding `--test_output=errors` to each `bazel test` invocation to make
  failure messages visible in the CI logs.

- Joining the `contents` lines in
  `WorkerTest.testPersistentWorkerArgsfile` using the `line.separator`
  system property to fix a test failure on Windows.

- Swapping the arguments of `assertEquals()` assertions to `expected,
  actual` instead of `actual, expected` to fit the assertion failure
  messages.

---

After adding `src/...` to the `bazel test` commands in
`test_rules_scala.sh` the first time, the Windows build failed with:

- https://buildkite.com/bazel/rules-scala-scala/builds/5511#0195e775-498c-4ae5-b308-34cc70da65c4/75-257

```txt
//src/java/io/bazel/rulesscala/worker:worker_test  FAILED in 1.1s
  C:/.../testlogs/src/java/io/bazel/rulesscala/worker/worker_test/test.log

Executed 120 out of 120 tests: 119 tests pass and 1 fails locally.
 Test "bazel test src/... test/..." failed  (18 sec)

Traceback (most recent call last):
  File "c:\b\bk-windows-gd7g\bazel\rules-scala-scala\bazelci.py",
    line 4528, in <module>
      sys.exit(main())
               ^^^^^^
  File "c:\b\bk-windows-gd7g\bazel\rules-scala-scala\bazelci.py",
    line 4496, in main
      execute_commands(
  File "c:\b\bk-windows-gd7g\bazel\rules-scala-scala\bazelci.py",
    line 1232, in execute_commands
      PrepareRepoInCwd(True, initial_setup=True)
  File "c:\b\bk-windows-gd7g\bazel\rules-scala-scala\bazelci.py",
    line 1228, in PrepareRepoInCwd
      execute_batch_commands(task_config.get("batch_commands", None), print_cmd_groups)
  File "c:\b\bk-windows-gd7g\bazel\rules-scala-scala\bazelci.py",
    line 1741, in execute_batch_commands
      return subprocess.run(batch_commands, shell=True, check=True, env=os.environ).returncode
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\python3\Lib\subprocess.py",
    line 571, in run
      raise CalledProcessError(retcode, process.args,

subprocess.CalledProcessError:
  Command 'set PATH=/usr/bin;%PATH%&bash -lc "pacman --noconfirm --needed -S libxml2"&bash test_rules_scala.sh'
  returned non-zero exit status 3
```

Updating the `bazel test` command to add `--test_output=errors` made the
actual failure visible:

- https://buildkite.com/bazel/rules-scala-scala/builds/5513#0195e78b-6abc-42ea-95ee-8ddce41a64fb

```txt
FAIL: //src/java/io/bazel/rulesscala/worker:worker_test
  (see C:/.../testlogs/src/java/io/bazel/rulesscala/worker/worker_test/test.log)

INFO: From Testing //src/java/io/bazel/rulesscala/worker:worker_test:
===== Test output for //src/java/io/bazel/rulesscala/worker:worker_test:
JUnit4 Test Runner
...E
Time: 0.432
There was 1 failure:
1) testPersistentWorkerArgsfile(io.bazel.rulesscala.worker.WorkerTest)
org.junit.ComparisonFailure: expected:<line 1[
--flag_1
]ome arg
> but was:<line 1[
--flag_1
some arg]
>
  at org.junit.Assert.assertEquals(Assert.java:117)
  at org.junit.Assert.assertEquals(Assert.java:146)
  at io.bazel.rulesscala.worker.WorkerTest.testPersistentWorkerArgsfile(WorkerTest.java:73)
FAILURES!!!
Tests run: 3,  Failures: 1
```

This was due to the `line.separator` system property being `\r\n` on
Windows, and `\n` on every other platform. Notice the `]ome arg` line,
and the fact that this appeared as the `expected:` value in the
assertion failure message.
@simuons simuons merged commit 974b661 into bazel-contrib:master Apr 28, 2025
2 checks passed
@mbland mbland deleted the test-src branch April 28, 2025 11:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants