mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-06 09:44:55 +01:00
Merge and label stdout/stderr for FileCheck (#2283)
Adds a simple script to merge stdout/stderr and put on labels. This is hidden to the RUN line using lit.cfg.py. This is my solution to addressing how errors printed by the toolchain break sorting of stdout output; just put stdout first. We could also have toggles for interleaving output or such, which might help test whether we do it properly. This also moves some previous-distributed replacement logic into lit_autoupdate_base.py: I think having that adjacent to lit.cfg.py is probably the better choice, and it reduces duplication in toolchain scripts. It happens here because I need to change the resulting commands to include the merge.
This commit is contained in:
+3
-3
@@ -2,10 +2,10 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
// CHECK:result: 1
|
||||
// CHECK:STDOUT: result: 1
|
||||
|
||||
package ExplorerTest api;
|
||||
|
||||
|
||||
+3
-3
@@ -2,8 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{not} %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{not} %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ external impl Point as Vector {
|
||||
fn Scale[me: Point](v: i32) -> Point {
|
||||
return {.x = me.x * v, .y = me.y * v};
|
||||
}
|
||||
// CHECK:COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_ambiguous_impl.carbon:[[@LINE+1]]: ambiguous implementations of interface Vector for class Point
|
||||
// CHECK:STDERR: COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_ambiguous_impl.carbon:[[@LINE+1]]: ambiguous implementations of interface Vector for class Point
|
||||
}
|
||||
|
||||
fn AddAndScaleGeneric[T:! Vector](a: T, b: T, s: i32) -> T {
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{not} %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{not} %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
|
||||
package ExplorerTest api;
|
||||
@@ -22,7 +22,7 @@ fn Main() -> i32 {
|
||||
let b: A(i32) = {};
|
||||
F(a);
|
||||
G(b);
|
||||
// CHECK:COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_ambiguous_impl_generic.carbon:[[@LINE+1]]: ambiguous implementations of interface B(T = i32) for class A(T = i32)
|
||||
// CHECK:STDERR: COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_ambiguous_impl_generic.carbon:[[@LINE+1]]: ambiguous implementations of interface B(T = i32) for class A(T = i32)
|
||||
F(b);
|
||||
return 0;
|
||||
}
|
||||
|
||||
+3
-3
@@ -2,8 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{not} %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{not} %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
|
||||
package ExplorerTest api;
|
||||
@@ -14,7 +14,7 @@ interface A {
|
||||
}
|
||||
|
||||
external impl i32 as A {
|
||||
// CHECK:SYNTAX ERROR: {{.*}}/explorer/testdata/impl/fail_bad_member_kind.carbon:[[@LINE+1]]: syntax error, unexpected CLASS, expecting ALIAS or FN or RIGHT_CURLY_BRACE
|
||||
// CHECK:STDERR: SYNTAX ERROR: {{.*}}/explorer/testdata/impl/fail_bad_member_kind.carbon:[[@LINE+1]]: syntax error, unexpected CLASS, expecting ALIAS or FN or RIGHT_CURLY_BRACE
|
||||
class T {}
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -2,13 +2,13 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{not} %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{not} %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
|
||||
package ExplorerTest api;
|
||||
|
||||
// CHECK:COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_impl_as.carbon:[[@LINE+1]]: expected a constraint in impl declaration, found i32
|
||||
// CHECK:STDERR: COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_impl_as.carbon:[[@LINE+1]]: expected a constraint in impl declaration, found i32
|
||||
external impl i32 as i32 {}
|
||||
|
||||
fn Main() -> i32 {
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{not} %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{not} %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
|
||||
package ExplorerTest api;
|
||||
|
||||
// CHECK:COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_impl_as_non_interface.carbon:[[@LINE+1]]: expected a constraint in impl declaration, found String
|
||||
// CHECK:STDERR: COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_impl_as_non_interface.carbon:[[@LINE+1]]: expected a constraint in impl declaration, found String
|
||||
external impl i32 as String {}
|
||||
|
||||
fn Main() -> i32 {
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{not} %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{not} %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
|
||||
package ExplorerTest api;
|
||||
|
||||
// CHECK:COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_impl_as_not_constraint.carbon:[[@LINE+1]]: expected a constraint in impl declaration, found i32
|
||||
// CHECK:STDERR: COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_impl_as_not_constraint.carbon:[[@LINE+1]]: expected a constraint in impl declaration, found i32
|
||||
external impl i32 as i32 {}
|
||||
|
||||
fn Main() -> i32 {
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{not} %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{not} %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
|
||||
package ExplorerTest api;
|
||||
@@ -11,7 +11,7 @@ package ExplorerTest api;
|
||||
interface Vector(Scalar:! Type) {
|
||||
}
|
||||
|
||||
// CHECK:COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_impl_as_parameterized.carbon:[[@LINE+1]]: Expected a type, but got Vector
|
||||
// CHECK:STDERR: COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_impl_as_parameterized.carbon:[[@LINE+1]]: Expected a type, but got Vector
|
||||
external impl i32 as Vector {}
|
||||
|
||||
fn Main() -> i32 {
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{not} %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{not} %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
|
||||
package ExplorerTest api;
|
||||
@@ -11,7 +11,7 @@ package ExplorerTest api;
|
||||
interface A(T:! Type) {}
|
||||
interface B {}
|
||||
|
||||
// CHECK:COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_nondeducible_parameter.carbon:[[@LINE+1]]: parameter `T:! Type` is not deducible from `impl i32 as interface B`
|
||||
// CHECK:STDERR: COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_nondeducible_parameter.carbon:[[@LINE+1]]: parameter `T:! Type` is not deducible from `impl i32 as interface B`
|
||||
external impl forall [T:! Type] i32 as A(T) & B {}
|
||||
|
||||
fn Main() -> i32 { return 0; }
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{not} %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{not} %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
|
||||
package ExplorerTest api;
|
||||
@@ -19,7 +19,7 @@ fn Main() -> i32 {
|
||||
let n: i32 = 0;
|
||||
CheckSimilar(true, false);
|
||||
CheckSimilar(true, n);
|
||||
// CHECK:COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_param_interface_in_impl.carbon:[[@LINE+1]]: could not find implementation of interface Similar(T = i32) for bool
|
||||
// CHECK:STDERR: COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_param_interface_in_impl.carbon:[[@LINE+1]]: could not find implementation of interface Similar(T = i32) for bool
|
||||
CheckSimilar(n, false);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{not} %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{not} %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
|
||||
package ExplorerTest api;
|
||||
@@ -44,7 +44,7 @@ fn Main() -> i32 {
|
||||
var a: Point(i32) = {.x = 1, .y = 1};
|
||||
var b: Point(i32) = {.x = 2, .y = 3};
|
||||
// TODO: This shouldn't be considered ambiguous.
|
||||
// CHECK:COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_unambiguous_impl_generic.carbon:[[@LINE+1]]: ambiguous implementations of interface Vector(T = i32) for class Point(T = i32)
|
||||
// CHECK:STDERR: COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_unambiguous_impl_generic.carbon:[[@LINE+1]]: ambiguous implementations of interface Vector(T = i32) for class Point(T = i32)
|
||||
var p: Point(i32) = AddAndScaleGeneric(a, b, 5);
|
||||
return p.x - 15;
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{not} %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{not} %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{not} %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
|
||||
package ExplorerTest api;
|
||||
@@ -11,7 +11,7 @@ package ExplorerTest api;
|
||||
interface A {}
|
||||
interface B {}
|
||||
|
||||
// CHECK:COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_unmet_impl_constraint.carbon:[[@LINE+1]]: could not find implementation of interface B for i32
|
||||
// CHECK:STDERR: COMPILATION ERROR: {{.*}}/explorer/testdata/impl/fail_unmet_impl_constraint.carbon:[[@LINE+1]]: could not find implementation of interface B for i32
|
||||
external impl i32 as A where i32 is B {}
|
||||
|
||||
fn Main() -> i32 {
|
||||
|
||||
+3
-3
@@ -2,10 +2,10 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
// CHECK:result: 3
|
||||
// CHECK:STDOUT: result: 3
|
||||
|
||||
package ExplorerTest api;
|
||||
|
||||
|
||||
+3
-3
@@ -2,10 +2,10 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
// CHECK:result: 1234
|
||||
// CHECK:STDOUT: result: 1234
|
||||
|
||||
package ExplorerTest api;
|
||||
|
||||
|
||||
+3
-3
@@ -2,10 +2,10 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
// CHECK:result: 1133
|
||||
// CHECK:STDOUT: result: 1133
|
||||
|
||||
package ExplorerTest api;
|
||||
|
||||
|
||||
+3
-3
@@ -2,10 +2,10 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
// CHECK:result: 0
|
||||
// CHECK:STDOUT: result: 0
|
||||
|
||||
package ExplorerTest api;
|
||||
|
||||
|
||||
+3
-3
@@ -2,10 +2,10 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
// CHECK:result: 0
|
||||
// CHECK:STDOUT: result: 0
|
||||
|
||||
package ExplorerTest api;
|
||||
|
||||
|
||||
+3
-3
@@ -2,10 +2,10 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
// CHECK:result: 0
|
||||
// CHECK:STDOUT: result: 0
|
||||
|
||||
package ExplorerTest api;
|
||||
|
||||
|
||||
+3
-3
@@ -2,10 +2,10 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// RUN: %{explorer} %s 2>&1 | %{FileCheck-strict} %s
|
||||
// RUN: %{explorer-trace} %s 2>&1 | %{FileCheck-allow-unmatched} %s
|
||||
// RUN: %{explorer} %s | %{FileCheck-strict} %s
|
||||
// RUN: %{explorer-trace} %s | %{FileCheck-allow-unmatched} %s
|
||||
// AUTOUPDATE: %{explorer} %s
|
||||
// CHECK:result: 0
|
||||
// CHECK:STDOUT: result: 0
|
||||
|
||||
package ExplorerTest api;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user