mirror of https://github.com/aminya/setup-cpp
test: test compilation in the llvm and gcc tests
This commit is contained in:
parent
9700bb5f87
commit
9770308530
|
@ -1,6 +1,10 @@
|
||||||
import { testBin } from "../../utils/tests/test-helpers"
|
import { testBin } from "../../utils/tests/test-helpers"
|
||||||
import { setupGcc } from "../gcc"
|
import { setupGcc } from "../gcc"
|
||||||
import { getVersion } from "../../default_versions"
|
import { getVersion } from "../../default_versions"
|
||||||
|
import path from "path"
|
||||||
|
import execa from "execa"
|
||||||
|
import { addBinExtension } from "../../utils/extension/extension"
|
||||||
|
import { chmodSync } from "fs"
|
||||||
|
|
||||||
jest.setTimeout(3000000)
|
jest.setTimeout(3000000)
|
||||||
describe("setup-gcc", () => {
|
describe("setup-gcc", () => {
|
||||||
|
@ -16,5 +20,14 @@ describe("setup-gcc", () => {
|
||||||
|
|
||||||
expect(process.env.CC?.includes("gcc")).toBeTruthy()
|
expect(process.env.CC?.includes("gcc")).toBeTruthy()
|
||||||
expect(process.env.CXX?.includes("g++")).toBeTruthy()
|
expect(process.env.CXX?.includes("g++")).toBeTruthy()
|
||||||
|
|
||||||
|
// test compilation
|
||||||
|
const file = path.join(__dirname, "main.cpp")
|
||||||
|
const main_exe = path.join(__dirname, addBinExtension("main"))
|
||||||
|
execa.sync("g++", [file, "-o", main_exe], { cwd: __dirname })
|
||||||
|
if (process.platform !== "win32") {
|
||||||
|
chmodSync(main_exe, "755")
|
||||||
|
}
|
||||||
|
execa.sync(main_exe, { cwd: __dirname, stdio: "inherit" })
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
// test std libraries
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
// test c libraries
|
||||||
|
#include <cassert>
|
||||||
|
#include <cctype>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
const auto x = 10.0;
|
||||||
|
std::cout << "Testing " << x << '\n';
|
||||||
|
|
||||||
|
const auto y = std::to_string(x);
|
||||||
|
std::cout << "Testing " << y << '\n';
|
||||||
|
}
|
|
@ -3,6 +3,10 @@ import { getSpecificVersionAndUrl } from "../../utils/setup/version"
|
||||||
import { isValidUrl } from "../../utils/http/validate_url"
|
import { isValidUrl } from "../../utils/http/validate_url"
|
||||||
import { setupTmpDir, cleanupTmpDir, testBin } from "../../utils/tests/test-helpers"
|
import { setupTmpDir, cleanupTmpDir, testBin } from "../../utils/tests/test-helpers"
|
||||||
import { isGitHubCI } from "../../utils/env/isci"
|
import { isGitHubCI } from "../../utils/env/isci"
|
||||||
|
import execa from "execa"
|
||||||
|
import path from "path"
|
||||||
|
import { addBinExtension } from "../../utils/extension/extension"
|
||||||
|
import { chmodSync } from "fs"
|
||||||
|
|
||||||
jest.setTimeout(400000)
|
jest.setTimeout(400000)
|
||||||
async function testUrl(version: string) {
|
async function testUrl(version: string) {
|
||||||
|
@ -22,6 +26,7 @@ describe("setup-llvm", () => {
|
||||||
it("Finds valid LLVM URLs", async () => {
|
it("Finds valid LLVM URLs", async () => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
[
|
[
|
||||||
|
"13.0.0",
|
||||||
"12.0.0",
|
"12.0.0",
|
||||||
"12",
|
"12",
|
||||||
"11",
|
"11",
|
||||||
|
@ -43,15 +48,24 @@ describe("setup-llvm", () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should setup LLVM", async () => {
|
it("should setup LLVM", async () => {
|
||||||
const { binDir } = await setupLLVM("11.0.0", directory, process.arch)
|
const { binDir } = await setupLLVM("13.0.0", directory, process.arch)
|
||||||
await testBin("clang++", ["--version"], binDir)
|
await testBin("clang++", ["--version"], binDir)
|
||||||
|
|
||||||
expect(process.env.CC?.includes("clang")).toBeTruthy()
|
expect(process.env.CC?.includes("clang")).toBeTruthy()
|
||||||
expect(process.env.CXX?.includes("clang++")).toBeTruthy()
|
expect(process.env.CXX?.includes("clang++")).toBeTruthy()
|
||||||
|
|
||||||
|
// test compilation
|
||||||
|
const file = path.join(__dirname, "main.cpp")
|
||||||
|
const main_exe = path.join(__dirname, addBinExtension("main"))
|
||||||
|
execa.sync("clang++", [file, "-o", main_exe], { cwd: __dirname })
|
||||||
|
if (process.platform !== "win32") {
|
||||||
|
chmodSync(main_exe, "755")
|
||||||
|
}
|
||||||
|
execa.sync(main_exe, { cwd: __dirname, stdio: "inherit" })
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should find llvm in the cache", async () => {
|
it("should find llvm in the cache", async () => {
|
||||||
const { binDir } = await setupLLVM("11.0.0", directory, process.arch)
|
const { binDir } = await setupLLVM("13.0.0", directory, process.arch)
|
||||||
await testBin("clang++", ["--version"], binDir)
|
await testBin("clang++", ["--version"], binDir)
|
||||||
|
|
||||||
if (isGitHubCI()) {
|
if (isGitHubCI()) {
|
||||||
|
@ -68,7 +82,7 @@ describe("setup-llvm", () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should setup clang-tidy and clang-format", async () => {
|
it("should setup clang-tidy and clang-format", async () => {
|
||||||
const { binDir } = await setupClangTools("11.0.0", directory, process.arch)
|
const { binDir } = await setupClangTools("13.0.0", directory, process.arch)
|
||||||
await testBin("clang-tidy", ["--version"], binDir)
|
await testBin("clang-tidy", ["--version"], binDir)
|
||||||
await testBin("clang-format", ["--version"], binDir)
|
await testBin("clang-format", ["--version"], binDir)
|
||||||
})
|
})
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
// test std libraries
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
// test c libraries
|
||||||
|
#include <cassert>
|
||||||
|
#include <cctype>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
const auto x = 10.0;
|
||||||
|
std::cout << "Testing " << x << '\n';
|
||||||
|
|
||||||
|
const auto y = std::to_string(x);
|
||||||
|
std::cout << "Testing " << y << '\n';
|
||||||
|
}
|
Loading…
Reference in New Issue