| // Copyright 2019 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package main |
| |
| import ( |
| "fmt" |
| "regexp" |
| "testing" |
| ) |
| |
| func TestRemovePrintCmdlineArg(t *testing.T) { |
| withTestContext(t, func(ctx *testContext) { |
| cmd := ctx.must(callCompiler(ctx, ctx.cfg, ctx.newCommand(gccX86_64, "-print-cmdline", mainCc))) |
| if err := verifyArgCount(cmd, 0, "-print-cmdline"); err != nil { |
| t.Error(err) |
| } |
| }) |
| } |
| |
| func TestPrintCompilerCommand(t *testing.T) { |
| withTestContext(t, func(ctx *testContext) { |
| ctx.must(callCompiler(ctx, ctx.cfg, ctx.newCommand(gccX86_64, "-print-cmdline", mainCc))) |
| if matched, _ := regexp.MatchString(`cd '.*' && '.*/x86_64-cros-linux-gnu-gcc.real'.*'main.cc'`, ctx.stderrString()); !matched { |
| t.Errorf("sub command not printed to stderr. Got: %s", ctx.stderrString()) |
| } |
| }) |
| } |
| |
| func TestPrintNestedCommand(t *testing.T) { |
| withTestContext(t, func(ctx *testContext) { |
| // Note: -clang-syntax calls clang to check the syntax |
| ctx.must(callCompiler(ctx, ctx.cfg, ctx.newCommand(gccX86_64, "-print-cmdline", "-clang-syntax", mainCc))) |
| if matched, _ := regexp.MatchString(`cd '.*' && '.*usr/bin/clang'.*'main.cc'.*'-fsyntax-only'`, ctx.stderrString()); !matched { |
| t.Errorf("sub command not printed to stderr. Got: %s", ctx.stderrString()) |
| } |
| }) |
| } |
| |
| func TestPrintCmdWd(t *testing.T) { |
| withTestContext(t, func(ctx *testContext) { |
| printCmd(ctx, &command{ |
| Path: "/somepath", |
| }) |
| if ctx.stderrString() != fmt.Sprintf("cd '%s' && '/somepath'\n", ctx.tempDir) { |
| t.Errorf("unexpected result. Got: %s", ctx.stderrString()) |
| } |
| }) |
| } |
| |
| func TestPrintCmdAbsolutePath(t *testing.T) { |
| withTestContext(t, func(ctx *testContext) { |
| printCmd(ctx, &command{ |
| Path: "somepath", |
| }) |
| if ctx.stderrString() != fmt.Sprintf("cd '%s' && '%s/somepath'\n", ctx.tempDir, ctx.tempDir) { |
| t.Errorf("unexpected result. Got: %s", ctx.stderrString()) |
| } |
| }) |
| } |
| |
| func TestPrintCmdEnvUpdates(t *testing.T) { |
| withTestContext(t, func(ctx *testContext) { |
| printCmd(ctx, &command{ |
| Path: "/somepath", |
| EnvUpdates: []string{"a=b"}, |
| }) |
| if ctx.stderrString() != fmt.Sprintf("cd '%s' && env 'a=b' '/somepath'\n", ctx.tempDir) { |
| t.Errorf("unexpected result. Got: %s", ctx.stderrString()) |
| } |
| }) |
| } |
| |
| func TestPrintCmdArgs(t *testing.T) { |
| withTestContext(t, func(ctx *testContext) { |
| printCmd(ctx, &command{ |
| Path: "/somepath", |
| Args: []string{"-a"}, |
| }) |
| if ctx.stderrString() != fmt.Sprintf("cd '%s' && '/somepath' '-a'\n", ctx.tempDir) { |
| t.Errorf("unexpected result. Got: %s", ctx.stderrString()) |
| } |
| }) |
| } |