aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/api/tst_api.cpp4
-rw-r--r--tests/auto/blackbox/testdata-apple/codesign/app.cpp1
-rw-r--r--tests/auto/blackbox/testdata-apple/codesign/codesign.qbs38
-rw-r--r--tests/auto/blackbox/testdata-baremetal/BareMetalApplication.qbs105
-rw-r--r--tests/auto/blackbox/testdata-baremetal/BareMetalProduct.qbs158
-rw-r--r--tests/auto/blackbox/testdata-baremetal/BareMetalStaticLibrary.qbs105
-rw-r--r--tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/app.c4
-rw-r--r--tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/compiler-defines-by-language.qbs69
-rw-r--r--tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/cpptest.cpp0
-rw-r--r--tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/ctest.c0
-rw-r--r--tests/auto/blackbox/testdata-baremetal/compiler-include-paths/compiler-include-paths.qbs9
-rw-r--r--tests/auto/blackbox/testdata-baremetal/compiler-include-paths/main.c4
-rw-r--r--tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs12-iar.s7
-rw-r--r--tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs8-iar.s6
-rw-r--r--tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs8-sdcc.s6
-rw-r--r--tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m32c-iar.s6
-rw-r--r--tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m68k-iar.s6
-rw-r--r--tests/auto/blackbox/testdata-baremetal/one-object-asm-application/one-object-asm-application.qbs14
-rw-r--r--tests/auto/blackbox/testdata-baremetal/one-object-asm-application/riscv-iar.s7
-rw-r--r--tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rx-iar.s5
-rw-r--r--tests/auto/blackbox/testdata/dynamicRuleOutputs/before/flexoptionsreader.js4
-rw-r--r--tests/auto/blackbox/testdata/path-probe/BaseApp.qbs2
-rw-r--r--tests/auto/blackbox/testdata/undefined-target-platform/undefined-target-platform.qbs2
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp4
-rw-r--r--tests/auto/blackbox/tst_blackboxapple.cpp101
-rw-r--r--tests/auto/blackbox/tst_blackboxapple.h2
-rw-r--r--tests/auto/blackbox/tst_blackboxbaremetal.cpp35
-rw-r--r--tests/auto/blackbox/tst_blackboxbaremetal.h3
-rw-r--r--tests/auto/blackbox/tst_blackboxbase.h9
-rw-r--r--tests/auto/shared.h5
30 files changed, 505 insertions, 216 deletions
diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp
index 7a585f641..a51eb3e0c 100644
--- a/tests/auto/api/tst_api.cpp
+++ b/tests/auto/api/tst_api.cpp
@@ -2507,7 +2507,9 @@ qbs::SetupProjectParameters TestApi::defaultSetupParameters(const QString &proje
}
qbs::SetupProjectParameters setupParams;
- setupParams.setEnvironment(QProcessEnvironment::systemEnvironment());
+ auto environment = QProcessEnvironment::systemEnvironment();
+ environment.insert("QBS_AUTOTEST_CODE_SIGNING_REQUIRED", "0");
+ setupParams.setEnvironment(environment);
setupParams.setProjectFilePath(projectFilePath);
setupParams.setPropertyCheckingMode(qbs::ErrorHandlingMode::Strict);
setupParams.setOverrideBuildGraphData(true);
diff --git a/tests/auto/blackbox/testdata-apple/codesign/app.cpp b/tests/auto/blackbox/testdata-apple/codesign/app.cpp
new file mode 100644
index 000000000..76e819701
--- /dev/null
+++ b/tests/auto/blackbox/testdata-apple/codesign/app.cpp
@@ -0,0 +1 @@
+int main() { return 0; }
diff --git a/tests/auto/blackbox/testdata-apple/codesign/codesign.qbs b/tests/auto/blackbox/testdata-apple/codesign/codesign.qbs
new file mode 100644
index 000000000..312e9f001
--- /dev/null
+++ b/tests/auto/blackbox/testdata-apple/codesign/codesign.qbs
@@ -0,0 +1,38 @@
+Project {
+ name: "p"
+
+ property bool isBundle: true
+ property bool enableSigning: true
+
+ CppApplication {
+ name: "A"
+ bundle.isBundle: project.isBundle
+ files: "app.cpp"
+ codesign.enableCodeSigning: project.enableSigning
+ codesign.signingType: "ad-hoc"
+ install: true
+ installDir: ""
+ }
+
+ DynamicLibrary {
+ Depends { name: "cpp" }
+ name: "B"
+ bundle.isBundle: project.isBundle
+ files: "app.cpp"
+ codesign.enableCodeSigning: project.enableSigning
+ codesign.signingType: "ad-hoc"
+ install: true
+ installDir: ""
+ }
+
+ LoadableModule {
+ Depends { name: "cpp" }
+ name: "C"
+ bundle.isBundle: project.isBundle
+ files: "app.cpp"
+ codesign.enableCodeSigning: project.enableSigning
+ codesign.signingType: "ad-hoc"
+ install: true
+ installDir: ""
+ }
+}
diff --git a/tests/auto/blackbox/testdata-baremetal/BareMetalApplication.qbs b/tests/auto/blackbox/testdata-baremetal/BareMetalApplication.qbs
index fa678ebb2..a52bb4c4e 100644
--- a/tests/auto/blackbox/testdata-baremetal/BareMetalApplication.qbs
+++ b/tests/auto/blackbox/testdata-baremetal/BareMetalApplication.qbs
@@ -1,104 +1,3 @@
-CppApplication {
- cpp.positionIndependentCode: false
- Properties {
- condition: qbs.toolchain.contains("iar")
- && qbs.architecture === "stm8"
- cpp.driverLinkerFlags: [
- "--config_def", "_CSTACK_SIZE=0x100",
- "--config_def", "_HEAP_SIZE=0x100",
- ]
- }
- Properties {
- condition: qbs.toolchain.contains("iar")
- && qbs.architecture === "rl78"
- cpp.driverLinkerFlags: [
- "--config_def", "_NEAR_HEAP_SIZE=256",
- "--config_def", "_FAR_HEAP_SIZE=4096",
- "--config_def", "_HUGE_HEAP_SIZE=0",
- "--config_def", "_STACK_SIZE=128",
- "--config_def", "_NEAR_CONST_LOCATION_SIZE=0x6F00",
- "--config_def", "_NEAR_CONST_LOCATION_START=0x3000",
- "--define_symbol", "_NEAR_CONST_LOCATION=0",
- "--config", cpp.toolchainInstallPath + "/../config/lnkrl78_s3.icf"
- ]
- }
- Properties {
- condition: qbs.toolchain.contains("iar")
- && qbs.architecture === "rh850"
- cpp.driverLinkerFlags: [
- "--config_def", "CSTACK_SIZE=0x1000",
- "--config_def", "HEAP_SIZE=0x1000",
- "--config", cpp.toolchainInstallPath + "/../config/lnkrh850_g3m.icf"
- ]
- }
- Properties {
- condition: qbs.toolchain.contains("iar")
- && qbs.architecture === "v850"
- cpp.driverLinkerFlags: [
- "-D_CSTACK_SIZE=1000",
- "-D_HEAP_SIZE=1000",
- "-f", cpp.toolchainInstallPath + "/../config/lnk85.xcl"
- ]
- }
- Properties {
- condition: qbs.toolchain.contains("iar")
- && qbs.architecture === "78k"
- cpp.cFlags: [
- "--core", "78k0",
- "--code_model", "standard"
- ]
- cpp.driverLinkerFlags: [
- "-D_CSTACK_SIZE=80",
- "-D_HEAP_SIZE=200",
- "-D_CODEBANK_START=0",
- "-D_CODEBANK_END=0",
- "-D_CODEBANK_BANKS=0",
- "-f", cpp.toolchainInstallPath + "/../config/lnk.xcl",
- cpp.toolchainInstallPath + "/../lib/clib/cl78ks1.r26"
- ]
- }
- Properties {
- condition: qbs.toolchain.contains("iar")
- && qbs.architecture === "sh"
- cpp.driverLinkerFlags: [
- "--config_def", "_CSTACK_SIZE=0x800",
- "--config_def", "_HEAP_SIZE=0x800",
- "--config_def", "_INT_TABLE=0x10",
- "--config", cpp.toolchainInstallPath + "/../config/generic.icf"
- ]
- }
- Properties {
- condition: qbs.toolchain.contains("keil")
- && qbs.architecture.startsWith("arm")
- && cpp.compilerName.startsWith("armcc")
- cpp.assemblerFlags: ["--cpu", "cortex-m0"]
- cpp.driverFlags: ["--cpu", "cortex-m0"]
- }
- Properties {
- condition: qbs.toolchain.contains("keil")
- && qbs.architecture.startsWith("arm")
- && cpp.compilerName.startsWith("armclang")
- cpp.assemblerFlags: ["--cpu", "cortex-m0"]
- cpp.driverFlags: ["-mcpu=cortex-m0", "--target=arm-arm-none-eabi"]
- }
- Properties {
- condition: qbs.toolchain.contains("gcc")
- && qbs.architecture.startsWith("arm")
- cpp.driverFlags: ["-specs=nosys.specs"]
- }
- Properties {
- condition: qbs.toolchain.contains("gcc")
- && qbs.architecture === "xtensa"
- cpp.driverFlags: ["-nostdlib"]
- }
- Properties {
- condition: qbs.toolchain.contains("gcc")
- && qbs.architecture === "msp430"
- cpp.driverFlags: ["-mmcu=msp430f5529"]
- }
- Properties {
- condition: qbs.toolchain.contains("gcc")
- && qbs.architecture === "m32r"
- cpp.driverFlags: ["-nostdlib"]
- }
+BareMetalProduct {
+ type: "application"
}
diff --git a/tests/auto/blackbox/testdata-baremetal/BareMetalProduct.qbs b/tests/auto/blackbox/testdata-baremetal/BareMetalProduct.qbs
new file mode 100644
index 000000000..4ec613e93
--- /dev/null
+++ b/tests/auto/blackbox/testdata-baremetal/BareMetalProduct.qbs
@@ -0,0 +1,158 @@
+Product {
+ Depends { name: "cpp" }
+ cpp.positionIndependentCode: false
+ Properties {
+ condition: qbs.toolchain.contains("iar")
+ && qbs.architecture === "stm8"
+ cpp.driverLinkerFlags: [
+ "--config_def", "_CSTACK_SIZE=0x100",
+ "--config_def", "_HEAP_SIZE=0x100",
+ ]
+ }
+ Properties {
+ condition: qbs.toolchain.contains("iar")
+ && qbs.architecture === "rl78"
+ cpp.driverLinkerFlags: [
+ "--config_def", "_NEAR_HEAP_SIZE=256",
+ "--config_def", "_FAR_HEAP_SIZE=4096",
+ "--config_def", "_HUGE_HEAP_SIZE=0",
+ "--config_def", "_STACK_SIZE=128",
+ "--config_def", "_NEAR_CONST_LOCATION_SIZE=0x6F00",
+ "--config_def", "_NEAR_CONST_LOCATION_START=0x3000",
+ "--define_symbol", "_NEAR_CONST_LOCATION=0",
+ "--config", cpp.toolchainInstallPath + "/../config/lnkrl78_s3.icf"
+ ]
+ }
+ Properties {
+ condition: qbs.toolchain.contains("iar")
+ && qbs.architecture === "rh850"
+ cpp.driverLinkerFlags: [
+ "--config_def", "CSTACK_SIZE=0x1000",
+ "--config_def", "HEAP_SIZE=0x1000",
+ "--config", cpp.toolchainInstallPath + "/../config/lnkrh850_g3m.icf"
+ ]
+ }
+ Properties {
+ condition: qbs.toolchain.contains("iar")
+ && qbs.architecture === "v850"
+ cpp.driverLinkerFlags: [
+ "-D_CSTACK_SIZE=1000",
+ "-D_HEAP_SIZE=1000",
+ "-f", cpp.toolchainInstallPath + "/../config/lnk85.xcl"
+ ]
+ }
+ Properties {
+ condition: qbs.toolchain.contains("iar")
+ && qbs.architecture === "78k"
+ cpp.cFlags: [
+ "--core", "78k0",
+ "--code_model", "standard"
+ ]
+ cpp.driverLinkerFlags: [
+ "-D_CSTACK_SIZE=80",
+ "-D_HEAP_SIZE=200",
+ "-D_CODEBANK_START=0",
+ "-D_CODEBANK_END=0",
+ "-D_CODEBANK_BANKS=0",
+ "-f", cpp.toolchainInstallPath + "/../config/lnk.xcl",
+ cpp.toolchainInstallPath + "/../lib/clib/cl78ks1.r26"
+ ]
+ }
+ Properties {
+ condition: qbs.toolchain.contains("iar")
+ && qbs.architecture === "sh"
+ cpp.driverLinkerFlags: [
+ "--config_def", "_CSTACK_SIZE=0x800",
+ "--config_def", "_HEAP_SIZE=0x800",
+ "--config_def", "_INT_TABLE=0x10",
+ "--config", cpp.toolchainInstallPath + "/../config/generic.icf"
+ ]
+ }
+ Properties {
+ condition: qbs.toolchain.contains("iar")
+ && qbs.architecture === "hcs8"
+ cpp.driverLinkerFlags: [
+ "-D_CSTACK_SIZE=200",
+ "-D_HEAP_SIZE=200",
+ "-f", cpp.toolchainInstallPath + "/../config/lnkunspecifieds08.xcl"
+ ]
+ }
+ Properties {
+ condition: qbs.toolchain.contains("iar")
+ && qbs.architecture === "m32c"
+ cpp.driverLinkerFlags: [
+ "-D_CSTACK_SIZE=100",
+ "-D_NEAR_HEAP_SIZE=400",
+ "-D_FAR_HEAP_SIZE=400",
+ "-D_HUGE_HEAP_SIZE=400",
+ "-D_ISTACK_SIZE=40",
+ "-f", cpp.toolchainInstallPath + "/../config/lnkm32c.xcl",
+ cpp.toolchainInstallPath + (qbs.debugInformation ? "/../lib/dlib/dlm32cnf.r48" : "/../lib/clib/clm32cf.r48")
+ ]
+ }
+ Properties {
+ condition: qbs.toolchain.contains("iar")
+ && qbs.architecture === "riscv"
+ cpp.driverLinkerFlags: [
+ "--config_def", "CSTACK_SIZE=0x1000",
+ "--config_def", "HEAP_SIZE=0x1000"
+ ]
+ }
+ Properties {
+ condition: qbs.toolchain.contains("iar")
+ && qbs.architecture === "m68k"
+ cpp.cFlags: [
+ "--no_div"
+ ]
+ cpp.driverLinkerFlags: [
+ "-D__FLASHBEGIN=0",
+ "-D__FLASHEND=1FFFF",
+ "-D__RAMBEGIN=800000",
+ "-D__RAMEND=803FFF",
+ "-D_CSTACK_SIZE=200",
+ "-D_HEAP_SIZE=1000",
+ "-D_VBR_ADDRESS=0",
+ "-f", cpp.toolchainInstallPath + "/../config/lnkm51ac128.xcl",
+ cpp.toolchainInstallPath + "/../lib/dlcfcffdn.r68"
+ ]
+ }
+ Properties {
+ condition: qbs.toolchain.contains("keil")
+ && qbs.architecture.startsWith("arm")
+ && cpp.compilerName.startsWith("armcc")
+ cpp.assemblerFlags: ["--cpu", "cortex-m0"]
+ cpp.driverFlags: ["--cpu", "cortex-m0"]
+ }
+ Properties {
+ condition: qbs.toolchain.contains("keil")
+ && qbs.architecture.startsWith("arm")
+ && cpp.compilerName.startsWith("armclang")
+ cpp.assemblerFlags: ["--cpu", "cortex-m0"]
+ cpp.driverFlags: ["-mcpu=cortex-m0", "--target=arm-arm-none-eabi"]
+ }
+ Properties {
+ condition: qbs.toolchain.contains("gcc")
+ && qbs.architecture.startsWith("arm")
+ cpp.driverFlags: ["-specs=nosys.specs"]
+ }
+ Properties {
+ condition: qbs.toolchain.contains("gcc")
+ && qbs.architecture === "xtensa"
+ cpp.driverFlags: ["-nostdlib"]
+ }
+ Properties {
+ condition: qbs.toolchain.contains("gcc")
+ && qbs.architecture === "msp430"
+ cpp.driverFlags: ["-mmcu=msp430f5529", "-nostdlib"]
+ }
+ Properties {
+ condition: qbs.toolchain.contains("gcc")
+ && qbs.architecture === "m32r"
+ cpp.driverFlags: ["-nostdlib"]
+ }
+ Properties {
+ condition: qbs.toolchain.contains("gcc")
+ && qbs.architecture === "riscv"
+ cpp.driverFlags: ["-nostdlib"]
+ }
+}
diff --git a/tests/auto/blackbox/testdata-baremetal/BareMetalStaticLibrary.qbs b/tests/auto/blackbox/testdata-baremetal/BareMetalStaticLibrary.qbs
index 560455162..7259b1446 100644
--- a/tests/auto/blackbox/testdata-baremetal/BareMetalStaticLibrary.qbs
+++ b/tests/auto/blackbox/testdata-baremetal/BareMetalStaticLibrary.qbs
@@ -1,104 +1,3 @@
-StaticLibrary {
- cpp.positionIndependentCode: false
- Properties {
- condition: qbs.toolchain.contains("iar")
- && qbs.architecture === "stm8"
- cpp.driverLinkerFlags: [
- "--config_def", "_CSTACK_SIZE=0x100",
- "--config_def", "_HEAP_SIZE=0x100",
- ]
- }
- Properties {
- condition: qbs.toolchain.contains("iar")
- && qbs.architecture === "rl78"
- cpp.driverLinkerFlags: [
- "--config_def", "_NEAR_HEAP_SIZE=256",
- "--config_def", "_FAR_HEAP_SIZE=4096",
- "--config_def", "_HUGE_HEAP_SIZE=0",
- "--config_def", "_STACK_SIZE=128",
- "--config_def", "_NEAR_CONST_LOCATION_SIZE=0x6F00",
- "--config_def", "_NEAR_CONST_LOCATION_START=0x3000",
- "--define_symbol", "_NEAR_CONST_LOCATION=0",
- "--config", cpp.toolchainInstallPath + "/../config/lnkrl78_s3.icf"
- ]
- }
- Properties {
- condition: qbs.toolchain.contains("iar")
- && qbs.architecture === "rh850"
- cpp.driverLinkerFlags: [
- "--config_def", "CSTACK_SIZE=0x1000",
- "--config_def", "HEAP_SIZE=0x1000",
- "--config", cpp.toolchainInstallPath + "/../config/lnkrh850_g3m.icf"
- ]
- }
- Properties {
- condition: qbs.toolchain.contains("iar")
- && qbs.architecture === "v850"
- cpp.driverLinkerFlags: [
- "-D_CSTACK_SIZE=1000",
- "-D_HEAP_SIZE=1000",
- "-f", cpp.toolchainInstallPath + "/../config/lnk85.xcl"
- ]
- }
- Properties {
- condition: qbs.toolchain.contains("iar")
- && qbs.architecture === "78k"
- cpp.cFlags: [
- "--core", "78k0",
- "--code_model", "standard"
- ]
- cpp.driverLinkerFlags: [
- "-D_CSTACK_SIZE=80",
- "-D_HEAP_SIZE=200",
- "-D_CODEBANK_START=0",
- "-D_CODEBANK_END=0",
- "-D_CODEBANK_BANKS=0",
- "-f", cpp.toolchainInstallPath + "/../config/lnk.xcl",
- cpp.toolchainInstallPath + "/../lib/clib/cl78ks1.r26"
- ]
- }
- Properties {
- condition: qbs.toolchain.contains("iar")
- && qbs.architecture === "sh"
- cpp.driverLinkerFlags: [
- "--config_def", "_CSTACK_SIZE=0x800",
- "--config_def", "_HEAP_SIZE=0x800",
- "--config_def", "_INT_TABLE=0x10",
- "--config", cpp.toolchainInstallPath + "/../config/generic.icf"
- ]
- }
- Properties {
- condition: qbs.toolchain.contains("keil")
- && qbs.architecture.startsWith("arm")
- && cpp.compilerName.startsWith("armcc")
- cpp.assemblerFlags: ["--cpu", "cortex-m0"]
- cpp.driverFlags: ["--cpu", "cortex-m0"]
- }
- Properties {
- condition: qbs.toolchain.contains("keil")
- && qbs.architecture.startsWith("arm")
- && cpp.compilerName.startsWith("armclang")
- cpp.assemblerFlags: ["--cpu", "cortex-m0"]
- cpp.driverFlags: ["-mcpu=cortex-m0", "--target=arm-arm-none-eabi"]
- }
- Properties {
- condition: qbs.toolchain.contains("gcc")
- && qbs.architecture.startsWith("arm")
- cpp.driverFlags: ["-specs=nosys.specs"]
- }
- Properties {
- condition: qbs.toolchain.contains("gcc")
- && qbs.architecture === "xtensa"
- cpp.driverFlags: ["-nostdlib"]
- }
- Properties {
- condition: qbs.toolchain.contains("gcc")
- && qbs.architecture === "msp430"
- cpp.driverFlags: ["-mmcu=msp430f5529"]
- }
- Properties {
- condition: qbs.toolchain.contains("gcc")
- && qbs.architecture === "m32r"
- cpp.driverFlags: ["-nostdlib"]
- }
+BareMetalProduct {
+ type: "staticlibrary"
}
diff --git a/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/app.c b/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/app.c
new file mode 100644
index 000000000..58fe69254
--- /dev/null
+++ b/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/app.c
@@ -0,0 +1,4 @@
+int main(void)
+{
+ return 0;
+}
diff --git a/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/compiler-defines-by-language.qbs b/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/compiler-defines-by-language.qbs
new file mode 100644
index 000000000..5e8bbd62d
--- /dev/null
+++ b/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/compiler-defines-by-language.qbs
@@ -0,0 +1,69 @@
+import "../BareMetalApplication.qbs" as BareMetalApplication
+
+Project {
+ property bool supportsCpp: {
+ if (qbs.toolchain.contains("sdcc"))
+ return false;
+ if (qbs.toolchain.contains("keil")) {
+ if (qbs.architecture === "mcs51"
+ || qbs.architecture === "mcs251"
+ || qbs.architecture === "c166") {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ BareMetalApplication {
+ name: "c_language"
+ files: ["app.c", "ctest.c"]
+ cpp.enableCompilerDefinesByLanguage: []
+ property var foo: {
+ if (!cpp.compilerDefinesByLanguage)
+ throw "ASSERT cpp.compilerDefinesByLanguage: "
+ + cpp.compilerDefinesByLanguage;
+ if (!cpp.compilerDefinesByLanguage["c"])
+ throw "ASSERT cpp.compilerDefinesByLanguage[\"c\"]: "
+ + cpp.compilerDefinesByLanguage["c"];
+ if (cpp.compilerDefinesByLanguage["cpp"])
+ throw "ASSERT !cpp.compilerDefinesByLanguage[\"cpp\"]: "
+ + cpp.compilerDefinesByLanguage["cpp"];
+ }
+ }
+
+ BareMetalApplication {
+ condition: supportsCpp
+ name: "cpp_language"
+ files: ["app.c", "cpptest.cpp"]
+ cpp.enableCompilerDefinesByLanguage: ["cpp"]
+ property var foo: {
+ if (!cpp.compilerDefinesByLanguage)
+ throw "ASSERT cpp.compilerDefinesByLanguage: "
+ + cpp.compilerDefinesByLanguage;
+ if (cpp.compilerDefinesByLanguage["c"])
+ throw "ASSERT !cpp.compilerDefinesByLanguage[\"c\"]: "
+ + cpp.compilerDefinesByLanguage["c"];
+ if (!cpp.compilerDefinesByLanguage["cpp"])
+ throw "ASSERT cpp.compilerDefinesByLanguage[\"cpp\"]: "
+ + cpp.compilerDefinesByLanguage["cpp"];
+ }
+ }
+
+ BareMetalApplication {
+ condition: supportsCpp
+ name: "c_and_cpp_language"
+ files: ["app.c", "ctest.c", "cpptest.cpp"]
+ cpp.enableCompilerDefinesByLanguage: ["c", "cpp"]
+ property var foo: {
+ if (!cpp.compilerDefinesByLanguage)
+ throw "ASSERT cpp.compilerDefinesByLanguage: "
+ + cpp.compilerDefinesByLanguage;
+ if (!cpp.compilerDefinesByLanguage["c"])
+ throw "ASSERT cpp.compilerDefinesByLanguage[\"c\"]: "
+ + cpp.compilerDefinesByLanguage["c"];
+ if (!cpp.compilerDefinesByLanguage["cpp"])
+ throw "ASSERT cpp.compilerDefinesByLanguage[\"cpp\"]: "
+ + cpp.compilerDefinesByLanguage["cpp"];
+ }
+ }
+}
diff --git a/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/cpptest.cpp b/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/cpptest.cpp
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/cpptest.cpp
diff --git a/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/ctest.c b/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/ctest.c
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/auto/blackbox/testdata-baremetal/compiler-defines-by-language/ctest.c
diff --git a/tests/auto/blackbox/testdata-baremetal/compiler-include-paths/compiler-include-paths.qbs b/tests/auto/blackbox/testdata-baremetal/compiler-include-paths/compiler-include-paths.qbs
new file mode 100644
index 000000000..5c73302ad
--- /dev/null
+++ b/tests/auto/blackbox/testdata-baremetal/compiler-include-paths/compiler-include-paths.qbs
@@ -0,0 +1,9 @@
+import "../BareMetalApplication.qbs" as BareMetalApplication
+
+BareMetalApplication {
+ files: ["main.c"]
+ property bool dummy: {
+ console.info("compilerIncludePaths: %%" + cpp.compilerIncludePaths + "%%");
+ return true;
+ }
+}
diff --git a/tests/auto/blackbox/testdata-baremetal/compiler-include-paths/main.c b/tests/auto/blackbox/testdata-baremetal/compiler-include-paths/main.c
new file mode 100644
index 000000000..58fe69254
--- /dev/null
+++ b/tests/auto/blackbox/testdata-baremetal/compiler-include-paths/main.c
@@ -0,0 +1,4 @@
+int main(void)
+{
+ return 0;
+}
diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs12-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs12-iar.s
new file mode 100644
index 000000000..4344e757f
--- /dev/null
+++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs12-iar.s
@@ -0,0 +1,7 @@
+ PUBLIC main
+ RSEG CODE:CODE:REORDER:NOROOT(0)
+main:
+ CLRB
+ CLRA
+ RTS
+ END
diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs8-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs8-iar.s
new file mode 100644
index 000000000..883dfdcad
--- /dev/null
+++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs8-iar.s
@@ -0,0 +1,6 @@
+ PUBLIC main
+ RSEG CODE:CODE:REORDER:NOROOT(0)
+main:
+ LDHX #0x0000
+ RTS
+ END
diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs8-sdcc.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs8-sdcc.s
new file mode 100644
index 000000000..f47fed1be
--- /dev/null
+++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/hcs8-sdcc.s
@@ -0,0 +1,6 @@
+ .globl main
+ .area DSEG (PAG)
+ .area HOME (CODE)
+main:
+ clra
+ tax
diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m32c-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m32c-iar.s
new file mode 100644
index 000000000..4153f290e
--- /dev/null
+++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m32c-iar.s
@@ -0,0 +1,6 @@
+ PUBLIC main
+ RSEG CODE:CODE:REORDER:NOROOT(0)
+main:
+ MOV.W #0x0, R0
+ RTS
+ END
diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m68k-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m68k-iar.s
new file mode 100644
index 000000000..9811be134
--- /dev/null
+++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/m68k-iar.s
@@ -0,0 +1,6 @@
+ PUBLIC main
+ RSEG FCODE:CODE:NOROOT(1)
+main:
+ CLR.L D0
+ RTS
+ END
diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/one-object-asm-application.qbs b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/one-object-asm-application.qbs
index 7650810a9..ed38f79b6 100644
--- a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/one-object-asm-application.qbs
+++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/one-object-asm-application.qbs
@@ -40,11 +40,25 @@ BareMetalApplication {
return true;
if (qbs.architecture === "m16c")
return true;
+ if (qbs.architecture === "hcs8")
+ return true;
+ if (qbs.architecture === "hcs12")
+ return true;
+ if (qbs.architecture === "rx")
+ return true;
+ if (qbs.architecture === "m32c")
+ return true;
+ if (qbs.architecture === "riscv")
+ return true;
+ if (qbs.architecture === "m68k")
+ return true;
} else if (qbs.toolchainType === "sdcc") {
if (qbs.architecture === "mcs51")
return true;
if (qbs.architecture === "stm8")
return true;
+ if (qbs.architecture === "hcs8")
+ return true;
} else if (qbs.toolchainType === "gcc") {
if (qbs.architecture.startsWith("arm"))
return true;
diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/riscv-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/riscv-iar.s
new file mode 100644
index 000000000..e19fdfddb
--- /dev/null
+++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/riscv-iar.s
@@ -0,0 +1,7 @@
+ PUBLIC main
+ SECTION `.text`:CODE:REORDER:NOROOT(2)
+ CODE
+main:
+ MV A0, ZERO
+ RET
+ END
diff --git a/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rx-iar.s b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rx-iar.s
new file mode 100644
index 000000000..cc1573431
--- /dev/null
+++ b/tests/auto/blackbox/testdata-baremetal/one-object-asm-application/rx-iar.s
@@ -0,0 +1,5 @@
+ PUBLIC _main
+ SECTION CODE:CODE:ROOT(2)
+_main:
+ BRA _main
+ END
diff --git a/tests/auto/blackbox/testdata/dynamicRuleOutputs/before/flexoptionsreader.js b/tests/auto/blackbox/testdata/dynamicRuleOutputs/before/flexoptionsreader.js
index bd596fbca..b925effcf 100644
--- a/tests/auto/blackbox/testdata/dynamicRuleOutputs/before/flexoptionsreader.js
+++ b/tests/auto/blackbox/testdata/dynamicRuleOutputs/before/flexoptionsreader.js
@@ -35,7 +35,7 @@
**
****************************************************************************/
-// needs import qbs.TextFile
+var TextFile = require("qbs.TextFile");
function readFlexOptions(filePath)
{
@@ -82,7 +82,7 @@ function readFlexOptions(filePath)
}
}
- var tf = new TextFile(input.filePath);
+ var tf = new TextFile(filePath);
var line;
var optrex = /^%option\s+(.*$)/;
var res;
diff --git a/tests/auto/blackbox/testdata/path-probe/BaseApp.qbs b/tests/auto/blackbox/testdata/path-probe/BaseApp.qbs
index acafdb52b..62871698e 100644
--- a/tests/auto/blackbox/testdata/path-probe/BaseApp.qbs
+++ b/tests/auto/blackbox/testdata/path-probe/BaseApp.qbs
@@ -61,7 +61,7 @@ Product {
if (lhs.length !== rhs.length)
return false;
for (var i = 0; i < lhs.length; ++i) {
- if (Array.isArray(lhs[i]) && Array.isArray(rhs[i])) {
+ if ((lhs[i] instanceof Array) && (rhs[i] instanceof Array)) {
if (!compareArrays(lhs[i], rhs[i]))
return false;
} else if (FileInfo.resolvePath(path, lhs[i]) !== FileInfo.resolvePath(path, rhs[i])) {
diff --git a/tests/auto/blackbox/testdata/undefined-target-platform/undefined-target-platform.qbs b/tests/auto/blackbox/testdata/undefined-target-platform/undefined-target-platform.qbs
index 2b3724c26..4a738afcc 100644
--- a/tests/auto/blackbox/testdata/undefined-target-platform/undefined-target-platform.qbs
+++ b/tests/auto/blackbox/testdata/undefined-target-platform/undefined-target-platform.qbs
@@ -6,7 +6,7 @@ Product {
qbs.targetPlatform: undefined
readonly property bool _validate: {
- if (Array.isArray(qbs.targetOS) && qbs.targetOS.length === 0)
+ if ((qbs.targetOS instanceof Array) && qbs.targetOS.length === 0)
return true;
throw "Invalid qbs.targetOS value: " + qbs.targetOS;
}
diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp
index 20116ff56..2a3c40124 100644
--- a/tests/auto/blackbox/tst_blackbox.cpp
+++ b/tests/auto/blackbox/tst_blackbox.cpp
@@ -2173,7 +2173,7 @@ void TestBlackbox::trackExternalProductChanges()
const QStringList toolchainTypes = profileToolchain(profile);
if (!toolchainTypes.contains("gcc"))
QSKIP("Need GCC-like compiler to run this test");
- params.environment = QProcessEnvironment::systemEnvironment();
+ params.environment = QbsRunParameters::defaultEnvironment();
params.environment.insert("INCLUDE_PATH_TEST", "1");
params.expectFailure = true;
QVERIFY(runQbs(params) != 0);
@@ -6054,7 +6054,7 @@ void TestBlackbox::qbsSession()
QJsonObject overriddenValues;
overriddenValues.insert("products.theLib.cpp.cxxLanguageVersion", "c++17");
resolveMessage.insert("overridden-properties", overriddenValues);
- resolveMessage.insert("environment", envToJson(QProcessEnvironment::systemEnvironment()));
+ resolveMessage.insert("environment", envToJson(QbsRunParameters::defaultEnvironment()));
resolveMessage.insert("data-mode", "only-if-changed");
resolveMessage.insert("log-time", true);
resolveMessage.insert("module-properties",
diff --git a/tests/auto/blackbox/tst_blackboxapple.cpp b/tests/auto/blackbox/tst_blackboxapple.cpp
index e62eb3391..8915ac8b2 100644
--- a/tests/auto/blackbox/tst_blackboxapple.cpp
+++ b/tests/auto/blackbox/tst_blackboxapple.cpp
@@ -140,6 +140,39 @@ static QString findFatLibrary(const QString &dir, const QString &libraryName)
return {};
}
+enum class CodeSignResult { Failed = 0, Signed, Unsigned };
+using CodeSignData = QMap<QByteArray, QByteArray>;
+static std::pair<CodeSignResult, CodeSignData> parseCodeSignOutput(const QByteArray &output)
+{
+ CodeSignData data;
+ if (output.contains("code object is not signed at all"))
+ return {CodeSignResult::Unsigned, data};
+ const auto lines = output.split('\n');
+ for (const auto &line: lines) {
+ if (line.isEmpty()
+ || line.startsWith("CodeDirectory")
+ || line.startsWith("Sealed Resources")
+ || line.startsWith("Internal requirements")) {
+ continue;
+ }
+ const int index = line.indexOf('=');
+ if (index == -1)
+ return {CodeSignResult::Failed, {}};
+ data[line.mid(0, index)] = line.mid(index + 1);
+ }
+ return {CodeSignResult::Signed, data};
+}
+
+static std::pair<CodeSignResult, CodeSignData> getCodeSignInfo(const QString &path)
+{
+ QProcess codesign;
+ codesign.start("codesign", { QStringLiteral("-dv"), path });
+ if (!codesign.waitForStarted() || !codesign.waitForFinished())
+ return {CodeSignResult::Failed, {}};
+ const auto output = codesign.readAllStandardError();
+ return parseCodeSignOutput(output);
+}
+
TestBlackboxApple::TestBlackboxApple()
: TestBlackboxBase (SRCDIR "/testdata-apple", "blackbox-apple")
{
@@ -273,7 +306,7 @@ void TestBlackboxApple::aggregateDependencyLinking()
const auto xcodeVersion = findXcodeVersion();
// XCode 11 produces warning about deprecation of 32-bit apps, but still works
const bool hasX86Mac = xcodeVersion < qbs::Version(12);
- const bool hasArmMac = false;
+ const bool hasArmMac = xcodeVersion >= qbs::Version(12, 2);
QDir::setCurrent(testDataDir + "/aggregateDependencyLinking");
QbsRunParameters params{QStringList{"-p", "multi_arch_lib"}};
@@ -680,6 +713,72 @@ void TestBlackboxApple::bundleStructure_data()
QTest::newRow("G") << "G" << "com.apple.product-type.in-app-purchase-content";
}
+void TestBlackboxApple::codesign()
+{
+ QFETCH(bool, isBundle);
+ QFETCH(bool, enableSigning);
+
+ QDir::setCurrent(testDataDir + "/codesign");
+ QbsRunParameters params(QStringList{"qbs.installPrefix:''"});
+ params.arguments
+ << QStringLiteral("project.isBundle:%1").arg(isBundle ? "true" : "false");
+ params.arguments
+ << QStringLiteral("project.enableSigning:%1").arg(enableSigning ? "true" : "false");
+
+ rmDirR(relativeBuildDir());
+ QCOMPARE(runQbs(params), 0);
+
+ const auto appName = isBundle ? QStringLiteral("A.app") : QStringLiteral("A");
+ const auto appPath = defaultInstallRoot + "/" + appName;
+ QVERIFY(QFileInfo(appPath).exists());
+ auto codeSignInfo = getCodeSignInfo(appPath);
+ QVERIFY(codeSignInfo.first != CodeSignResult::Failed);
+ QCOMPARE(codeSignInfo.first == CodeSignResult::Signed, enableSigning);
+ QCOMPARE(codeSignInfo.second.isEmpty(), !enableSigning);
+ if (!codeSignInfo.second.isEmpty()) {
+ QVERIFY(codeSignInfo.second.contains(QByteArrayLiteral("Executable")));
+ QVERIFY(codeSignInfo.second.contains(QByteArrayLiteral("Identifier")));
+ QCOMPARE(codeSignInfo.second.value(QByteArrayLiteral("Signature")), "adhoc");
+ }
+
+ const auto libName = isBundle ? QStringLiteral("B.framework") : QStringLiteral("libB.dylib");
+ const auto libPath = defaultInstallRoot + "/" + libName;
+ QVERIFY(QFileInfo(libPath).exists());
+ codeSignInfo = getCodeSignInfo(libPath);
+ QVERIFY(codeSignInfo.first != CodeSignResult::Failed);
+ QCOMPARE(codeSignInfo.first == CodeSignResult::Signed, enableSigning);
+ QCOMPARE(codeSignInfo.second.isEmpty(), !enableSigning);
+ if (!codeSignInfo.second.isEmpty()) {
+ QVERIFY(codeSignInfo.second.contains(QByteArrayLiteral("Executable")));
+ QVERIFY(codeSignInfo.second.contains(QByteArrayLiteral("Identifier")));
+ QCOMPARE(codeSignInfo.second.value(QByteArrayLiteral("Signature")), "adhoc");
+ }
+
+ const auto pluginPath = defaultInstallRoot + "/" + QStringLiteral("C.bundle");
+ QVERIFY(QFileInfo(pluginPath).exists());
+ QVERIFY(QFileInfo(pluginPath).isDir() == isBundle);
+ codeSignInfo = getCodeSignInfo(pluginPath);
+ QVERIFY(codeSignInfo.first != CodeSignResult::Failed);
+ QCOMPARE(codeSignInfo.first == CodeSignResult::Signed, enableSigning);
+ QCOMPARE(codeSignInfo.second.isEmpty(), !enableSigning);
+ if (!codeSignInfo.second.isEmpty()) {
+ QVERIFY(codeSignInfo.second.contains(QByteArrayLiteral("Executable")));
+ QVERIFY(codeSignInfo.second.contains(QByteArrayLiteral("Identifier")));
+ QCOMPARE(codeSignInfo.second.value(QByteArrayLiteral("Signature")), "adhoc");
+ }
+}
+
+void TestBlackboxApple::codesign_data()
+{
+ QTest::addColumn<bool>("isBundle");
+ QTest::addColumn<bool>("enableSigning");
+
+ QTest::newRow("bundle, unsigned") << true << false;
+ QTest::newRow("standalone, unsigned") << false << false;
+ QTest::newRow("bundle, signed") << true << true;
+ QTest::newRow("standalone, signed") << false << true;
+}
+
void TestBlackboxApple::deploymentTarget()
{
QFETCH(QString, sdk);
diff --git a/tests/auto/blackbox/tst_blackboxapple.h b/tests/auto/blackbox/tst_blackboxapple.h
index eeaa28d2f..32eee2432 100644
--- a/tests/auto/blackbox/tst_blackboxapple.h
+++ b/tests/auto/blackbox/tst_blackboxapple.h
@@ -55,6 +55,8 @@ private slots:
void assetCatalogsMultiple();
void bundleStructure();
void bundleStructure_data();
+ void codesign();
+ void codesign_data();
void deploymentTarget();
void deploymentTarget_data();
void dmg();
diff --git a/tests/auto/blackbox/tst_blackboxbaremetal.cpp b/tests/auto/blackbox/tst_blackboxbaremetal.cpp
index 41f50a0ed..d32abf82a 100644
--- a/tests/auto/blackbox/tst_blackboxbaremetal.cpp
+++ b/tests/auto/blackbox/tst_blackboxbaremetal.cpp
@@ -32,6 +32,7 @@
#include "../shared.h"
+#include <QtCore/qdir.h>
#include <QtCore/qregularexpression.h>
static bool extractToolset(const QByteArray &output,
@@ -47,6 +48,17 @@ static bool extractToolset(const QByteArray &output,
return true;
}
+static bool extractCompilerIncludePaths(const QByteArray &output, QStringList &compilerIncludePaths)
+{
+ const QRegularExpression re("%%([^%%]+)%%");
+ QRegularExpressionMatchIterator it = re.globalMatch(output);
+ if (!it.hasNext())
+ return false;
+ const QRegularExpressionMatch match = it.next();
+ compilerIncludePaths = match.captured(1).split(",");
+ return true;
+}
+
static QByteArray unsupportedToolsetMessage(const QByteArray &output)
{
QByteArray toolchain;
@@ -142,6 +154,22 @@ void TestBlackboxBareMetal::distributionIncludePaths()
QCOMPARE(runQbs(), 0);
}
+void TestBlackboxBareMetal::compilerIncludePaths()
+{
+ QDir::setCurrent(testDataDir + "/compiler-include-paths");
+ QCOMPARE(runQbs(QbsRunParameters("resolve", QStringList("-n"))), 0);
+ if (!m_qbsStdout.contains("compilerIncludePaths:"))
+ QFAIL("No compiler include paths exists");
+
+ QStringList includePaths;
+ QVERIFY(extractCompilerIncludePaths(m_qbsStdout, includePaths));
+ QVERIFY(includePaths.count() > 0);
+ for (const auto &includePath : includePaths) {
+ const QDir dir(includePath);
+ QVERIFY(dir.exists());
+ }
+}
+
void TestBlackboxBareMetal::preincludeHeaders()
{
QDir::setCurrent(testDataDir + "/preinclude-headers");
@@ -216,4 +244,11 @@ void TestBlackboxBareMetal::linkerMapFile()
QCOMPARE(regularFileExists(linkerMap), generateMap);
}
+void TestBlackboxBareMetal::compilerDefinesByLanguage()
+{
+ QDir::setCurrent(testDataDir + "/compiler-defines-by-language");
+ QbsRunParameters params(QStringList{ "-f", "compiler-defines-by-language.qbs" });
+ QCOMPARE(runQbs(params), 0);
+}
+
QTEST_MAIN(TestBlackboxBareMetal)
diff --git a/tests/auto/blackbox/tst_blackboxbaremetal.h b/tests/auto/blackbox/tst_blackboxbaremetal.h
index 3695cb1c3..39d2f36c9 100644
--- a/tests/auto/blackbox/tst_blackboxbaremetal.h
+++ b/tests/auto/blackbox/tst_blackboxbaremetal.h
@@ -52,6 +52,7 @@ private slots:
void userIncludePaths();
void systemIncludePaths();
void distributionIncludePaths();
+ void compilerIncludePaths();
void preincludeHeaders();
@@ -63,6 +64,8 @@ private slots:
void linkerMapFile_data();
void linkerMapFile();
+ void compilerDefinesByLanguage();
+
private:
};
diff --git a/tests/auto/blackbox/tst_blackboxbase.h b/tests/auto/blackbox/tst_blackboxbase.h
index ed9a233de..d020b7cd9 100644
--- a/tests/auto/blackbox/tst_blackboxbase.h
+++ b/tests/auto/blackbox/tst_blackboxbase.h
@@ -60,7 +60,14 @@ public:
expectCrash = false;
profile = profileName();
settingsDir = settings()->baseDirectory();
- environment = QProcessEnvironment::systemEnvironment();
+ environment = defaultEnvironment();
+ }
+
+ static QProcessEnvironment defaultEnvironment()
+ {
+ auto result = QProcessEnvironment::systemEnvironment();
+ result.insert(QStringLiteral("QBS_AUTOTEST_CODE_SIGNING_REQUIRED"), QStringLiteral("0"));
+ return result;
}
QString command;
diff --git a/tests/auto/shared.h b/tests/auto/shared.h
index 8dced2062..e97fa9166 100644
--- a/tests/auto/shared.h
+++ b/tests/auto/shared.h
@@ -159,7 +159,10 @@ inline QByteArray diffText(const QByteArray &actual, const QByteArray &expected)
}
auto addLines = [&result, &n] (const QList<QByteArray> &lines) {
for (const QByteArray &line : qAsConst(lines)) {
- result += QStringLiteral("%1: %2\n").arg(n).arg(QString::fromUtf8(line));
+ result += QStringLiteral("%1: %2\n")
+ .arg(n)
+ .arg(QString::fromUtf8(line))
+ .toUtf8();
n++;
}
};