Fix diff_test on Windows with --enable_runfiles --nolegacy_external_runfiles (#378)
And make sure our test suite exercises both manifest-based and runfiles-based
code paths for diff_test.
Fixes #376.
diff --git a/rules/diff_test.bzl b/rules/diff_test.bzl
index 04bf26b..25213d6 100644
--- a/rules/diff_test.bzl
+++ b/rules/diff_test.bzl
@@ -46,8 +46,14 @@
set RF1=!RF1:/=\\!
)
if "!RF1!" equ "" (
- if exist "{file1}" (
- set RF1="{file1}"
+ if "%RUNFILES_MANIFEST_ONLY%" neq "1" if exist "%RUNFILES_DIR%\\%F1%" (
+ set RF1="%RUNFILES_DIR%\\%F1%"
+ ) else (
+ if exist "{file1}" (
+ set RF1="{file1}"
+ )
+ )
+ if "!RF1!" neq "" (
set RF1=!RF1:/=\\!
) else (
echo>&2 ERROR: !F1! not found
@@ -59,8 +65,14 @@
set RF2=!RF2:/=\\!
)
if "!RF2!" equ "" (
- if exist "{file2}" (
- set RF2="{file2}"
+ if "%RUNFILES_MANIFEST_ONLY%" neq "1" if exist "%RUNFILES_DIR%\\%F2%" (
+ set RF2="%RUNFILES_DIR%\\%F2%"
+ ) else (
+ if exist "{file2}" (
+ set RF2="{file2}"
+ )
+ )
+ if "!RF2!" neq "" (
set RF2=!RF2:/=\\!
) else (
echo>&2 ERROR: !F2! not found
diff --git a/tests/diff_test/diff_test_tests.sh b/tests/diff_test/diff_test_tests.sh
index 619612e..13b3a3e 100755
--- a/tests/diff_test/diff_test_tests.sh
+++ b/tests/diff_test/diff_test_tests.sh
@@ -54,7 +54,7 @@
}
function assert_simple_diff_test() {
- local -r flag="$1"
+ local -r flags="$1"
local -r ws="${TEST_TMPDIR}/$2"
local -r subdir="$3"
@@ -80,17 +80,17 @@
echo bar > "$ws/$subdir/b.txt"
(cd "$ws" && \
- bazel test "$flag" "//${subdir%/}:same" --test_output=errors 1>"$TEST_log" 2>&1 \
+ bazel test ${flags} "//${subdir%/}:same" --test_output=errors 1>"$TEST_log" 2>&1 \
|| fail "expected success")
(cd "$ws" && \
- bazel test "$flag" "//${subdir%/}:different" --test_output=errors 1>"$TEST_log" 2>&1 \
+ bazel test ${flags} "//${subdir%/}:different" --test_output=errors 1>"$TEST_log" 2>&1 \
&& fail "expected failure" || true)
expect_log "FAIL: files \"${subdir}a.txt\" and \"${subdir}b.txt\" differ"
}
function assert_from_ext_repo() {
- local -r flag="$1"
+ local -r flags="$1"
local -r ws="${TEST_TMPDIR}/$2"
# Import the rule to an external repository.
@@ -175,47 +175,59 @@
eof
(cd "$ws/main" && \
- bazel test "$flag" //:same --test_output=errors 1>"$TEST_log" 2>&1 \
+ bazel test ${flags} //:same --test_output=errors 1>"$TEST_log" 2>&1 \
|| fail "expected success")
(cd "$ws/main" && \
- bazel test "$flag" //:different1 --test_output=errors 1>"$TEST_log" 2>&1 \
+ bazel test ${flags} //:different1 --test_output=errors 1>"$TEST_log" 2>&1 \
&& fail "expected failure" || true)
expect_log 'FAIL: files "external/ext1/foo/foo.txt" and "external/ext2/foo/bar.txt" differ'
(cd "$ws/main" && \
- bazel test "$flag" //:different2 --test_output=errors 1>"$TEST_log" 2>&1 \
+ bazel test ${flags} //:different2 --test_output=errors 1>"$TEST_log" 2>&1 \
&& fail "expected failure" || true)
expect_log 'FAIL: files "external/ext1/foo/foo.txt" and "ext1/foo/foo.txt" differ'
(cd "$ws/main" && \
- bazel test "$flag" //:different3 --test_output=errors 1>"$TEST_log" 2>&1 \
+ bazel test ${flags} //:different3 --test_output=errors 1>"$TEST_log" 2>&1 \
&& fail "expected failure" || true)
expect_log 'FAIL: files "ext2/foo/foo.txt" and "external/ext2/foo/foo.txt" differ'
}
function test_simple_diff_test_with_legacy_external_runfiles() {
- assert_simple_diff_test "--legacy_external_runfiles" "${FUNCNAME[0]}" ""
+ assert_simple_diff_test "--enable_runfiles --legacy_external_runfiles" "${FUNCNAME[0]}" ""
}
function test_simple_diff_test_without_legacy_external_runfiles() {
- assert_simple_diff_test "--nolegacy_external_runfiles" "${FUNCNAME[0]}" ""
+ assert_simple_diff_test "--enable_runfiles --nolegacy_external_runfiles" "${FUNCNAME[0]}" ""
+}
+
+function test_simple_diff_test_with_manifest() {
+ assert_simple_diff_test "--noenable_runfiles" "${FUNCNAME[0]}" ""
}
function test_directory_named_external_with_legacy_external_runfiles() {
- assert_simple_diff_test "--legacy_external_runfiles" "${FUNCNAME[0]}" "path/to/direcotry/external/in/name/"
+ assert_simple_diff_test "--enable_runfiles --legacy_external_runfiles" "${FUNCNAME[0]}" "path/to/direcotry/external/in/name/"
}
function test_directory_named_external_without_legacy_external_runfiles() {
- assert_simple_diff_test "--nolegacy_external_runfiles" "${FUNCNAME[0]}" "path/to/direcotry/external/in/name/"
+ assert_simple_diff_test "--enable_runfiles --nolegacy_external_runfiles" "${FUNCNAME[0]}" "path/to/direcotry/external/in/name/"
+}
+
+function test_directory_named_external_with_manifest() {
+ assert_simple_diff_test "--noenable_runfiles" "${FUNCNAME[0]}" "path/to/direcotry/external/in/name/"
}
function test_from_ext_repo_with_legacy_external_runfiles() {
- assert_from_ext_repo "--legacy_external_runfiles" "${FUNCNAME[0]}"
+ assert_from_ext_repo "--enable_runfiles --legacy_external_runfiles" "${FUNCNAME[0]}"
}
function test_from_ext_repo_without_legacy_external_runfiles() {
- assert_from_ext_repo "--nolegacy_external_runfiles" "${FUNCNAME[0]}"
+ assert_from_ext_repo "--enable_runfiles --nolegacy_external_runfiles" "${FUNCNAME[0]}"
+}
+
+function test_from_ext_repo_with_manifest() {
+ assert_from_ext_repo "--noenable_runfiles" "${FUNCNAME[0]}"
}
function test_failure_message() {