blob: 8f6fc226e756a472f265ba79d347ace6da4211ec [file] [log] [blame]
// 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())
}
})
}