diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/api/testdata/add-qobject-macro-to-cpp-file/main.cpp (renamed from tests/auto/blackbox/testdata/add-qobject-macro-to-cpp-file/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/add-qobject-macro-to-cpp-file/object.cpp (renamed from tests/auto/blackbox/testdata/add-qobject-macro-to-cpp-file/object.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/add-qobject-macro-to-cpp-file/object.h (renamed from tests/auto/blackbox/testdata/add-qobject-macro-to-cpp-file/object.h) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/add-qobject-macro-to-cpp-file/project.qbs (renamed from tests/auto/blackbox/testdata/add-qobject-macro-to-cpp-file/project.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/added-file-persistent/file.cpp (renamed from tests/auto/blackbox/testdata/added-file-persistent/file.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/added-file-persistent/main.cpp (renamed from tests/auto/blackbox/testdata/added-file-persistent/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/added-file-persistent/project.qbs (renamed from tests/auto/blackbox/testdata/added-file-persistent/project.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/app-without-sources/a.c (renamed from tests/auto/blackbox/testdata/appWithoutSources/a.c) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/app-without-sources/b.c (renamed from tests/auto/blackbox/testdata/appWithoutSources/b.c) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/app-without-sources/project.qbs (renamed from tests/auto/blackbox/testdata/appWithoutSources/project.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/base-properties/imports/Bar.qbs (renamed from tests/auto/blackbox/testdata/baseProperties/imports/Bar.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/base-properties/imports/Foo.qbs (renamed from tests/auto/blackbox/testdata/baseProperties/imports/Foo.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/base-properties/main.cpp (renamed from tests/auto/blackbox/testdata/baseProperties/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/base-properties/prj.qbs (renamed from tests/auto/blackbox/testdata/baseProperties/prj.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/build-properties-source/main.cpp (renamed from tests/auto/blackbox/testdata/buildproperties_source/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/build-properties-source/project.qbs (renamed from tests/auto/blackbox/testdata/buildproperties_source/bp_source.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/change-dependent-lib/change-dependent-lib.qbs (renamed from tests/auto/blackbox/testdata/change-dependent-lib/change-dependent-lib.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/change-dependent-lib/main.cpp (renamed from tests/auto/blackbox/testdata/change-dependent-lib/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/change-dependent-lib/mylib.cpp (renamed from tests/auto/blackbox/testdata/change-dependent-lib/mylib.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/codegen/foo.txt (renamed from tests/auto/blackbox/testdata/codegen/foo.txt) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/codegen/project.qbs (renamed from tests/auto/blackbox/testdata/codegen/codegen.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/disable-product/project.qbs (renamed from tests/auto/blackbox/testdata/disable-product/project.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/disabled-product/disabledProduct.qbs (renamed from tests/auto/blackbox/testdata/disabledProduct/disabledProduct.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/disabled-product/main.cpp (renamed from tests/auto/blackbox/testdata/disabledProduct/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/disabled-project/disabled_project.qbs (renamed from tests/auto/blackbox/testdata/disabledProject/disabled_project.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/duplicate-product-names/explicit.qbs (renamed from tests/auto/blackbox/testdata/duplicateProductNames/explicit.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/duplicate-product-names/implicit-indirect.qbs (renamed from tests/auto/blackbox/testdata/duplicateProductNames/implicit-indirect.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/duplicate-product-names/implicit.qbs (renamed from tests/auto/blackbox/testdata/duplicateProductNames/implicit.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/duplicate-product-names/subdir1/subproject.qbs (renamed from tests/auto/blackbox/testdata/duplicateProductNames/subdir1/subproject.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/duplicate-product-names/subdir2/subproject.qbs (renamed from tests/auto/blackbox/testdata/duplicateProductNames/subdir2/subproject.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/dynamic-libs/lib1.cpp (renamed from tests/auto/blackbox/testdata/dynamicLibs/lib1.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/dynamic-libs/lib2.cpp (renamed from tests/auto/blackbox/testdata/dynamicLibs/lib2.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/dynamic-libs/lib3.cpp (renamed from tests/auto/blackbox/testdata/dynamicLibs/lib3.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/dynamic-libs/lib4.cpp (renamed from tests/auto/blackbox/testdata/dynamicLibs/lib4.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/dynamic-libs/lib4.h (renamed from tests/auto/blackbox/testdata/dynamicLibs/lib4.h) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/dynamic-libs/link_dynamiclib.qbs (renamed from tests/auto/blackbox/testdata/dynamicLibs/link_dynamiclib.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/dynamic-libs/main.cpp (renamed from tests/auto/blackbox/testdata/dynamicLibs/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/empty-filetag-list/dontcompilethis.cpp (renamed from tests/auto/blackbox/testdata/empty-filetag-list/dontcompilethis.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/empty-filetag-list/project.qbs (renamed from tests/auto/blackbox/testdata/empty-filetag-list/project.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/empty-submodules-list/project.qbs (renamed from tests/auto/blackbox/testdata/empty-submodules-list/project.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/explicitly-depends-on/dependency.txt (renamed from tests/auto/blackbox/testdata/explicitlyDependsOn/dependency.txt) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/explicitly-depends-on/project.qbs (renamed from tests/auto/blackbox/testdata/explicitlyDependsOn/project.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/export-simple/lib1.cpp (renamed from tests/auto/blackbox/testdata/exportSimple/lib1.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/export-simple/main.cpp (renamed from tests/auto/blackbox/testdata/exportSimple/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/export-simple/project.qbs (renamed from tests/auto/blackbox/testdata/exportSimple/project.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/export-with-recursive-depends/main1.cpp (renamed from tests/auto/blackbox/testdata/exportWithRecursiveDepends/main1.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/export-with-recursive-depends/main2.cpp (renamed from tests/auto/blackbox/testdata/exportWithRecursiveDepends/main2.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/export-with-recursive-depends/project.qbs (renamed from tests/auto/blackbox/testdata/exportWithRecursiveDepends/project.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/export-with-recursive-depends/qbs/modules/module1/module1.qbs (renamed from tests/auto/blackbox/testdata/exportWithRecursiveDepends/qbs/modules/module1/module1.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/export-with-recursive-depends/qbs/modules/module2/module2.qbs (renamed from tests/auto/blackbox/testdata/exportWithRecursiveDepends/qbs/modules/module2/module2.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/file-tagger/bla.txt (renamed from tests/auto/blackbox/testdata/fileTagger/bla.txt) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/file-tagger/moc_cpp.qbs (renamed from tests/auto/blackbox/testdata/fileTagger/moc_cpp.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/inherit-qbs-search-paths/imports/Foo.qbs (renamed from tests/auto/blackbox/testdata/inheritQbsSearchPaths/imports/Foo.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/inherit-qbs-search-paths/main.cpp (renamed from tests/auto/blackbox/testdata/inheritQbsSearchPaths/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/inherit-qbs-search-paths/prj.qbs (renamed from tests/auto/blackbox/testdata/inheritQbsSearchPaths/prj.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/inherit-qbs-search-paths/subdir/modules/bli/m.qbs (renamed from tests/auto/blackbox/testdata/inheritQbsSearchPaths/subdir/modules/bli/m.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/lib-same-source/main.cpp (renamed from tests/auto/blackbox/testdata/lib_samesource/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/lib-same-source/project.qbs (renamed from tests/auto/blackbox/testdata/lib_samesource/lib.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/link-static-lib/helper1/helper1.cpp (renamed from tests/auto/blackbox/testdata/link_staticlib/helper1/helper1.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/link-static-lib/helper1/helper1.h (renamed from tests/auto/blackbox/testdata/link_staticlib/helper1/helper1.h) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/link-static-lib/helper2/helper2.cpp (renamed from tests/auto/blackbox/testdata/link_staticlib/helper2/helper2.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/link-static-lib/helper2/helper2.h (renamed from tests/auto/blackbox/testdata/link_staticlib/helper2/helper2.h) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/link-static-lib/main.cpp (renamed from tests/auto/blackbox/testdata/link_staticlib/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/link-static-lib/mystaticlib.cpp (renamed from tests/auto/blackbox/testdata/link_staticlib/mystaticlib.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/link-static-lib/mystaticlibhelper.cpp (renamed from tests/auto/blackbox/testdata/link_staticlib/mystaticlibhelper.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/link-static-lib/project.qbs (renamed from tests/auto/blackbox/testdata/link_staticlib/link_staticlib.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/lots-of-dots/dotty.matrix.ui (renamed from tests/auto/blackbox/testdata/lotsofdots/dotty.matrix.ui) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/lots-of-dots/m.a.i.n.cpp (renamed from tests/auto/blackbox/testdata/lotsofdots/m.a.i.n.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/lots-of-dots/object.narf.cpp (renamed from tests/auto/blackbox/testdata/lotsofdots/object.narf.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/lots-of-dots/object.narf.h (renamed from tests/auto/blackbox/testdata/lotsofdots/object.narf.h) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/lots-of-dots/polka.dots.qrc (renamed from tests/auto/blackbox/testdata/lotsofdots/polka.dots.qrc) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/lots-of-dots/project.qbs (renamed from tests/auto/blackbox/testdata/lotsofdots/lots.of.dots.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/missing-qobject-header/main.cpp (renamed from tests/auto/blackbox/testdata/missingqobjectheader/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/missing-qobject-header/myobject.cpp (renamed from tests/auto/blackbox/testdata/missingqobjectheader/myobject.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/missing-qobject-header/myobject.h (renamed from tests/auto/blackbox/testdata/missingqobjectheader/myobject.h) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/moc-cpp/bla.cpp (renamed from tests/auto/blackbox/testdata/moc_cpp/bla.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/moc-cpp/project.qbs (renamed from tests/auto/blackbox/testdata/moc_cpp/moc_cpp.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/moc-hpp-included/object.cpp (renamed from tests/auto/blackbox/testdata/moc_hpp_included/object.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/moc-hpp-included/object.h (renamed from tests/auto/blackbox/testdata/moc_hpp/object.h) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/moc-hpp-included/project.qbs (renamed from tests/auto/blackbox/testdata/moc_hpp_included/moc_hpp_included.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/moc-hpp/object.cpp (renamed from tests/auto/blackbox/testdata/moc_hpp/object.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/moc-hpp/object.h (renamed from tests/auto/blackbox/testdata/moc_hpp_included/object.h) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/moc-hpp/project.qbs (renamed from tests/auto/blackbox/testdata/moc_hpp/moc_hpp.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/new-output-artifact-in-dependency/lib.cpp (renamed from tests/auto/blackbox/testdata/new-output-artifact-in-dependency/lib.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/new-output-artifact-in-dependency/main.cpp (renamed from tests/auto/blackbox/testdata/new-output-artifact-in-dependency/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/new-output-artifact-in-dependency/project.qbs (renamed from tests/auto/blackbox/testdata/new-output-artifact-in-dependency/project.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/new-pattern-match/project.qbs (renamed from tests/auto/blackbox/testdata/new-pattern-match/project.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/objc/main.mm (renamed from tests/auto/blackbox/testdata/objc/main.mm) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/objc/objc.qbs (renamed from tests/auto/blackbox/testdata/objc/objc.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/precompiled-header/main.cpp (renamed from tests/auto/blackbox/testdata/precompiledHeader/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/precompiled-header/myobject.cpp (renamed from tests/auto/blackbox/testdata/precompiledHeader/myobject.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/precompiled-header/myobject.h (renamed from tests/auto/blackbox/testdata/precompiledHeader/myobject.h) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/precompiled-header/project.qbs (renamed from tests/auto/blackbox/testdata/precompiledHeader/precompiledHeader.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/precompiled-header/stable.h (renamed from tests/auto/blackbox/testdata/precompiledHeader/stable.h) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/project-with-properties-item/project.qbs (renamed from tests/auto/blackbox/testdata/project-with-properties-item/project.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/properties-blocks/main.cpp (renamed from tests/auto/blackbox/testdata/propertiesBlocks/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/properties-blocks/propertiesblocks.qbs (renamed from tests/auto/blackbox/testdata/propertiesBlocks/propertiesblocks.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/qt5-plugin/echointerface.h (renamed from tests/auto/blackbox/testdata/qt5plugin/echointerface.h) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/qt5-plugin/echoplugin.cpp (renamed from tests/auto/blackbox/testdata/qt5plugin/echoplugin.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/qt5-plugin/echoplugin.h (renamed from tests/auto/blackbox/testdata/qt5plugin/echoplugin.h) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/qt5-plugin/echoplugin.json.source (renamed from tests/auto/blackbox/testdata/qt5plugin/echoplugin.json.source) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/qt5-plugin/echoplugin_dummy.cpp (renamed from tests/auto/blackbox/testdata/qt5plugin/echoplugin_dummy.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/qt5-plugin/project.qbs (renamed from tests/auto/blackbox/testdata/qt5plugin/plugin.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/rc/main.cpp (renamed from tests/auto/blackbox/testdata/rc/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/rc/rc.qbs (renamed from tests/auto/blackbox/testdata/rc/rc.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/rc/test.rc (renamed from tests/auto/blackbox/testdata/rc/test.rc) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/remove-file-dependency/main.cpp (renamed from tests/auto/blackbox/testdata/removeFileDependency/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/remove-file-dependency/removeFileDependency.qbs (renamed from tests/auto/blackbox/testdata/removeFileDependency/removeFileDependency.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/remove-file-dependency/someheader.h (renamed from tests/auto/blackbox/testdata/removeFileDependency/someheader.h) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/rename-product/lib.cpp (renamed from tests/auto/blackbox/testdata/renameProduct/lib.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/rename-product/main.cpp (renamed from tests/auto/blackbox/testdata/renameProduct/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/rename-product/rename.qbs (renamed from tests/auto/blackbox/testdata/renameProduct/rename.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/rename-target-artifact/lib.cpp (renamed from tests/auto/blackbox/testdata/renameTargetArtifact/lib.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/rename-target-artifact/main.cpp (renamed from tests/auto/blackbox/testdata/renameTargetArtifact/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/rename-target-artifact/rename.qbs (renamed from tests/auto/blackbox/testdata/renameTargetArtifact/rename.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/same-base-name/lib.c (renamed from tests/auto/blackbox/testdata/sameBaseName/lib.c) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/same-base-name/lib.cpp (renamed from tests/auto/blackbox/testdata/sameBaseName/lib.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/same-base-name/lib.m (renamed from tests/auto/blackbox/testdata/sameBaseName/lib.m) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/same-base-name/lib.mm (renamed from tests/auto/blackbox/testdata/sameBaseName/lib.mm) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/same-base-name/main.c (renamed from tests/auto/blackbox/testdata/sameBaseName/main.c) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/same-base-name/project.qbs (renamed from tests/auto/blackbox/testdata/sameBaseName/sameBaseName.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/simple-probe/main.cpp (renamed from tests/auto/blackbox/testdata/simpleProbe/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/simple-probe/project.qbs (renamed from tests/auto/blackbox/testdata/simpleProbe/simpleProbe.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/soft-dependency/main.cpp (renamed from tests/auto/blackbox/testdata/soft-dependency/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/soft-dependency/project.qbs (renamed from tests/auto/blackbox/testdata/soft-dependency/project.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/static-lib-deps/a1.cpp (renamed from tests/auto/blackbox/testdata/staticLibDeps/a1.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/static-lib-deps/a2.cpp (renamed from tests/auto/blackbox/testdata/staticLibDeps/a2.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/static-lib-deps/b.cpp (renamed from tests/auto/blackbox/testdata/staticLibDeps/b.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/static-lib-deps/c.cpp (renamed from tests/auto/blackbox/testdata/staticLibDeps/c.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/static-lib-deps/d.cpp (renamed from tests/auto/blackbox/testdata/staticLibDeps/d.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/static-lib-deps/e.cpp (renamed from tests/auto/blackbox/testdata/staticLibDeps/e.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/static-lib-deps/main.cpp (renamed from tests/auto/blackbox/testdata/staticLibDeps/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/static-lib-deps/project.qbs (renamed from tests/auto/blackbox/testdata/staticLibDeps/dep.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/transformers/main.cpp (renamed from tests/auto/blackbox/testdata/transformers/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/transformers/transformers.qbs (renamed from tests/auto/blackbox/testdata/transformers/transformers.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/type-change/main.cpp (renamed from tests/auto/blackbox/testdata/type-change/main.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/type-change/project.qbs (renamed from tests/auto/blackbox/testdata/type-change/project.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/uic/bla.cpp (renamed from tests/auto/blackbox/testdata/uic/bla.cpp) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/uic/bla.h (renamed from tests/auto/blackbox/testdata/uic/bla.h) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/uic/ui.h (renamed from tests/auto/blackbox/testdata/uic/ui.h) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/uic/ui.ui (renamed from tests/auto/blackbox/testdata/uic/ui.ui) | 0 | ||||
-rw-r--r-- | tests/auto/api/testdata/uic/uic.qbs (renamed from tests/auto/blackbox/testdata/uic/uic.qbs) | 0 | ||||
-rw-r--r-- | tests/auto/api/tst_api.cpp | 815 | ||||
-rw-r--r-- | tests/auto/api/tst_api.h | 54 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/subprojects/resources/imports/LibraryType/type.js | 1 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/subprojects/resources/modules/QtCoreDepender/qtcoredepender.qbs | 5 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/subprojects/subproject1/main.cpp | 6 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/subprojects/subproject2/subproject2.qbs | 15 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/subprojects/subproject2/subproject3/subproject3.qbs | 16 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/subprojects/subproject2/subproject3/testlib.cpp | 3 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata/subprojects/toplevelproject.qbs | 19 | ||||
-rw-r--r-- | tests/auto/blackbox/tst_blackbox.cpp | 764 | ||||
-rw-r--r-- | tests/auto/blackbox/tst_blackbox.h | 49 | ||||
-rw-r--r-- | tests/auto/shared.h | 30 |
154 files changed, 924 insertions, 853 deletions
diff --git a/tests/auto/blackbox/testdata/add-qobject-macro-to-cpp-file/main.cpp b/tests/auto/api/testdata/add-qobject-macro-to-cpp-file/main.cpp index 940a7628d..940a7628d 100644 --- a/tests/auto/blackbox/testdata/add-qobject-macro-to-cpp-file/main.cpp +++ b/tests/auto/api/testdata/add-qobject-macro-to-cpp-file/main.cpp diff --git a/tests/auto/blackbox/testdata/add-qobject-macro-to-cpp-file/object.cpp b/tests/auto/api/testdata/add-qobject-macro-to-cpp-file/object.cpp index aab24f6c0..aab24f6c0 100644 --- a/tests/auto/blackbox/testdata/add-qobject-macro-to-cpp-file/object.cpp +++ b/tests/auto/api/testdata/add-qobject-macro-to-cpp-file/object.cpp diff --git a/tests/auto/blackbox/testdata/add-qobject-macro-to-cpp-file/object.h b/tests/auto/api/testdata/add-qobject-macro-to-cpp-file/object.h index 37070b494..37070b494 100644 --- a/tests/auto/blackbox/testdata/add-qobject-macro-to-cpp-file/object.h +++ b/tests/auto/api/testdata/add-qobject-macro-to-cpp-file/object.h diff --git a/tests/auto/blackbox/testdata/add-qobject-macro-to-cpp-file/project.qbs b/tests/auto/api/testdata/add-qobject-macro-to-cpp-file/project.qbs index 40c5395ef..40c5395ef 100644 --- a/tests/auto/blackbox/testdata/add-qobject-macro-to-cpp-file/project.qbs +++ b/tests/auto/api/testdata/add-qobject-macro-to-cpp-file/project.qbs diff --git a/tests/auto/blackbox/testdata/added-file-persistent/file.cpp b/tests/auto/api/testdata/added-file-persistent/file.cpp index 8101b05dc..8101b05dc 100644 --- a/tests/auto/blackbox/testdata/added-file-persistent/file.cpp +++ b/tests/auto/api/testdata/added-file-persistent/file.cpp diff --git a/tests/auto/blackbox/testdata/added-file-persistent/main.cpp b/tests/auto/api/testdata/added-file-persistent/main.cpp index 1921f1feb..1921f1feb 100644 --- a/tests/auto/blackbox/testdata/added-file-persistent/main.cpp +++ b/tests/auto/api/testdata/added-file-persistent/main.cpp diff --git a/tests/auto/blackbox/testdata/added-file-persistent/project.qbs b/tests/auto/api/testdata/added-file-persistent/project.qbs index 672886646..672886646 100644 --- a/tests/auto/blackbox/testdata/added-file-persistent/project.qbs +++ b/tests/auto/api/testdata/added-file-persistent/project.qbs diff --git a/tests/auto/blackbox/testdata/appWithoutSources/a.c b/tests/auto/api/testdata/app-without-sources/a.c index bf7759e11..bf7759e11 100644 --- a/tests/auto/blackbox/testdata/appWithoutSources/a.c +++ b/tests/auto/api/testdata/app-without-sources/a.c diff --git a/tests/auto/blackbox/testdata/appWithoutSources/b.c b/tests/auto/api/testdata/app-without-sources/b.c index e3841fa32..e3841fa32 100644 --- a/tests/auto/blackbox/testdata/appWithoutSources/b.c +++ b/tests/auto/api/testdata/app-without-sources/b.c diff --git a/tests/auto/blackbox/testdata/appWithoutSources/project.qbs b/tests/auto/api/testdata/app-without-sources/project.qbs index dca195e29..dca195e29 100644 --- a/tests/auto/blackbox/testdata/appWithoutSources/project.qbs +++ b/tests/auto/api/testdata/app-without-sources/project.qbs diff --git a/tests/auto/blackbox/testdata/baseProperties/imports/Bar.qbs b/tests/auto/api/testdata/base-properties/imports/Bar.qbs index 07ab724e4..07ab724e4 100644 --- a/tests/auto/blackbox/testdata/baseProperties/imports/Bar.qbs +++ b/tests/auto/api/testdata/base-properties/imports/Bar.qbs diff --git a/tests/auto/blackbox/testdata/baseProperties/imports/Foo.qbs b/tests/auto/api/testdata/base-properties/imports/Foo.qbs index 563992434..563992434 100644 --- a/tests/auto/blackbox/testdata/baseProperties/imports/Foo.qbs +++ b/tests/auto/api/testdata/base-properties/imports/Foo.qbs diff --git a/tests/auto/blackbox/testdata/baseProperties/main.cpp b/tests/auto/api/testdata/base-properties/main.cpp index 069cf9cb3..069cf9cb3 100644 --- a/tests/auto/blackbox/testdata/baseProperties/main.cpp +++ b/tests/auto/api/testdata/base-properties/main.cpp diff --git a/tests/auto/blackbox/testdata/baseProperties/prj.qbs b/tests/auto/api/testdata/base-properties/prj.qbs index a43b930dc..a43b930dc 100644 --- a/tests/auto/blackbox/testdata/baseProperties/prj.qbs +++ b/tests/auto/api/testdata/base-properties/prj.qbs diff --git a/tests/auto/blackbox/testdata/buildproperties_source/main.cpp b/tests/auto/api/testdata/build-properties-source/main.cpp index a5992a691..a5992a691 100644 --- a/tests/auto/blackbox/testdata/buildproperties_source/main.cpp +++ b/tests/auto/api/testdata/build-properties-source/main.cpp diff --git a/tests/auto/blackbox/testdata/buildproperties_source/bp_source.qbs b/tests/auto/api/testdata/build-properties-source/project.qbs index df7649625..df7649625 100644 --- a/tests/auto/blackbox/testdata/buildproperties_source/bp_source.qbs +++ b/tests/auto/api/testdata/build-properties-source/project.qbs diff --git a/tests/auto/blackbox/testdata/change-dependent-lib/change-dependent-lib.qbs b/tests/auto/api/testdata/change-dependent-lib/change-dependent-lib.qbs index ac5778134..ac5778134 100644 --- a/tests/auto/blackbox/testdata/change-dependent-lib/change-dependent-lib.qbs +++ b/tests/auto/api/testdata/change-dependent-lib/change-dependent-lib.qbs diff --git a/tests/auto/blackbox/testdata/change-dependent-lib/main.cpp b/tests/auto/api/testdata/change-dependent-lib/main.cpp index d5ade08e2..d5ade08e2 100644 --- a/tests/auto/blackbox/testdata/change-dependent-lib/main.cpp +++ b/tests/auto/api/testdata/change-dependent-lib/main.cpp diff --git a/tests/auto/blackbox/testdata/change-dependent-lib/mylib.cpp b/tests/auto/api/testdata/change-dependent-lib/mylib.cpp index fc4a504d4..fc4a504d4 100644 --- a/tests/auto/blackbox/testdata/change-dependent-lib/mylib.cpp +++ b/tests/auto/api/testdata/change-dependent-lib/mylib.cpp diff --git a/tests/auto/blackbox/testdata/codegen/foo.txt b/tests/auto/api/testdata/codegen/foo.txt index 557db03de..557db03de 100644 --- a/tests/auto/blackbox/testdata/codegen/foo.txt +++ b/tests/auto/api/testdata/codegen/foo.txt diff --git a/tests/auto/blackbox/testdata/codegen/codegen.qbs b/tests/auto/api/testdata/codegen/project.qbs index 4b440fc51..4b440fc51 100644 --- a/tests/auto/blackbox/testdata/codegen/codegen.qbs +++ b/tests/auto/api/testdata/codegen/project.qbs diff --git a/tests/auto/blackbox/testdata/disable-product/project.qbs b/tests/auto/api/testdata/disable-product/project.qbs index 3aa7afd50..3aa7afd50 100644 --- a/tests/auto/blackbox/testdata/disable-product/project.qbs +++ b/tests/auto/api/testdata/disable-product/project.qbs diff --git a/tests/auto/blackbox/testdata/disabledProduct/disabledProduct.qbs b/tests/auto/api/testdata/disabled-product/disabledProduct.qbs index 0c44995c7..0c44995c7 100644 --- a/tests/auto/blackbox/testdata/disabledProduct/disabledProduct.qbs +++ b/tests/auto/api/testdata/disabled-product/disabledProduct.qbs diff --git a/tests/auto/blackbox/testdata/disabledProduct/main.cpp b/tests/auto/api/testdata/disabled-product/main.cpp index 1f5a432df..1f5a432df 100644 --- a/tests/auto/blackbox/testdata/disabledProduct/main.cpp +++ b/tests/auto/api/testdata/disabled-product/main.cpp diff --git a/tests/auto/blackbox/testdata/disabledProject/disabled_project.qbs b/tests/auto/api/testdata/disabled-project/disabled_project.qbs index 1461b70ad..1461b70ad 100644 --- a/tests/auto/blackbox/testdata/disabledProject/disabled_project.qbs +++ b/tests/auto/api/testdata/disabled-project/disabled_project.qbs diff --git a/tests/auto/blackbox/testdata/duplicateProductNames/explicit.qbs b/tests/auto/api/testdata/duplicate-product-names/explicit.qbs index 0183b411c..0183b411c 100644 --- a/tests/auto/blackbox/testdata/duplicateProductNames/explicit.qbs +++ b/tests/auto/api/testdata/duplicate-product-names/explicit.qbs diff --git a/tests/auto/blackbox/testdata/duplicateProductNames/implicit-indirect.qbs b/tests/auto/api/testdata/duplicate-product-names/implicit-indirect.qbs index 7164aa1c5..7164aa1c5 100644 --- a/tests/auto/blackbox/testdata/duplicateProductNames/implicit-indirect.qbs +++ b/tests/auto/api/testdata/duplicate-product-names/implicit-indirect.qbs diff --git a/tests/auto/blackbox/testdata/duplicateProductNames/implicit.qbs b/tests/auto/api/testdata/duplicate-product-names/implicit.qbs index f39f80626..f39f80626 100644 --- a/tests/auto/blackbox/testdata/duplicateProductNames/implicit.qbs +++ b/tests/auto/api/testdata/duplicate-product-names/implicit.qbs diff --git a/tests/auto/blackbox/testdata/duplicateProductNames/subdir1/subproject.qbs b/tests/auto/api/testdata/duplicate-product-names/subdir1/subproject.qbs index 6d16a3c53..6d16a3c53 100644 --- a/tests/auto/blackbox/testdata/duplicateProductNames/subdir1/subproject.qbs +++ b/tests/auto/api/testdata/duplicate-product-names/subdir1/subproject.qbs diff --git a/tests/auto/blackbox/testdata/duplicateProductNames/subdir2/subproject.qbs b/tests/auto/api/testdata/duplicate-product-names/subdir2/subproject.qbs index 6d16a3c53..6d16a3c53 100644 --- a/tests/auto/blackbox/testdata/duplicateProductNames/subdir2/subproject.qbs +++ b/tests/auto/api/testdata/duplicate-product-names/subdir2/subproject.qbs diff --git a/tests/auto/blackbox/testdata/dynamicLibs/lib1.cpp b/tests/auto/api/testdata/dynamic-libs/lib1.cpp index c47b0cfb1..c47b0cfb1 100644 --- a/tests/auto/blackbox/testdata/dynamicLibs/lib1.cpp +++ b/tests/auto/api/testdata/dynamic-libs/lib1.cpp diff --git a/tests/auto/blackbox/testdata/dynamicLibs/lib2.cpp b/tests/auto/api/testdata/dynamic-libs/lib2.cpp index 3c8b6dc6c..3c8b6dc6c 100644 --- a/tests/auto/blackbox/testdata/dynamicLibs/lib2.cpp +++ b/tests/auto/api/testdata/dynamic-libs/lib2.cpp diff --git a/tests/auto/blackbox/testdata/dynamicLibs/lib3.cpp b/tests/auto/api/testdata/dynamic-libs/lib3.cpp index f25d8e883..f25d8e883 100644 --- a/tests/auto/blackbox/testdata/dynamicLibs/lib3.cpp +++ b/tests/auto/api/testdata/dynamic-libs/lib3.cpp diff --git a/tests/auto/blackbox/testdata/dynamicLibs/lib4.cpp b/tests/auto/api/testdata/dynamic-libs/lib4.cpp index c0ead4721..c0ead4721 100644 --- a/tests/auto/blackbox/testdata/dynamicLibs/lib4.cpp +++ b/tests/auto/api/testdata/dynamic-libs/lib4.cpp diff --git a/tests/auto/blackbox/testdata/dynamicLibs/lib4.h b/tests/auto/api/testdata/dynamic-libs/lib4.h index 689e8d146..689e8d146 100644 --- a/tests/auto/blackbox/testdata/dynamicLibs/lib4.h +++ b/tests/auto/api/testdata/dynamic-libs/lib4.h diff --git a/tests/auto/blackbox/testdata/dynamicLibs/link_dynamiclib.qbs b/tests/auto/api/testdata/dynamic-libs/link_dynamiclib.qbs index 53cebc4a9..53cebc4a9 100644 --- a/tests/auto/blackbox/testdata/dynamicLibs/link_dynamiclib.qbs +++ b/tests/auto/api/testdata/dynamic-libs/link_dynamiclib.qbs diff --git a/tests/auto/blackbox/testdata/dynamicLibs/main.cpp b/tests/auto/api/testdata/dynamic-libs/main.cpp index ef6df12e3..ef6df12e3 100644 --- a/tests/auto/blackbox/testdata/dynamicLibs/main.cpp +++ b/tests/auto/api/testdata/dynamic-libs/main.cpp diff --git a/tests/auto/blackbox/testdata/empty-filetag-list/dontcompilethis.cpp b/tests/auto/api/testdata/empty-filetag-list/dontcompilethis.cpp index bac3b631d..bac3b631d 100644 --- a/tests/auto/blackbox/testdata/empty-filetag-list/dontcompilethis.cpp +++ b/tests/auto/api/testdata/empty-filetag-list/dontcompilethis.cpp diff --git a/tests/auto/blackbox/testdata/empty-filetag-list/project.qbs b/tests/auto/api/testdata/empty-filetag-list/project.qbs index 294616124..294616124 100644 --- a/tests/auto/blackbox/testdata/empty-filetag-list/project.qbs +++ b/tests/auto/api/testdata/empty-filetag-list/project.qbs diff --git a/tests/auto/blackbox/testdata/empty-submodules-list/project.qbs b/tests/auto/api/testdata/empty-submodules-list/project.qbs index 88b5e3177..88b5e3177 100644 --- a/tests/auto/blackbox/testdata/empty-submodules-list/project.qbs +++ b/tests/auto/api/testdata/empty-submodules-list/project.qbs diff --git a/tests/auto/blackbox/testdata/explicitlyDependsOn/dependency.txt b/tests/auto/api/testdata/explicitly-depends-on/dependency.txt index e69de29bb..e69de29bb 100644 --- a/tests/auto/blackbox/testdata/explicitlyDependsOn/dependency.txt +++ b/tests/auto/api/testdata/explicitly-depends-on/dependency.txt diff --git a/tests/auto/blackbox/testdata/explicitlyDependsOn/project.qbs b/tests/auto/api/testdata/explicitly-depends-on/project.qbs index 3db802717..3db802717 100644 --- a/tests/auto/blackbox/testdata/explicitlyDependsOn/project.qbs +++ b/tests/auto/api/testdata/explicitly-depends-on/project.qbs diff --git a/tests/auto/blackbox/testdata/exportSimple/lib1.cpp b/tests/auto/api/testdata/export-simple/lib1.cpp index c3102139d..c3102139d 100644 --- a/tests/auto/blackbox/testdata/exportSimple/lib1.cpp +++ b/tests/auto/api/testdata/export-simple/lib1.cpp diff --git a/tests/auto/blackbox/testdata/exportSimple/main.cpp b/tests/auto/api/testdata/export-simple/main.cpp index 6557bf8f1..6557bf8f1 100644 --- a/tests/auto/blackbox/testdata/exportSimple/main.cpp +++ b/tests/auto/api/testdata/export-simple/main.cpp diff --git a/tests/auto/blackbox/testdata/exportSimple/project.qbs b/tests/auto/api/testdata/export-simple/project.qbs index 96244671a..96244671a 100644 --- a/tests/auto/blackbox/testdata/exportSimple/project.qbs +++ b/tests/auto/api/testdata/export-simple/project.qbs diff --git a/tests/auto/blackbox/testdata/exportWithRecursiveDepends/main1.cpp b/tests/auto/api/testdata/export-with-recursive-depends/main1.cpp index 237c8ce18..237c8ce18 100644 --- a/tests/auto/blackbox/testdata/exportWithRecursiveDepends/main1.cpp +++ b/tests/auto/api/testdata/export-with-recursive-depends/main1.cpp diff --git a/tests/auto/blackbox/testdata/exportWithRecursiveDepends/main2.cpp b/tests/auto/api/testdata/export-with-recursive-depends/main2.cpp index c7f2e65ab..c7f2e65ab 100644 --- a/tests/auto/blackbox/testdata/exportWithRecursiveDepends/main2.cpp +++ b/tests/auto/api/testdata/export-with-recursive-depends/main2.cpp diff --git a/tests/auto/blackbox/testdata/exportWithRecursiveDepends/project.qbs b/tests/auto/api/testdata/export-with-recursive-depends/project.qbs index 045e65133..045e65133 100644 --- a/tests/auto/blackbox/testdata/exportWithRecursiveDepends/project.qbs +++ b/tests/auto/api/testdata/export-with-recursive-depends/project.qbs diff --git a/tests/auto/blackbox/testdata/exportWithRecursiveDepends/qbs/modules/module1/module1.qbs b/tests/auto/api/testdata/export-with-recursive-depends/qbs/modules/module1/module1.qbs index c1c4ad358..c1c4ad358 100644 --- a/tests/auto/blackbox/testdata/exportWithRecursiveDepends/qbs/modules/module1/module1.qbs +++ b/tests/auto/api/testdata/export-with-recursive-depends/qbs/modules/module1/module1.qbs diff --git a/tests/auto/blackbox/testdata/exportWithRecursiveDepends/qbs/modules/module2/module2.qbs b/tests/auto/api/testdata/export-with-recursive-depends/qbs/modules/module2/module2.qbs index 75a274631..75a274631 100644 --- a/tests/auto/blackbox/testdata/exportWithRecursiveDepends/qbs/modules/module2/module2.qbs +++ b/tests/auto/api/testdata/export-with-recursive-depends/qbs/modules/module2/module2.qbs diff --git a/tests/auto/blackbox/testdata/fileTagger/bla.txt b/tests/auto/api/testdata/file-tagger/bla.txt index 26185684a..26185684a 100644 --- a/tests/auto/blackbox/testdata/fileTagger/bla.txt +++ b/tests/auto/api/testdata/file-tagger/bla.txt diff --git a/tests/auto/blackbox/testdata/fileTagger/moc_cpp.qbs b/tests/auto/api/testdata/file-tagger/moc_cpp.qbs index ce7970f20..ce7970f20 100644 --- a/tests/auto/blackbox/testdata/fileTagger/moc_cpp.qbs +++ b/tests/auto/api/testdata/file-tagger/moc_cpp.qbs diff --git a/tests/auto/blackbox/testdata/inheritQbsSearchPaths/imports/Foo.qbs b/tests/auto/api/testdata/inherit-qbs-search-paths/imports/Foo.qbs index f6c1733b5..f6c1733b5 100644 --- a/tests/auto/blackbox/testdata/inheritQbsSearchPaths/imports/Foo.qbs +++ b/tests/auto/api/testdata/inherit-qbs-search-paths/imports/Foo.qbs diff --git a/tests/auto/blackbox/testdata/inheritQbsSearchPaths/main.cpp b/tests/auto/api/testdata/inherit-qbs-search-paths/main.cpp index 7382cd2dd..7382cd2dd 100644 --- a/tests/auto/blackbox/testdata/inheritQbsSearchPaths/main.cpp +++ b/tests/auto/api/testdata/inherit-qbs-search-paths/main.cpp diff --git a/tests/auto/blackbox/testdata/inheritQbsSearchPaths/prj.qbs b/tests/auto/api/testdata/inherit-qbs-search-paths/prj.qbs index ba8284f4f..ba8284f4f 100644 --- a/tests/auto/blackbox/testdata/inheritQbsSearchPaths/prj.qbs +++ b/tests/auto/api/testdata/inherit-qbs-search-paths/prj.qbs diff --git a/tests/auto/blackbox/testdata/inheritQbsSearchPaths/subdir/modules/bli/m.qbs b/tests/auto/api/testdata/inherit-qbs-search-paths/subdir/modules/bli/m.qbs index b4b93678a..b4b93678a 100644 --- a/tests/auto/blackbox/testdata/inheritQbsSearchPaths/subdir/modules/bli/m.qbs +++ b/tests/auto/api/testdata/inherit-qbs-search-paths/subdir/modules/bli/m.qbs diff --git a/tests/auto/blackbox/testdata/lib_samesource/main.cpp b/tests/auto/api/testdata/lib-same-source/main.cpp index 32de334c8..32de334c8 100644 --- a/tests/auto/blackbox/testdata/lib_samesource/main.cpp +++ b/tests/auto/api/testdata/lib-same-source/main.cpp diff --git a/tests/auto/blackbox/testdata/lib_samesource/lib.qbs b/tests/auto/api/testdata/lib-same-source/project.qbs index 063684b40..063684b40 100644 --- a/tests/auto/blackbox/testdata/lib_samesource/lib.qbs +++ b/tests/auto/api/testdata/lib-same-source/project.qbs diff --git a/tests/auto/blackbox/testdata/link_staticlib/helper1/helper1.cpp b/tests/auto/api/testdata/link-static-lib/helper1/helper1.cpp index 4ae0068d7..4ae0068d7 100644 --- a/tests/auto/blackbox/testdata/link_staticlib/helper1/helper1.cpp +++ b/tests/auto/api/testdata/link-static-lib/helper1/helper1.cpp diff --git a/tests/auto/blackbox/testdata/link_staticlib/helper1/helper1.h b/tests/auto/api/testdata/link-static-lib/helper1/helper1.h index 8ca6e5acf..8ca6e5acf 100644 --- a/tests/auto/blackbox/testdata/link_staticlib/helper1/helper1.h +++ b/tests/auto/api/testdata/link-static-lib/helper1/helper1.h diff --git a/tests/auto/blackbox/testdata/link_staticlib/helper2/helper2.cpp b/tests/auto/api/testdata/link-static-lib/helper2/helper2.cpp index 7a70aef5d..7a70aef5d 100644 --- a/tests/auto/blackbox/testdata/link_staticlib/helper2/helper2.cpp +++ b/tests/auto/api/testdata/link-static-lib/helper2/helper2.cpp diff --git a/tests/auto/blackbox/testdata/link_staticlib/helper2/helper2.h b/tests/auto/api/testdata/link-static-lib/helper2/helper2.h index 9306d8576..9306d8576 100644 --- a/tests/auto/blackbox/testdata/link_staticlib/helper2/helper2.h +++ b/tests/auto/api/testdata/link-static-lib/helper2/helper2.h diff --git a/tests/auto/blackbox/testdata/link_staticlib/main.cpp b/tests/auto/api/testdata/link-static-lib/main.cpp index cc0453ad6..cc0453ad6 100644 --- a/tests/auto/blackbox/testdata/link_staticlib/main.cpp +++ b/tests/auto/api/testdata/link-static-lib/main.cpp diff --git a/tests/auto/blackbox/testdata/link_staticlib/mystaticlib.cpp b/tests/auto/api/testdata/link-static-lib/mystaticlib.cpp index aa3138692..aa3138692 100644 --- a/tests/auto/blackbox/testdata/link_staticlib/mystaticlib.cpp +++ b/tests/auto/api/testdata/link-static-lib/mystaticlib.cpp diff --git a/tests/auto/blackbox/testdata/link_staticlib/mystaticlibhelper.cpp b/tests/auto/api/testdata/link-static-lib/mystaticlibhelper.cpp index 76a6a38e9..76a6a38e9 100644 --- a/tests/auto/blackbox/testdata/link_staticlib/mystaticlibhelper.cpp +++ b/tests/auto/api/testdata/link-static-lib/mystaticlibhelper.cpp diff --git a/tests/auto/blackbox/testdata/link_staticlib/link_staticlib.qbs b/tests/auto/api/testdata/link-static-lib/project.qbs index be12e01aa..be12e01aa 100644 --- a/tests/auto/blackbox/testdata/link_staticlib/link_staticlib.qbs +++ b/tests/auto/api/testdata/link-static-lib/project.qbs diff --git a/tests/auto/blackbox/testdata/lotsofdots/dotty.matrix.ui b/tests/auto/api/testdata/lots-of-dots/dotty.matrix.ui index 4b7d6a45f..4b7d6a45f 100644 --- a/tests/auto/blackbox/testdata/lotsofdots/dotty.matrix.ui +++ b/tests/auto/api/testdata/lots-of-dots/dotty.matrix.ui diff --git a/tests/auto/blackbox/testdata/lotsofdots/m.a.i.n.cpp b/tests/auto/api/testdata/lots-of-dots/m.a.i.n.cpp index 4975bc680..4975bc680 100644 --- a/tests/auto/blackbox/testdata/lotsofdots/m.a.i.n.cpp +++ b/tests/auto/api/testdata/lots-of-dots/m.a.i.n.cpp diff --git a/tests/auto/blackbox/testdata/lotsofdots/object.narf.cpp b/tests/auto/api/testdata/lots-of-dots/object.narf.cpp index a8761e53b..a8761e53b 100644 --- a/tests/auto/blackbox/testdata/lotsofdots/object.narf.cpp +++ b/tests/auto/api/testdata/lots-of-dots/object.narf.cpp diff --git a/tests/auto/blackbox/testdata/lotsofdots/object.narf.h b/tests/auto/api/testdata/lots-of-dots/object.narf.h index bb1868cc0..bb1868cc0 100644 --- a/tests/auto/blackbox/testdata/lotsofdots/object.narf.h +++ b/tests/auto/api/testdata/lots-of-dots/object.narf.h diff --git a/tests/auto/blackbox/testdata/lotsofdots/polka.dots.qrc b/tests/auto/api/testdata/lots-of-dots/polka.dots.qrc index 815b11002..815b11002 100644 --- a/tests/auto/blackbox/testdata/lotsofdots/polka.dots.qrc +++ b/tests/auto/api/testdata/lots-of-dots/polka.dots.qrc diff --git a/tests/auto/blackbox/testdata/lotsofdots/lots.of.dots.qbs b/tests/auto/api/testdata/lots-of-dots/project.qbs index 9654100fc..9654100fc 100644 --- a/tests/auto/blackbox/testdata/lotsofdots/lots.of.dots.qbs +++ b/tests/auto/api/testdata/lots-of-dots/project.qbs diff --git a/tests/auto/blackbox/testdata/missingqobjectheader/main.cpp b/tests/auto/api/testdata/missing-qobject-header/main.cpp index 191b3b316..191b3b316 100644 --- a/tests/auto/blackbox/testdata/missingqobjectheader/main.cpp +++ b/tests/auto/api/testdata/missing-qobject-header/main.cpp diff --git a/tests/auto/blackbox/testdata/missingqobjectheader/myobject.cpp b/tests/auto/api/testdata/missing-qobject-header/myobject.cpp index 249e198ad..249e198ad 100644 --- a/tests/auto/blackbox/testdata/missingqobjectheader/myobject.cpp +++ b/tests/auto/api/testdata/missing-qobject-header/myobject.cpp diff --git a/tests/auto/blackbox/testdata/missingqobjectheader/myobject.h b/tests/auto/api/testdata/missing-qobject-header/myobject.h index 46353c30e..46353c30e 100644 --- a/tests/auto/blackbox/testdata/missingqobjectheader/myobject.h +++ b/tests/auto/api/testdata/missing-qobject-header/myobject.h diff --git a/tests/auto/blackbox/testdata/moc_cpp/bla.cpp b/tests/auto/api/testdata/moc-cpp/bla.cpp index 26185684a..26185684a 100644 --- a/tests/auto/blackbox/testdata/moc_cpp/bla.cpp +++ b/tests/auto/api/testdata/moc-cpp/bla.cpp diff --git a/tests/auto/blackbox/testdata/moc_cpp/moc_cpp.qbs b/tests/auto/api/testdata/moc-cpp/project.qbs index 311d7c490..311d7c490 100644 --- a/tests/auto/blackbox/testdata/moc_cpp/moc_cpp.qbs +++ b/tests/auto/api/testdata/moc-cpp/project.qbs diff --git a/tests/auto/blackbox/testdata/moc_hpp_included/object.cpp b/tests/auto/api/testdata/moc-hpp-included/object.cpp index ef0b32417..ef0b32417 100644 --- a/tests/auto/blackbox/testdata/moc_hpp_included/object.cpp +++ b/tests/auto/api/testdata/moc-hpp-included/object.cpp diff --git a/tests/auto/blackbox/testdata/moc_hpp/object.h b/tests/auto/api/testdata/moc-hpp-included/object.h index 7d8f59c6c..7d8f59c6c 100644 --- a/tests/auto/blackbox/testdata/moc_hpp/object.h +++ b/tests/auto/api/testdata/moc-hpp-included/object.h diff --git a/tests/auto/blackbox/testdata/moc_hpp_included/moc_hpp_included.qbs b/tests/auto/api/testdata/moc-hpp-included/project.qbs index b144fb672..b144fb672 100644 --- a/tests/auto/blackbox/testdata/moc_hpp_included/moc_hpp_included.qbs +++ b/tests/auto/api/testdata/moc-hpp-included/project.qbs diff --git a/tests/auto/blackbox/testdata/moc_hpp/object.cpp b/tests/auto/api/testdata/moc-hpp/object.cpp index 8c091c58c..8c091c58c 100644 --- a/tests/auto/blackbox/testdata/moc_hpp/object.cpp +++ b/tests/auto/api/testdata/moc-hpp/object.cpp diff --git a/tests/auto/blackbox/testdata/moc_hpp_included/object.h b/tests/auto/api/testdata/moc-hpp/object.h index 7d8f59c6c..7d8f59c6c 100644 --- a/tests/auto/blackbox/testdata/moc_hpp_included/object.h +++ b/tests/auto/api/testdata/moc-hpp/object.h diff --git a/tests/auto/blackbox/testdata/moc_hpp/moc_hpp.qbs b/tests/auto/api/testdata/moc-hpp/project.qbs index 87ddfc335..87ddfc335 100644 --- a/tests/auto/blackbox/testdata/moc_hpp/moc_hpp.qbs +++ b/tests/auto/api/testdata/moc-hpp/project.qbs diff --git a/tests/auto/blackbox/testdata/new-output-artifact-in-dependency/lib.cpp b/tests/auto/api/testdata/new-output-artifact-in-dependency/lib.cpp index 7fd25b792..7fd25b792 100644 --- a/tests/auto/blackbox/testdata/new-output-artifact-in-dependency/lib.cpp +++ b/tests/auto/api/testdata/new-output-artifact-in-dependency/lib.cpp diff --git a/tests/auto/blackbox/testdata/new-output-artifact-in-dependency/main.cpp b/tests/auto/api/testdata/new-output-artifact-in-dependency/main.cpp index b44adf42f..b44adf42f 100644 --- a/tests/auto/blackbox/testdata/new-output-artifact-in-dependency/main.cpp +++ b/tests/auto/api/testdata/new-output-artifact-in-dependency/main.cpp diff --git a/tests/auto/blackbox/testdata/new-output-artifact-in-dependency/project.qbs b/tests/auto/api/testdata/new-output-artifact-in-dependency/project.qbs index 2fc85e9a9..2fc85e9a9 100644 --- a/tests/auto/blackbox/testdata/new-output-artifact-in-dependency/project.qbs +++ b/tests/auto/api/testdata/new-output-artifact-in-dependency/project.qbs diff --git a/tests/auto/blackbox/testdata/new-pattern-match/project.qbs b/tests/auto/api/testdata/new-pattern-match/project.qbs index 18975da75..18975da75 100644 --- a/tests/auto/blackbox/testdata/new-pattern-match/project.qbs +++ b/tests/auto/api/testdata/new-pattern-match/project.qbs diff --git a/tests/auto/blackbox/testdata/objc/main.mm b/tests/auto/api/testdata/objc/main.mm index 49b4f3915..49b4f3915 100644 --- a/tests/auto/blackbox/testdata/objc/main.mm +++ b/tests/auto/api/testdata/objc/main.mm diff --git a/tests/auto/blackbox/testdata/objc/objc.qbs b/tests/auto/api/testdata/objc/objc.qbs index c069c5032..c069c5032 100644 --- a/tests/auto/blackbox/testdata/objc/objc.qbs +++ b/tests/auto/api/testdata/objc/objc.qbs diff --git a/tests/auto/blackbox/testdata/precompiledHeader/main.cpp b/tests/auto/api/testdata/precompiled-header/main.cpp index 400762bc6..400762bc6 100644 --- a/tests/auto/blackbox/testdata/precompiledHeader/main.cpp +++ b/tests/auto/api/testdata/precompiled-header/main.cpp diff --git a/tests/auto/blackbox/testdata/precompiledHeader/myobject.cpp b/tests/auto/api/testdata/precompiled-header/myobject.cpp index 9f3f93740..9f3f93740 100644 --- a/tests/auto/blackbox/testdata/precompiledHeader/myobject.cpp +++ b/tests/auto/api/testdata/precompiled-header/myobject.cpp diff --git a/tests/auto/blackbox/testdata/precompiledHeader/myobject.h b/tests/auto/api/testdata/precompiled-header/myobject.h index 376f0da66..376f0da66 100644 --- a/tests/auto/blackbox/testdata/precompiledHeader/myobject.h +++ b/tests/auto/api/testdata/precompiled-header/myobject.h diff --git a/tests/auto/blackbox/testdata/precompiledHeader/precompiledHeader.qbs b/tests/auto/api/testdata/precompiled-header/project.qbs index de65b9330..de65b9330 100644 --- a/tests/auto/blackbox/testdata/precompiledHeader/precompiledHeader.qbs +++ b/tests/auto/api/testdata/precompiled-header/project.qbs diff --git a/tests/auto/blackbox/testdata/precompiledHeader/stable.h b/tests/auto/api/testdata/precompiled-header/stable.h index 93ce3cb29..93ce3cb29 100644 --- a/tests/auto/blackbox/testdata/precompiledHeader/stable.h +++ b/tests/auto/api/testdata/precompiled-header/stable.h diff --git a/tests/auto/blackbox/testdata/project-with-properties-item/project.qbs b/tests/auto/api/testdata/project-with-properties-item/project.qbs index d59a26a94..d59a26a94 100644 --- a/tests/auto/blackbox/testdata/project-with-properties-item/project.qbs +++ b/tests/auto/api/testdata/project-with-properties-item/project.qbs diff --git a/tests/auto/blackbox/testdata/propertiesBlocks/main.cpp b/tests/auto/api/testdata/properties-blocks/main.cpp index c2304641c..c2304641c 100644 --- a/tests/auto/blackbox/testdata/propertiesBlocks/main.cpp +++ b/tests/auto/api/testdata/properties-blocks/main.cpp diff --git a/tests/auto/blackbox/testdata/propertiesBlocks/propertiesblocks.qbs b/tests/auto/api/testdata/properties-blocks/propertiesblocks.qbs index 5fe02a103..5fe02a103 100644 --- a/tests/auto/blackbox/testdata/propertiesBlocks/propertiesblocks.qbs +++ b/tests/auto/api/testdata/properties-blocks/propertiesblocks.qbs diff --git a/tests/auto/blackbox/testdata/qt5plugin/echointerface.h b/tests/auto/api/testdata/qt5-plugin/echointerface.h index 228a911e6..228a911e6 100644 --- a/tests/auto/blackbox/testdata/qt5plugin/echointerface.h +++ b/tests/auto/api/testdata/qt5-plugin/echointerface.h diff --git a/tests/auto/blackbox/testdata/qt5plugin/echoplugin.cpp b/tests/auto/api/testdata/qt5-plugin/echoplugin.cpp index b6747a82b..b6747a82b 100644 --- a/tests/auto/blackbox/testdata/qt5plugin/echoplugin.cpp +++ b/tests/auto/api/testdata/qt5-plugin/echoplugin.cpp diff --git a/tests/auto/blackbox/testdata/qt5plugin/echoplugin.h b/tests/auto/api/testdata/qt5-plugin/echoplugin.h index 9f8d71c5c..9f8d71c5c 100644 --- a/tests/auto/blackbox/testdata/qt5plugin/echoplugin.h +++ b/tests/auto/api/testdata/qt5-plugin/echoplugin.h diff --git a/tests/auto/blackbox/testdata/qt5plugin/echoplugin.json.source b/tests/auto/api/testdata/qt5-plugin/echoplugin.json.source index 0967ef424..0967ef424 100644 --- a/tests/auto/blackbox/testdata/qt5plugin/echoplugin.json.source +++ b/tests/auto/api/testdata/qt5-plugin/echoplugin.json.source diff --git a/tests/auto/blackbox/testdata/qt5plugin/echoplugin_dummy.cpp b/tests/auto/api/testdata/qt5-plugin/echoplugin_dummy.cpp index baa060d28..baa060d28 100644 --- a/tests/auto/blackbox/testdata/qt5plugin/echoplugin_dummy.cpp +++ b/tests/auto/api/testdata/qt5-plugin/echoplugin_dummy.cpp diff --git a/tests/auto/blackbox/testdata/qt5plugin/plugin.qbs b/tests/auto/api/testdata/qt5-plugin/project.qbs index 2944198f3..2944198f3 100644 --- a/tests/auto/blackbox/testdata/qt5plugin/plugin.qbs +++ b/tests/auto/api/testdata/qt5-plugin/project.qbs diff --git a/tests/auto/blackbox/testdata/rc/main.cpp b/tests/auto/api/testdata/rc/main.cpp index 6ea3f271f..6ea3f271f 100644 --- a/tests/auto/blackbox/testdata/rc/main.cpp +++ b/tests/auto/api/testdata/rc/main.cpp diff --git a/tests/auto/blackbox/testdata/rc/rc.qbs b/tests/auto/api/testdata/rc/rc.qbs index 75502cf88..75502cf88 100644 --- a/tests/auto/blackbox/testdata/rc/rc.qbs +++ b/tests/auto/api/testdata/rc/rc.qbs diff --git a/tests/auto/blackbox/testdata/rc/test.rc b/tests/auto/api/testdata/rc/test.rc index a8e5fd39b..a8e5fd39b 100644 --- a/tests/auto/blackbox/testdata/rc/test.rc +++ b/tests/auto/api/testdata/rc/test.rc diff --git a/tests/auto/blackbox/testdata/removeFileDependency/main.cpp b/tests/auto/api/testdata/remove-file-dependency/main.cpp index 77727cf42..77727cf42 100644 --- a/tests/auto/blackbox/testdata/removeFileDependency/main.cpp +++ b/tests/auto/api/testdata/remove-file-dependency/main.cpp diff --git a/tests/auto/blackbox/testdata/removeFileDependency/removeFileDependency.qbs b/tests/auto/api/testdata/remove-file-dependency/removeFileDependency.qbs index 8ed927761..8ed927761 100644 --- a/tests/auto/blackbox/testdata/removeFileDependency/removeFileDependency.qbs +++ b/tests/auto/api/testdata/remove-file-dependency/removeFileDependency.qbs diff --git a/tests/auto/blackbox/testdata/removeFileDependency/someheader.h b/tests/auto/api/testdata/remove-file-dependency/someheader.h index b895e465c..b895e465c 100644 --- a/tests/auto/blackbox/testdata/removeFileDependency/someheader.h +++ b/tests/auto/api/testdata/remove-file-dependency/someheader.h diff --git a/tests/auto/blackbox/testdata/renameProduct/lib.cpp b/tests/auto/api/testdata/rename-product/lib.cpp index 47ce43bc9..47ce43bc9 100644 --- a/tests/auto/blackbox/testdata/renameProduct/lib.cpp +++ b/tests/auto/api/testdata/rename-product/lib.cpp diff --git a/tests/auto/blackbox/testdata/renameProduct/main.cpp b/tests/auto/api/testdata/rename-product/main.cpp index 6a0bac9f1..6a0bac9f1 100644 --- a/tests/auto/blackbox/testdata/renameProduct/main.cpp +++ b/tests/auto/api/testdata/rename-product/main.cpp diff --git a/tests/auto/blackbox/testdata/renameProduct/rename.qbs b/tests/auto/api/testdata/rename-product/rename.qbs index a2fe2e22f..a2fe2e22f 100644 --- a/tests/auto/blackbox/testdata/renameProduct/rename.qbs +++ b/tests/auto/api/testdata/rename-product/rename.qbs diff --git a/tests/auto/blackbox/testdata/renameTargetArtifact/lib.cpp b/tests/auto/api/testdata/rename-target-artifact/lib.cpp index 47ce43bc9..47ce43bc9 100644 --- a/tests/auto/blackbox/testdata/renameTargetArtifact/lib.cpp +++ b/tests/auto/api/testdata/rename-target-artifact/lib.cpp diff --git a/tests/auto/blackbox/testdata/renameTargetArtifact/main.cpp b/tests/auto/api/testdata/rename-target-artifact/main.cpp index 6a0bac9f1..6a0bac9f1 100644 --- a/tests/auto/blackbox/testdata/renameTargetArtifact/main.cpp +++ b/tests/auto/api/testdata/rename-target-artifact/main.cpp diff --git a/tests/auto/blackbox/testdata/renameTargetArtifact/rename.qbs b/tests/auto/api/testdata/rename-target-artifact/rename.qbs index 5a8c765e4..5a8c765e4 100644 --- a/tests/auto/blackbox/testdata/renameTargetArtifact/rename.qbs +++ b/tests/auto/api/testdata/rename-target-artifact/rename.qbs diff --git a/tests/auto/blackbox/testdata/sameBaseName/lib.c b/tests/auto/api/testdata/same-base-name/lib.c index 6055ed681..6055ed681 100644 --- a/tests/auto/blackbox/testdata/sameBaseName/lib.c +++ b/tests/auto/api/testdata/same-base-name/lib.c diff --git a/tests/auto/blackbox/testdata/sameBaseName/lib.cpp b/tests/auto/api/testdata/same-base-name/lib.cpp index 933fa8036..933fa8036 100644 --- a/tests/auto/blackbox/testdata/sameBaseName/lib.cpp +++ b/tests/auto/api/testdata/same-base-name/lib.cpp diff --git a/tests/auto/blackbox/testdata/sameBaseName/lib.m b/tests/auto/api/testdata/same-base-name/lib.m index 17cd2dceb..17cd2dceb 100644 --- a/tests/auto/blackbox/testdata/sameBaseName/lib.m +++ b/tests/auto/api/testdata/same-base-name/lib.m diff --git a/tests/auto/blackbox/testdata/sameBaseName/lib.mm b/tests/auto/api/testdata/same-base-name/lib.mm index ee284b080..ee284b080 100644 --- a/tests/auto/blackbox/testdata/sameBaseName/lib.mm +++ b/tests/auto/api/testdata/same-base-name/lib.mm diff --git a/tests/auto/blackbox/testdata/sameBaseName/main.c b/tests/auto/api/testdata/same-base-name/main.c index 07da20307..07da20307 100644 --- a/tests/auto/blackbox/testdata/sameBaseName/main.c +++ b/tests/auto/api/testdata/same-base-name/main.c diff --git a/tests/auto/blackbox/testdata/sameBaseName/sameBaseName.qbs b/tests/auto/api/testdata/same-base-name/project.qbs index e9b4ba7a6..e9b4ba7a6 100644 --- a/tests/auto/blackbox/testdata/sameBaseName/sameBaseName.qbs +++ b/tests/auto/api/testdata/same-base-name/project.qbs diff --git a/tests/auto/blackbox/testdata/simpleProbe/main.cpp b/tests/auto/api/testdata/simple-probe/main.cpp index 76e819701..76e819701 100644 --- a/tests/auto/blackbox/testdata/simpleProbe/main.cpp +++ b/tests/auto/api/testdata/simple-probe/main.cpp diff --git a/tests/auto/blackbox/testdata/simpleProbe/simpleProbe.qbs b/tests/auto/api/testdata/simple-probe/project.qbs index b409c7cc6..b409c7cc6 100644 --- a/tests/auto/blackbox/testdata/simpleProbe/simpleProbe.qbs +++ b/tests/auto/api/testdata/simple-probe/project.qbs diff --git a/tests/auto/blackbox/testdata/soft-dependency/main.cpp b/tests/auto/api/testdata/soft-dependency/main.cpp index 5f3248c7f..5f3248c7f 100644 --- a/tests/auto/blackbox/testdata/soft-dependency/main.cpp +++ b/tests/auto/api/testdata/soft-dependency/main.cpp diff --git a/tests/auto/blackbox/testdata/soft-dependency/project.qbs b/tests/auto/api/testdata/soft-dependency/project.qbs index bbf37fda8..bbf37fda8 100644 --- a/tests/auto/blackbox/testdata/soft-dependency/project.qbs +++ b/tests/auto/api/testdata/soft-dependency/project.qbs diff --git a/tests/auto/blackbox/testdata/staticLibDeps/a1.cpp b/tests/auto/api/testdata/static-lib-deps/a1.cpp index 862d76783..862d76783 100644 --- a/tests/auto/blackbox/testdata/staticLibDeps/a1.cpp +++ b/tests/auto/api/testdata/static-lib-deps/a1.cpp diff --git a/tests/auto/blackbox/testdata/staticLibDeps/a2.cpp b/tests/auto/api/testdata/static-lib-deps/a2.cpp index d1f41731c..d1f41731c 100644 --- a/tests/auto/blackbox/testdata/staticLibDeps/a2.cpp +++ b/tests/auto/api/testdata/static-lib-deps/a2.cpp diff --git a/tests/auto/blackbox/testdata/staticLibDeps/b.cpp b/tests/auto/api/testdata/static-lib-deps/b.cpp index a88cc9d90..a88cc9d90 100644 --- a/tests/auto/blackbox/testdata/staticLibDeps/b.cpp +++ b/tests/auto/api/testdata/static-lib-deps/b.cpp diff --git a/tests/auto/blackbox/testdata/staticLibDeps/c.cpp b/tests/auto/api/testdata/static-lib-deps/c.cpp index 264db582a..264db582a 100644 --- a/tests/auto/blackbox/testdata/staticLibDeps/c.cpp +++ b/tests/auto/api/testdata/static-lib-deps/c.cpp diff --git a/tests/auto/blackbox/testdata/staticLibDeps/d.cpp b/tests/auto/api/testdata/static-lib-deps/d.cpp index a7a2b9f85..a7a2b9f85 100644 --- a/tests/auto/blackbox/testdata/staticLibDeps/d.cpp +++ b/tests/auto/api/testdata/static-lib-deps/d.cpp diff --git a/tests/auto/blackbox/testdata/staticLibDeps/e.cpp b/tests/auto/api/testdata/static-lib-deps/e.cpp index af7d24682..af7d24682 100644 --- a/tests/auto/blackbox/testdata/staticLibDeps/e.cpp +++ b/tests/auto/api/testdata/static-lib-deps/e.cpp diff --git a/tests/auto/blackbox/testdata/staticLibDeps/main.cpp b/tests/auto/api/testdata/static-lib-deps/main.cpp index 3753dd5cb..3753dd5cb 100644 --- a/tests/auto/blackbox/testdata/staticLibDeps/main.cpp +++ b/tests/auto/api/testdata/static-lib-deps/main.cpp diff --git a/tests/auto/blackbox/testdata/staticLibDeps/dep.qbs b/tests/auto/api/testdata/static-lib-deps/project.qbs index f7d4a98b0..f7d4a98b0 100644 --- a/tests/auto/blackbox/testdata/staticLibDeps/dep.qbs +++ b/tests/auto/api/testdata/static-lib-deps/project.qbs diff --git a/tests/auto/blackbox/testdata/transformers/main.cpp b/tests/auto/api/testdata/transformers/main.cpp index c0d920a9d..c0d920a9d 100644 --- a/tests/auto/blackbox/testdata/transformers/main.cpp +++ b/tests/auto/api/testdata/transformers/main.cpp diff --git a/tests/auto/blackbox/testdata/transformers/transformers.qbs b/tests/auto/api/testdata/transformers/transformers.qbs index a0b1d70b0..a0b1d70b0 100644 --- a/tests/auto/blackbox/testdata/transformers/transformers.qbs +++ b/tests/auto/api/testdata/transformers/transformers.qbs diff --git a/tests/auto/blackbox/testdata/type-change/main.cpp b/tests/auto/api/testdata/type-change/main.cpp index 237c8ce18..237c8ce18 100644 --- a/tests/auto/blackbox/testdata/type-change/main.cpp +++ b/tests/auto/api/testdata/type-change/main.cpp diff --git a/tests/auto/blackbox/testdata/type-change/project.qbs b/tests/auto/api/testdata/type-change/project.qbs index 7661aa305..7661aa305 100644 --- a/tests/auto/blackbox/testdata/type-change/project.qbs +++ b/tests/auto/api/testdata/type-change/project.qbs diff --git a/tests/auto/blackbox/testdata/uic/bla.cpp b/tests/auto/api/testdata/uic/bla.cpp index 0f53e98a7..0f53e98a7 100644 --- a/tests/auto/blackbox/testdata/uic/bla.cpp +++ b/tests/auto/api/testdata/uic/bla.cpp diff --git a/tests/auto/blackbox/testdata/uic/bla.h b/tests/auto/api/testdata/uic/bla.h index 952d25b7d..952d25b7d 100644 --- a/tests/auto/blackbox/testdata/uic/bla.h +++ b/tests/auto/api/testdata/uic/bla.h diff --git a/tests/auto/blackbox/testdata/uic/ui.h b/tests/auto/api/testdata/uic/ui.h index b186b58f8..b186b58f8 100644 --- a/tests/auto/blackbox/testdata/uic/ui.h +++ b/tests/auto/api/testdata/uic/ui.h diff --git a/tests/auto/blackbox/testdata/uic/ui.ui b/tests/auto/api/testdata/uic/ui.ui index b07f62d05..b07f62d05 100644 --- a/tests/auto/blackbox/testdata/uic/ui.ui +++ b/tests/auto/api/testdata/uic/ui.ui diff --git a/tests/auto/blackbox/testdata/uic/uic.qbs b/tests/auto/api/testdata/uic/uic.qbs index a216b86a9..a216b86a9 100644 --- a/tests/auto/blackbox/testdata/uic/uic.qbs +++ b/tests/auto/api/testdata/uic/uic.qbs diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp index 6cdb3279a..35dd15842 100644 --- a/tests/auto/api/tst_api.cpp +++ b/tests/auto/api/tst_api.cpp @@ -31,18 +31,9 @@ #include "../shared.h" -#include <api/jobs.h> -#include <api/project.h> -#include <api/projectdata.h> -#include <logging/ilogsink.h> -#include <tools/buildoptions.h> +#include <qbs.h> #include <tools/fileinfo.h> #include <tools/hostosinfo.h> -#include <tools/installoptions.h> -#include <tools/preferences.h> -#include <tools/profile.h> -#include <tools/settings.h> -#include <tools/setupprojectparameters.h> #include <QCoreApplication> #include <QDir> @@ -54,12 +45,20 @@ #include <QTest> #include <QTimer> +#define VERIFY_NO_ERROR(errorInfo) \ + QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())) + class LogSink: public qbs::ILogSink { +public: + QString output; + void doPrintWarning(const qbs::ErrorInfo &error) { qDebug("%s", qPrintable(error.toString())); } - void doPrintMessage(qbs::LoggerLevel, const QString &, const QString &) { } + void doPrintMessage(qbs::LoggerLevel, const QString &message, const QString &) { + output += message; + } }; class BuildDescriptionReceiver : public QObject @@ -74,25 +73,29 @@ private slots: } }; -TestApi::TestApi() - : m_logSink(new LogSink) - , m_sourceDataDir(QDir::cleanPath(SRCDIR "/testdata")) - , m_workingDataDir(QCoreApplication::applicationDirPath() + "/../tests/auto/api/testWorkDir") +class ProcessResultReceiver : public QObject { -} + Q_OBJECT +public: + QString output; -TestApi::~TestApi() -{ - delete m_logSink; -} +private slots: + void handleProcessResult(const qbs::ProcessResult &result) { + output += result.stdErr().join(QLatin1String("\n")); + output += result.stdOut().join(QLatin1String("\n")); + } +}; -void TestApi::initTestCase() +class TaskReceiver : public QObject { - QString errorMessage; - qbs::Internal::removeDirectoryWithContents(m_workingDataDir, &errorMessage); - QVERIFY2(qbs::Internal::copyFileRecursion(m_sourceDataDir, - m_workingDataDir, false, &errorMessage), qPrintable(errorMessage)); -} + Q_OBJECT +public: + QString taskDescriptions; + +private slots: + void handleTaskStart(const QString &task) { taskDescriptions += task; } +}; + static void removeBuildDir(const qbs::SetupProjectParameters ¶ms) { @@ -119,8 +122,7 @@ static bool waitForFinished(qbs::AbstractJob *job, int timeout = 0) return true; } - -void printProjectData(const qbs::ProjectData &project) +static void printProjectData(const qbs::ProjectData &project) { foreach (const qbs::ProductData &p, project.products()) { qDebug(" Product '%s' at %s", qPrintable(p.name()), qPrintable(p.location().toString())); @@ -131,6 +133,113 @@ void printProjectData(const qbs::ProjectData &project) } } + +TestApi::TestApi() + : m_logSink(new LogSink) + , m_sourceDataDir(QDir::cleanPath(SRCDIR "/testdata")) + , m_workingDataDir(QCoreApplication::applicationDirPath() + "/../tests/auto/api/testWorkDir") +{ +} + +TestApi::~TestApi() +{ + delete m_logSink; +} + +void TestApi::initTestCase() +{ + QString errorMessage; + qbs::Internal::removeDirectoryWithContents(m_workingDataDir, &errorMessage); + QVERIFY2(qbs::Internal::copyFileRecursion(m_sourceDataDir, + m_workingDataDir, false, &errorMessage), qPrintable(errorMessage)); +} + +void TestApi::addQObjectMacroToCppFile() +{ + BuildDescriptionReceiver receiver; + qbs::ErrorInfo errorInfo = doBuildProject("add-qobject-macro-to-cpp-file/project.qbs", &receiver); + VERIFY_NO_ERROR(errorInfo); + QVERIFY2(!receiver.descriptions.contains("moc"), qPrintable(receiver.descriptions)); + receiver.descriptions.clear(); + + waitForNewTimestamp(); + QFile cppFile("object.cpp"); + QVERIFY2(cppFile.open(QIODevice::ReadWrite), qPrintable(cppFile.errorString())); + QByteArray contents = cppFile.readAll(); + contents.replace("// ", ""); + cppFile.resize(0); + cppFile.write(contents); + cppFile.close(); + errorInfo = doBuildProject("add-qobject-macro-to-cpp-file/project.qbs", &receiver); + VERIFY_NO_ERROR(errorInfo); + QVERIFY2(receiver.descriptions.contains("moc"), qPrintable(receiver.descriptions)); +} + +static bool isAboutUndefinedSymbols(const QString &_message) +{ + const QString message = _message.toLower(); + return message.contains("undefined") || message.contains("unresolved"); +} + +void TestApi::addedFilePersistent() +{ + // On the initial run, linking will fail. + const QString relProjectFilePath = "added-file-persistent/project.qbs"; + ProcessResultReceiver receiver; + qbs::ErrorInfo errorInfo = doBuildProject(relProjectFilePath, 0, &receiver); + QVERIFY(errorInfo.hasError()); + QVERIFY2(isAboutUndefinedSymbols(receiver.output), qPrintable((receiver.output))); + receiver.output.clear(); + + // Add a file. qbs must schedule it for rule application on the next build. + waitForNewTimestamp(); + const qbs::SetupProjectParameters params = defaultSetupParameters(relProjectFilePath); + QFile projectFile(params.projectFilePath()); + QVERIFY2(projectFile.open(QIODevice::ReadWrite), qPrintable(projectFile.errorString())); + const QByteArray originalContent = projectFile.readAll(); + QByteArray addedFileContent = originalContent; + addedFileContent.replace("/* 'file.cpp' */", "'file.cpp'"); + projectFile.resize(0); + projectFile.write(addedFileContent); + projectFile.flush(); + QScopedPointer<qbs::SetupProjectJob> setupJob(qbs::Project().setupProject(params, m_logSink, + 0)); + waitForFinished(setupJob.data()); + QVERIFY2(!setupJob->error().hasError(), qPrintable(setupJob->error().toString())); + setupJob.reset(0); + + // Remove the file again. qbs must unschedule the rule application again. + // Consequently, the linking step must fail as in the initial run. + waitForNewTimestamp(); + projectFile.resize(0); + projectFile.write(originalContent); + projectFile.flush(); + errorInfo = doBuildProject(relProjectFilePath, 0, &receiver); + QVERIFY(errorInfo.hasError()); + QVERIFY2(isAboutUndefinedSymbols(receiver.output), qPrintable((receiver.output))); + + // Add the file again. qbs must schedule it for rule application on the next build. + waitForNewTimestamp(); + projectFile.resize(0); + projectFile.write(addedFileContent); + projectFile.close(); + setupJob.reset(qbs::Project().setupProject(params, m_logSink, 0)); + waitForFinished(setupJob.data()); + QVERIFY2(!setupJob->error().hasError(), qPrintable(setupJob->error().toString())); + setupJob.reset(0); + + // qbs must remember that a file was scheduled for rule application. The build must then + // succeed, as now all necessary symbols are linked in. + errorInfo = doBuildProject(relProjectFilePath); + VERIFY_NO_ERROR(errorInfo); +} + +void TestApi::baseProperties() +{ + const qbs::ErrorInfo errorInfo = doBuildProject("base-properties/prj.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + void TestApi::buildGraphLocking() { qbs::SetupProjectParameters setupParams @@ -151,6 +260,97 @@ void TestApi::buildGraphLocking() qPrintable(setupJob->error().toString())); } +void TestApi::buildProject() +{ + QFETCH(QString, projectSubDir); + QFETCH(QString, productFileName); + qbs::SetupProjectParameters params = defaultSetupParameters(projectSubDir + "/project.qbs"); + removeBuildDir(params); + qbs::ErrorInfo errorInfo = doBuildProject(projectSubDir + "/project.qbs"); + VERIFY_NO_ERROR(errorInfo); + QVERIFY2(regularFileExists(productFileName), qPrintable(productFileName)); + QVERIFY(regularFileExists(relativeBuildGraphFilePath())); + + QVERIFY2(QFile::remove(productFileName), qPrintable(productFileName)); + waitForNewTimestamp(); + qbs::BuildOptions options; + options.setForceTimestampCheck(true); + errorInfo = doBuildProject(projectSubDir + "/project.qbs", 0, 0, 0, options); + VERIFY_NO_ERROR(errorInfo); + QVERIFY2(regularFileExists(productFileName), qPrintable(productFileName)); + QVERIFY(regularFileExists(relativeBuildGraphFilePath())); +} + +void TestApi::buildProject_data() +{ + QTest::addColumn<QString>("projectSubDir"); + QTest::addColumn<QString>("productFileName"); + QTest::newRow("BPs in Sources") + << QString("build-properties-source") + << relativeExecutableFilePath("HelloWorld"); + QTest::newRow("code generator") + << QString("codegen") + << relativeExecutableFilePath("codegen"); + QTest::newRow("link static libs") + << QString("link-static-lib") + << relativeExecutableFilePath("HelloWorld"); + QTest::newRow("precompiled header") + << QString("precompiled-header") + << relativeExecutableFilePath("MyApp"); + QTest::newRow("lots of dots") + << QString("lots-of-dots") + << relativeExecutableFilePath("lots.of.dots"); + QTest::newRow("Qt5 plugin") + << QString("qt5-plugin") + << relativeProductBuildDir("echoplugin") + '/' + + qbs::Internal::HostOsInfo::dynamicLibraryName("echoplugin"); + QTest::newRow("Q_OBJECT in source") + << QString("moc-cpp") + << relativeExecutableFilePath("moc_cpp"); + QTest::newRow("Q_OBJECT in header") + << QString("moc-hpp") + << relativeExecutableFilePath("moc_hpp"); + QTest::newRow("Q_OBJECT in header, moc_XXX.cpp included") + << QString("moc-hpp-included") + << relativeExecutableFilePath("moc_hpp_included"); + QTest::newRow("app and lib with same source file") + << QString("lib-same-source") + << relativeExecutableFilePath("HelloWorldApp"); + QTest::newRow("source files with the same base name but different extensions") + << QString("same-base-name") + << relativeExecutableFilePath("basename"); + QTest::newRow("static library dependencies") + << QString("static-lib-deps") + << relativeExecutableFilePath("staticLibDeps"); + QTest::newRow("simple probes") + << QString("simple-probe") + << relativeExecutableFilePath("MyApp"); + QTest::newRow("application without sources") + << QString("app-without-sources") + << relativeExecutableFilePath("appWithoutSources"); +} + +void TestApi::buildProjectDryRun() +{ + QFETCH(QString, projectSubDir); + QFETCH(QString, productFileName); + qbs::SetupProjectParameters params = defaultSetupParameters(projectSubDir + "/project.qbs"); + removeBuildDir(params); + qbs::BuildOptions options; + options.setDryRun(true); + const qbs::ErrorInfo errorInfo + = doBuildProject(projectSubDir + "/project.qbs", 0, 0, 0, options); + VERIFY_NO_ERROR(errorInfo); + const QStringList &buildDirContents + = QDir(relativeBuildDir()).entryList(QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs); + QVERIFY2(buildDirContents.isEmpty(), qPrintable(buildDirContents.join(" "))); +} + +void TestApi::buildProjectDryRun_data() +{ + return buildProject_data(); +} + void TestApi::buildSingleFile() { qbs::SetupProjectParameters setupParams @@ -210,10 +410,10 @@ void TestApi::changeContent() QVERIFY(errorInfo.toString().contains("empty")); errorInfo = project.addGroup(product, "New Group 1"); - QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())); + VERIFY_NO_ERROR(errorInfo); errorInfo = project.addGroup(product, "New Group 2"); - QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())); + VERIFY_NO_ERROR(errorInfo); // Error handling: Group already inserted. errorInfo = project.addGroup(product, "New Group 1"); @@ -234,7 +434,7 @@ void TestApi::changeContent() qbs::GroupData group = findGroup(product, "New Group 1"); QVERIFY(group.isValid()); errorInfo = project.addFiles(product, group, QStringList() << "file.h" << "file.cpp"); - QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())); + VERIFY_NO_ERROR(errorInfo); // Error handling: Add the same file again. projectData = project.projectData(); @@ -249,7 +449,7 @@ void TestApi::changeContent() // Remove one of the newly added files again. errorInfo = project.removeFiles(product, group, QStringList("file.h")); - QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())); + VERIFY_NO_ERROR(errorInfo); // Error handling: Try to remove the same file again. projectData = project.projectData(); @@ -271,7 +471,7 @@ void TestApi::changeContent() // Remove file from product's 'files' binding. errorInfo = project.removeFiles(product, qbs::GroupData(), QStringList("main.cpp")); - QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())); + VERIFY_NO_ERROR(errorInfo); // Add file to non-empty array literal. projectData = project.projectData(); @@ -280,14 +480,14 @@ void TestApi::changeContent() group = findGroup(product, "Existing Group 1"); QVERIFY(group.isValid()); errorInfo = project.addFiles(product, group, QStringList() << "newfile1.txt"); - QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())); + VERIFY_NO_ERROR(errorInfo); // Add files to list represented as a single string. projectData = project.projectData(); QVERIFY(projectData.products().count() == 1); product = projectData.products().first(); errorInfo = project.addFiles(product, qbs::GroupData(), QStringList() << "newfile2.txt"); - QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())); + VERIFY_NO_ERROR(errorInfo); // Add files to list represented as an identifier. projectData = project.projectData(); @@ -296,7 +496,7 @@ void TestApi::changeContent() group = findGroup(product, "Existing Group 2"); QVERIFY(group.isValid()); errorInfo = project.addFiles(product, group, QStringList() << "newfile3.txt"); - QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())); + VERIFY_NO_ERROR(errorInfo); // Add files to list represented as a block of code (not yet implemented). projectData = project.projectData(); @@ -315,7 +515,7 @@ void TestApi::changeContent() group = findGroup(product, "Existing Group 4"); QVERIFY(group.isValid()); errorInfo = project.addFiles(product, group, QStringList() << "file.txt"); - QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())); + VERIFY_NO_ERROR(errorInfo); // Error handling: Add file to group with non-directory prefix. projectData = project.projectData(); @@ -334,7 +534,7 @@ void TestApi::changeContent() group = findGroup(product, "Existing Group 5"); QVERIFY(group.isValid()); errorInfo = project.removeGroup(product, group); - QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())); + VERIFY_NO_ERROR(errorInfo); projectData = project.projectData(); QVERIFY(projectData.products().count() == 1); QCOMPARE(projectData.products().first().groups().count(), 9); @@ -354,7 +554,7 @@ void TestApi::changeContent() QVERIFY2(newFile.open(QIODevice::WriteOnly), qPrintable(newFile.errorString())); newFile.close(); errorInfo = project.addFiles(product, group, QStringList() << newFile.fileName()); - QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())); + VERIFY_NO_ERROR(errorInfo); projectData = project.projectData(); QVERIFY(projectData.products().count() == 1); product = projectData.products().first(); @@ -426,9 +626,11 @@ void TestApi::changeContent() QVERIFY2(errorInfo.toString().contains("in process"), qPrintable(errorInfo.toString())); waitForFinished(buildJob.data()); errorInfo = project.addGroup(newProjectData.products().first(), "blubb"); - QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())); + VERIFY_NO_ERROR(errorInfo); project = qbs::Project(); + job.reset(0); + buildJob.reset(0); removeBuildDir(setupParams); // Add a file to the top level of a product that does not have a "files" binding yet. setupParams.setProjectFilePath(QDir::cleanPath(m_workingDataDir + @@ -442,7 +644,7 @@ void TestApi::changeContent() QCOMPARE(projectData.allProducts().count(), 1); product = projectData.allProducts().first(); errorInfo = project.addFiles(product, qbs::GroupData(), QStringList("main.cpp")); - QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())); + VERIFY_NO_ERROR(errorInfo); projectData = project.projectData(); rcvr.descriptions.clear(); buildJob.reset(project.buildAllProducts(buildOptions, this)); @@ -467,8 +669,29 @@ void TestApi::changeContent() } QVERIFY(projectDataMatches); } + #endif // QBS_ENABLE_PROJECT_FILE_UPDATES +void TestApi::changeDependentLib() +{ + qbs::ErrorInfo errorInfo = doBuildProject("change-dependent-lib/change-dependent-lib.qbs"); + VERIFY_NO_ERROR(errorInfo); + + waitForNewTimestamp(); + const QString qbsFileName("change-dependent-lib.qbs"); + QFile qbsFile(qbsFileName); + QVERIFY(qbsFile.open(QIODevice::ReadWrite)); + const QByteArray content1 = qbsFile.readAll(); + QByteArray content2 = content1; + content2.replace("cpp.defines: [\"XXXX\"]", "cpp.defines: [\"ABCD\"]"); + QVERIFY(content1 != content2); + qbsFile.seek(0); + qbsFile.write(content2); + qbsFile.close(); + errorInfo = doBuildProject("change-dependent-lib/change-dependent-lib.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + static qbs::ErrorInfo forceRuleEvaluation(const qbs::Project project) { qbs::BuildOptions buildOptions; @@ -489,7 +712,7 @@ void TestApi::disabledInstallGroup() const qbs::Project project = job->project(); const qbs::ErrorInfo errorInfo = forceRuleEvaluation(project); - QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())); + VERIFY_NO_ERROR(errorInfo); qbs::ProjectData projectData = project.projectData(); QCOMPARE(projectData.allProducts().count(), 1); @@ -503,6 +726,111 @@ void TestApi::disabledInstallGroup() QCOMPARE(project.targetExecutable(product, qbs::InstallOptions()), targets.first().filePath()); } +void TestApi::disabledProduct() +{ + const qbs::ErrorInfo errorInfo = doBuildProject("disabled-product/disabledProduct.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + +void TestApi::disabledProject() +{ + const qbs::ErrorInfo errorInfo = doBuildProject("disabled-project/disabled_project.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + +void TestApi::disableProduct() +{ + qbs::ErrorInfo errorInfo = doBuildProject("disable-product/project.qbs"); + VERIFY_NO_ERROR(errorInfo); + + waitForNewTimestamp(); + QFile projectFile("project.qbs"); + QVERIFY(projectFile.open(QIODevice::ReadWrite)); + QByteArray content = projectFile.readAll(); + content.replace("// condition: false", "condition: false"); + projectFile.resize(0); + projectFile.write(content); + projectFile.close(); + errorInfo = doBuildProject("disable-product/project.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + +void TestApi::duplicateProductNames() +{ + QFETCH(QString, projectFileName); + const qbs::ErrorInfo errorInfo = doBuildProject("duplicate-product-names/" + projectFileName); + QVERIFY(errorInfo.hasError()); + QVERIFY2(errorInfo.toString().contains("Duplicate product name"), + qPrintable(errorInfo.toString())); +} + +void TestApi::duplicateProductNames_data() +{ + QTest::addColumn<QString>("projectFileName"); + QTest::newRow("Names explicitly set") << QString("explicit.qbs"); + QTest::newRow("Unnamed products in same file") << QString("implicit.qbs"); + QTest::newRow("Unnamed products in files of the same name") << QString("implicit-indirect.qbs"); + +} + +void TestApi::dynamicLibs() +{ + const qbs::ErrorInfo errorInfo = doBuildProject("dynamic-libs/link_dynamiclib.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + +void TestApi::emptyFileTagList() +{ + const qbs::ErrorInfo errorInfo = doBuildProject("empty-filetag-list/project.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + +void TestApi::emptySubmodulesList() +{ + const qbs::ErrorInfo errorInfo = doBuildProject("empty-submodules-list/project.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + +void TestApi::explicitlyDependsOn() +{ + BuildDescriptionReceiver receiver; + qbs::ErrorInfo errorInfo = doBuildProject("explicitly-depends-on/project.qbs", &receiver); + VERIFY_NO_ERROR(errorInfo); + QVERIFY(receiver.descriptions.contains("Creating output artifact")); + receiver.descriptions.clear(); + + errorInfo = doBuildProject("explicitly-depends-on/project.qbs", &receiver); + VERIFY_NO_ERROR(errorInfo); + QVERIFY(!receiver.descriptions.contains("Creating output artifact")); + + waitForNewTimestamp(); + touch("dependency.txt"); + errorInfo = doBuildProject("explicitly-depends-on/project.qbs", &receiver); + VERIFY_NO_ERROR(errorInfo); + QVERIFY(receiver.descriptions.contains("Creating output artifact")); +} + +void TestApi::exportSimple() +{ + const qbs::ErrorInfo errorInfo = doBuildProject("export-simple/project.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + +void TestApi::exportWithRecursiveDepends() +{ + const qbs::ErrorInfo errorInfo = doBuildProject("export-with-recursive-depends/project.qbs"); + QEXPECT_FAIL("", "currently broken", Abort); + VERIFY_NO_ERROR(errorInfo); +} + +void TestApi::fileTagger() +{ + BuildDescriptionReceiver receiver; + const qbs::ErrorInfo errorInfo = doBuildProject("file-tagger/moc_cpp.qbs", &receiver); + VERIFY_NO_ERROR(errorInfo); + QVERIFY2(receiver.descriptions.contains("moc bla.cpp"), qPrintable(receiver.descriptions)); +} + void TestApi::fileTagsFilterOverride() { qbs::SetupProjectParameters setupParams @@ -514,7 +842,7 @@ void TestApi::fileTagsFilterOverride() qbs::Project project = job->project(); const qbs::ErrorInfo errorInfo = forceRuleEvaluation(project); - QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())); + VERIFY_NO_ERROR(errorInfo); qbs::ProjectData projectData = project.projectData(); QCOMPARE(projectData.allProducts().count(), 1); @@ -559,6 +887,12 @@ void TestApi::infiniteLoopResolving() qPrintable(setupJob->error().toString())); } +void TestApi::inheritQbsSearchPaths() +{ + const qbs::ErrorInfo errorInfo = doBuildProject("inherit-qbs-search-paths/prj.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + void TestApi::installableFiles() { qbs::SetupProjectParameters setupParams @@ -570,7 +904,7 @@ void TestApi::installableFiles() qbs::Project project = job->project(); const qbs::ErrorInfo errorInfo = forceRuleEvaluation(project); - QVERIFY2(!errorInfo.hasError(), qPrintable(errorInfo.toString())); + VERIFY_NO_ERROR(errorInfo); qbs::ProjectData projectData = project.projectData(); QCOMPARE(projectData.allProducts().count(), 1); @@ -641,6 +975,33 @@ void TestApi::listBuildSystemFiles() + "/subproject2/subproject3/subproject3.qbs")); } +void TestApi::mocCppIncluded() +{ + // Initial build. + qbs::ErrorInfo errorInfo = doBuildProject("moc-hpp-included/project.qbs"); + VERIFY_NO_ERROR(errorInfo); + + // Touch header and try again. + waitForNewTimestamp(); + QFile headerFile("object.h"); + QVERIFY2(headerFile.open(QIODevice::WriteOnly | QIODevice::Append), + qPrintable(headerFile.errorString())); + headerFile.write("\n"); + headerFile.close(); + errorInfo = doBuildProject("moc-hpp-included/project.qbs"); + VERIFY_NO_ERROR(errorInfo); + + // Touch cpp file and try again. + waitForNewTimestamp(); + QFile cppFile("object.cpp"); + QVERIFY2(cppFile.open(QIODevice::WriteOnly | QIODevice::Append), + qPrintable(cppFile.errorString())); + cppFile.write("\n"); + cppFile.close(); + errorInfo = doBuildProject("moc-hpp-included/project.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + void TestApi::multiArch() { qbs::SetupProjectParameters setupParams = defaultSetupParameters("multi-arch/project.qbs"); @@ -660,7 +1021,7 @@ void TestApi::multiArch() waitForFinished(setupJob.data()); QVERIFY2(!setupJob->error().hasError(), qPrintable(setupJob->error().toString())); qbs::Project project = setupJob->project(); - QCOMPARE(project.profile(), QLatin1String("qbs_autotests")); + QCOMPARE(project.profile(), profileName()); const QList<qbs::ProductData> &products = project.projectData().products(); QCOMPARE(products.count(), 3); QList<qbs::ProductData> hostProducts; @@ -721,6 +1082,62 @@ void TestApi::multiArch() qPrintable(setupJob->error().toString())); } +void TestApi::newOutputArtifactInDependency() +{ + BuildDescriptionReceiver receiver; + qbs::ErrorInfo errorInfo + = doBuildProject("new-output-artifact-in-dependency/project.qbs", &receiver); + VERIFY_NO_ERROR(errorInfo); + QVERIFY(receiver.descriptions.contains("linking app")); + const QByteArray linkingLibString = QByteArray("linking ") + + qbs::Internal::HostOsInfo::dynamicLibraryName("lib").toLatin1(); + QVERIFY(!receiver.descriptions.contains(linkingLibString)); + receiver.descriptions.clear(); + + waitForNewTimestamp(); + QFile projectFile("project.qbs"); + QVERIFY2(projectFile.open(QIODevice::ReadWrite), qPrintable(projectFile.errorString())); + QByteArray contents = projectFile.readAll(); + contents.replace("//Depends", "Depends"); + projectFile.resize(0); + projectFile.write(contents); + projectFile.close(); + errorInfo = doBuildProject("new-output-artifact-in-dependency/project.qbs", &receiver); + VERIFY_NO_ERROR(errorInfo); + QVERIFY(receiver.descriptions.contains("linking app")); + QVERIFY(receiver.descriptions.contains(linkingLibString)); +} + +void TestApi::newPatternMatch() +{ + TaskReceiver receiver; + qbs::ErrorInfo errorInfo = doBuildProject("new-pattern-match/project.qbs", 0, 0, &receiver); + VERIFY_NO_ERROR(errorInfo); + QVERIFY2(receiver.taskDescriptions.contains("Resolving"), qPrintable(m_logSink->output)); + receiver.taskDescriptions.clear(); + + errorInfo = doBuildProject("new-pattern-match/project.qbs", 0, 0, &receiver); + VERIFY_NO_ERROR(errorInfo); + QVERIFY(!receiver.taskDescriptions.contains("Resolving")); + + QFile f("test.txt"); + QVERIFY2(f.open(QIODevice::WriteOnly), qPrintable(f.errorString())); + f.close(); + errorInfo = doBuildProject("new-pattern-match/project.qbs", 0, 0, &receiver); + VERIFY_NO_ERROR(errorInfo); + QVERIFY(receiver.taskDescriptions.contains("Resolving")); + receiver.taskDescriptions.clear(); + + errorInfo = doBuildProject("new-pattern-match/project.qbs", 0, 0, &receiver); + VERIFY_NO_ERROR(errorInfo); + QVERIFY(!receiver.taskDescriptions.contains("Resolving")); + + f.remove(); + errorInfo = doBuildProject("new-pattern-match/project.qbs", 0, 0, &receiver); + VERIFY_NO_ERROR(errorInfo); + QVERIFY(receiver.taskDescriptions.contains("Resolving")); +} + void TestApi::nonexistingProjectPropertyFromProduct() { qbs::SetupProjectParameters setupParams @@ -750,6 +1167,12 @@ void TestApi::nonexistingProjectPropertyFromCommandLine() qPrintable(job->error().toString())); } +void TestApi::objC() +{ + const qbs::ErrorInfo errorInfo = doBuildProject("objc/objc.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + void TestApi::projectInvalidation() { qbs::SetupProjectParameters setupParams @@ -795,6 +1218,27 @@ void TestApi::projectLocking() QVERIFY2(!setupJob->error().hasError(), qPrintable(setupJob->error().toString())); } +void TestApi::projectWithPropertiesItem() +{ + const qbs::ErrorInfo errorInfo = doBuildProject("project-with-properties-item/project.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + +void TestApi::propertiesBlocks() +{ + const qbs::ErrorInfo errorInfo = doBuildProject("properties-blocks/propertiesblocks.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + +void TestApi::rc() +{ + BuildDescriptionReceiver receiver; + const qbs::ErrorInfo errorInfo = doBuildProject("rc/rc.qbs", &receiver); + VERIFY_NO_ERROR(errorInfo); + const bool rcFileWasCompiled = receiver.descriptions.contains("compiling test.rc"); + QCOMPARE(rcFileWasCompiled, qbs::Internal::HostOsInfo::isWindowsHost()); +} + qbs::SetupProjectParameters TestApi::defaultSetupParameters(const QString &projectFilePath) const { qbs::SetupProjectParameters setupParams; @@ -807,11 +1251,10 @@ qbs::SetupProjectParameters TestApi::defaultSetupParameters(const QString &proje const QString qbsRootPath = QDir::cleanPath(QCoreApplication::applicationDirPath() + QLatin1String("/../")); qbs::Settings settings((QString())); - const QString profileName = QLatin1String("qbs_autotests"); - const qbs::Preferences prefs(&settings, profileName); + const qbs::Preferences prefs(&settings, profileName()); setupParams.setSearchPaths(prefs.searchPaths(qbsRootPath)); setupParams.setPluginPaths(prefs.pluginPaths(qbsRootPath + QLatin1String("/lib"))); - setupParams.setTopLevelProfile(profileName); + setupParams.setTopLevelProfile(profileName()); setupParams.setBuildVariant(QLatin1String("debug")); return setupParams; } @@ -845,6 +1288,125 @@ void TestApi::references() QCOMPARE(subProjectFileName, QString("p.qbs")); } +void TestApi::renameProduct() +{ + // Initial run. + qbs::ErrorInfo errorInfo = doBuildProject("rename-product/rename.qbs"); + VERIFY_NO_ERROR(errorInfo); + + // Rename lib and adapt Depends item. + waitForNewTimestamp(); + QFile f("rename.qbs"); + QVERIFY(f.open(QIODevice::ReadWrite)); + QByteArray contents = f.readAll(); + contents.replace("TheLib", "thelib"); + f.resize(0); + f.write(contents); + f.close(); + errorInfo = doBuildProject("rename-product/rename.qbs"); + VERIFY_NO_ERROR(errorInfo); + + // Rename lib and don't adapt Depends item. + waitForNewTimestamp(); + QVERIFY(f.open(QIODevice::ReadWrite)); + contents = f.readAll(); + const int libNameIndex = contents.lastIndexOf("thelib"); + QVERIFY(libNameIndex != -1); + contents.replace(libNameIndex, 6, "TheLib"); + f.resize(0); + f.write(contents); + f.close(); + errorInfo = doBuildProject("rename-product/rename.qbs"); + QVERIFY(errorInfo.hasError()); + QVERIFY2(errorInfo.toString().contains("Product dependency 'thelib' not found"), + qPrintable(errorInfo.toString())); +} + +void TestApi::renameTargetArtifact() +{ + // Initial run. + BuildDescriptionReceiver receiver; + qbs::ErrorInfo errorInfo = doBuildProject("rename-target-artifact/rename.qbs", &receiver); + VERIFY_NO_ERROR(errorInfo); + QVERIFY2(receiver.descriptions.contains("compiling"), qPrintable(receiver.descriptions)); + QCOMPARE(receiver.descriptions.count("linking"), 2); + receiver.descriptions.clear(); + + // Rename library file name. + waitForNewTimestamp(); + QFile f("rename.qbs"); + QVERIFY(f.open(QIODevice::ReadWrite)); + QByteArray contents = f.readAll(); + contents.replace("the_lib", "TheLib"); + f.resize(0); + f.write(contents); + f.close(); + errorInfo = doBuildProject("rename-target-artifact/rename.qbs", &receiver); + VERIFY_NO_ERROR(errorInfo); + QVERIFY2(!receiver.descriptions.contains("compiling"), qPrintable(receiver.descriptions)); + QCOMPARE(receiver.descriptions.count("linking"), 2); +} + +void TestApi::removeFileDependency() +{ + qbs::ErrorInfo errorInfo = doBuildProject("remove-file-dependency/removeFileDependency.qbs"); + VERIFY_NO_ERROR(errorInfo); + + QFile::remove("someheader.h"); + ProcessResultReceiver receiver; + errorInfo = doBuildProject("remove-file-dependency/removeFileDependency.qbs", 0, &receiver); + QVERIFY(errorInfo.hasError()); + QVERIFY2(receiver.output.contains("someheader.h"), qPrintable(receiver.output)); +} + +void TestApi::resolveProject() +{ + QFETCH(QString, projectSubDir); + QFETCH(QString, productFileName); + + const qbs::SetupProjectParameters params + = defaultSetupParameters(projectSubDir + "/project.qbs"); + removeBuildDir(params); + const QScopedPointer<qbs::SetupProjectJob> setupJob(qbs::Project().setupProject(params, + m_logSink, 0)); + waitForFinished(setupJob.data()); + VERIFY_NO_ERROR(setupJob->error()); + QVERIFY2(!QFile::exists(productFileName), qPrintable(productFileName)); + QVERIFY(regularFileExists(relativeBuildGraphFilePath())); +} + +void TestApi::resolveProject_data() +{ + return buildProject_data(); +} + +void TestApi::resolveProjectDryRun() +{ + QFETCH(QString, projectSubDir); + QFETCH(QString, productFileName); + + qbs::SetupProjectParameters params = defaultSetupParameters(projectSubDir + "/project.qbs"); + params.setDryRun(true); + removeBuildDir(params); + const QScopedPointer<qbs::SetupProjectJob> setupJob(qbs::Project().setupProject(params, + m_logSink, 0)); + waitForFinished(setupJob.data()); + VERIFY_NO_ERROR(setupJob->error()); + QVERIFY2(!QFile::exists(productFileName), qPrintable(productFileName)); + QVERIFY(!regularFileExists(relativeBuildGraphFilePath())); +} + +void TestApi::resolveProjectDryRun_data() +{ + return resolveProject_data(); +} + +void TestApi::softDependency() +{ + const qbs::ErrorInfo errorInfo = doBuildProject("soft-dependency/project.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + void TestApi::sourceFileInBuildDir() { qbs::SetupProjectParameters setupParams @@ -856,12 +1418,167 @@ void TestApi::sourceFileInBuildDir() const qbs::ProjectData projectData = job->project().projectData(); QCOMPARE(projectData.allProducts().count(), 1); const qbs::ProductData product = projectData.allProducts().first(); - QCOMPARE(product.profile(), QLatin1String("qbs_autotests")); + QCOMPARE(product.profile(), profileName()); QCOMPARE(product.groups().count(), 1); const qbs::GroupData group = product.groups().first(); QCOMPARE(group.allFilePaths().count(), 1); } +void TestApi::subProjects() +{ + const qbs::SetupProjectParameters params + = defaultSetupParameters("subprojects/toplevelproject.qbs"); + removeBuildDir(params); + + // Check all three types of subproject creation, plus property overrides. + qbs::ErrorInfo errorInfo = doBuildProject("subprojects/toplevelproject.qbs"); + VERIFY_NO_ERROR(errorInfo); + + // Disabling both the project with the dependency and the one with the dependent + // should not cause an error. + waitForNewTimestamp(); + QFile f(params.projectFilePath()); + QVERIFY(f.open(QIODevice::ReadWrite)); + QByteArray contents = f.readAll(); + contents.replace("condition: true", "condition: false"); + f.resize(0); + f.write(contents); + f.close(); + f.setFileName(params.buildRoot() + "/subproject2/subproject2.qbs"); + QVERIFY(f.open(QIODevice::ReadWrite)); + contents = f.readAll(); + contents.replace("condition: true", "condition: false"); + f.resize(0); + f.write(contents); + f.close(); + errorInfo = doBuildProject("subprojects/toplevelproject.qbs"); + VERIFY_NO_ERROR(errorInfo); + + // Disabling the project with the dependency only is an error. + // This tests also whether changes in sub-projects are detected. + waitForNewTimestamp(); + f.setFileName(params.projectFilePath()); + QVERIFY(f.open(QIODevice::ReadWrite)); + contents = f.readAll(); + contents.replace("condition: false", "condition: true"); + f.resize(0); + f.write(contents); + f.close(); + errorInfo = doBuildProject("subprojects/toplevelproject.qbs"); + QVERIFY(errorInfo.hasError()); + QVERIFY2(errorInfo.toString().contains("Product dependency 'testLib' not found"), + qPrintable(errorInfo.toString())); +} + +void TestApi::trackAddQObjectHeader() +{ + const qbs::SetupProjectParameters params + = defaultSetupParameters("missing-qobject-header/missingheader.qbs"); + QFile qbsFile(params.projectFilePath()); + QVERIFY(qbsFile.open(QIODevice::WriteOnly | QIODevice::Truncate)); + qbsFile.write("import qbs.base 1.0\nCppApplication {\n Depends { name: 'Qt.core' }\n" + " files: ['main.cpp', 'myobject.cpp']\n}"); + qbsFile.close(); + ProcessResultReceiver receiver; + qbs::ErrorInfo errorInfo + = doBuildProject("missing-qobject-header/missingheader.qbs", 0, &receiver); + QVERIFY(errorInfo.hasError()); + QVERIFY2(isAboutUndefinedSymbols(receiver.output), qPrintable(receiver.output)); + + waitForNewTimestamp(); + QVERIFY(qbsFile.open(QIODevice::WriteOnly | QIODevice::Truncate)); + qbsFile.write("import qbs.base 1.0\nCppApplication {\n Depends { name: 'Qt.core' }\n" + " files: ['main.cpp', 'myobject.cpp','myobject.h']\n}"); + qbsFile.close(); + errorInfo = doBuildProject("missing-qobject-header/missingheader.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + +void TestApi::trackRemoveQObjectHeader() +{ + const qbs::SetupProjectParameters params + = defaultSetupParameters("missing-qobject-header/missingheader.qbs"); + removeBuildDir(params); + QFile qbsFile(params.projectFilePath()); + QVERIFY(qbsFile.open(QIODevice::WriteOnly | QIODevice::Truncate)); + qbsFile.write("import qbs.base 1.0\nCppApplication {\n Depends { name: 'Qt.core' }\n" + " files: ['main.cpp', 'myobject.cpp','myobject.h']\n}"); + qbsFile.close(); + qbs::ErrorInfo errorInfo = doBuildProject("missing-qobject-header/missingheader.qbs"); + VERIFY_NO_ERROR(errorInfo); + + waitForNewTimestamp(); + QVERIFY(qbsFile.open(QIODevice::WriteOnly | QIODevice::Truncate)); + qbsFile.write("import qbs.base 1.0\nCppApplication {\n Depends { name: 'Qt.core' }\n" + " files: ['main.cpp', 'myobject.cpp']\n}"); + qbsFile.close(); + ProcessResultReceiver receiver; + errorInfo = doBuildProject("missing-qobject-header/missingheader.qbs", 0, &receiver); + QVERIFY(errorInfo.hasError()); + QVERIFY2(isAboutUndefinedSymbols(receiver.output), qPrintable(receiver.output)); +} + +void TestApi::transformers() +{ + const qbs::ErrorInfo errorInfo = doBuildProject("transformers/transformers.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + +void TestApi::typeChange() +{ + BuildDescriptionReceiver receiver; + qbs::ErrorInfo errorInfo = doBuildProject("type-change/project.qbs", &receiver); + VERIFY_NO_ERROR(errorInfo); + QVERIFY2(!receiver.descriptions.contains("compiling"), qPrintable(receiver.descriptions)); + + waitForNewTimestamp(); + QFile projectFile("project.qbs"); + QVERIFY2(projectFile.open(QIODevice::ReadWrite), qPrintable(projectFile.errorString())); + QByteArray content = projectFile.readAll(); + content.replace("//", ""); + projectFile.resize(0); + projectFile.write(content); + projectFile.close(); + errorInfo = doBuildProject("type-change/project.qbs", &receiver); + VERIFY_NO_ERROR(errorInfo); + QVERIFY2(receiver.descriptions.contains("compiling"), qPrintable(receiver.descriptions)); +} + +void TestApi::uic() +{ + const qbs::ErrorInfo errorInfo = doBuildProject("uic/uic.qbs"); + VERIFY_NO_ERROR(errorInfo); +} + + +qbs::ErrorInfo TestApi::doBuildProject(const QString &projectFilePath, + QObject *buildDescriptionReceiver, QObject *procResultReceiver, QObject *taskReceiver, + const qbs::BuildOptions &options) +{ + qbs::SetupProjectParameters params = defaultSetupParameters(projectFilePath); + params.setDryRun(options.dryRun()); + const QScopedPointer<qbs::SetupProjectJob> setupJob(qbs::Project().setupProject(params, + m_logSink, 0)); + if (taskReceiver) { + connect(setupJob.data(), SIGNAL(taskStarted(QString,int,qbs::AbstractJob*)), taskReceiver, + SLOT(handleTaskStart(QString))); + } + waitForFinished(setupJob.data()); + if (setupJob->error().hasError()) + return setupJob->error(); + const QScopedPointer<qbs::BuildJob> buildJob(setupJob->project().buildAllProducts(options)); + if (buildDescriptionReceiver) { + connect(buildJob.data(), SIGNAL(reportCommandDescription(QString,QString)), + buildDescriptionReceiver, SLOT(handleDescription(QString,QString))); + } + if (procResultReceiver) { + connect(buildJob.data(), SIGNAL(reportProcessResult(qbs::ProcessResult)), + procResultReceiver, SLOT(handleProcessResult(qbs::ProcessResult))); + } + waitForFinished(buildJob.data()); + return buildJob->error(); +} + QTEST_MAIN(TestApi) #include "tst_api.moc" diff --git a/tests/auto/api/tst_api.h b/tests/auto/api/tst_api.h index 3160c6bf4..098bbf0ed 100644 --- a/tests/auto/api/tst_api.h +++ b/tests/auto/api/tst_api.h @@ -30,9 +30,14 @@ #ifndef QBS_TST_API_H #define QBS_TST_API_H +#include <tools/buildoptions.h> + #include <QObject> -namespace qbs { class SetupProjectParameters; } +namespace qbs { +class ErrorInfo; +class SetupProjectParameters; +} class LogSink; @@ -47,29 +52,76 @@ public: private slots: void initTestCase(); + void addQObjectMacroToCppFile(); + void addedFilePersistent(); + void baseProperties(); void buildGraphLocking(); + void buildProject(); + void buildProject_data(); + void buildProjectDryRun(); + void buildProjectDryRun_data(); void buildSingleFile(); #ifdef QBS_ENABLE_PROJECT_FILE_UPDATES void changeContent(); #endif + void changeDependentLib(); void disabledInstallGroup(); + void disabledProduct(); + void disabledProject(); + void disableProduct(); + void duplicateProductNames(); + void duplicateProductNames_data(); + void dynamicLibs(); + void emptyFileTagList(); + void emptySubmodulesList(); + void explicitlyDependsOn(); + void exportSimple(); + void exportWithRecursiveDepends(); + void fileTagger(); void fileTagsFilterOverride(); void infiniteLoopBuilding(); void infiniteLoopBuilding_data(); void infiniteLoopResolving(); + void inheritQbsSearchPaths(); void installableFiles(); void isRunnable(); void listBuildSystemFiles(); + void mocCppIncluded(); void multiArch(); + void newOutputArtifactInDependency(); + void newPatternMatch(); void nonexistingProjectPropertyFromProduct(); void nonexistingProjectPropertyFromCommandLine(); + void objC(); void projectInvalidation(); void projectLocking(); + void projectWithPropertiesItem(); + void propertiesBlocks(); + void rc(); void references(); + void renameProduct(); + void renameTargetArtifact(); + void removeFileDependency(); + void resolveProject(); + void resolveProject_data(); + void resolveProjectDryRun(); + void resolveProjectDryRun_data(); + void softDependency(); void sourceFileInBuildDir(); + void subProjects(); + void trackAddQObjectHeader(); + void trackRemoveQObjectHeader(); + void transformers(); + void typeChange(); + void uic(); private: qbs::SetupProjectParameters defaultSetupParameters(const QString &projectFilePath) const; + qbs::ErrorInfo doBuildProject(const QString &projectFilePath, + QObject *buildDescriptionReceiver = 0, + QObject *procResultReceiver = 0, + QObject *taskReceiver = 0, + const qbs::BuildOptions &options = qbs::BuildOptions()); LogSink * const m_logSink; const QString m_sourceDataDir; diff --git a/tests/auto/blackbox/testdata/subprojects/resources/imports/LibraryType/type.js b/tests/auto/blackbox/testdata/subprojects/resources/imports/LibraryType/type.js deleted file mode 100644 index cb07f8e5b..000000000 --- a/tests/auto/blackbox/testdata/subprojects/resources/imports/LibraryType/type.js +++ /dev/null @@ -1 +0,0 @@ -function type() { return "dynamiclibrary"; } diff --git a/tests/auto/blackbox/testdata/subprojects/resources/modules/QtCoreDepender/qtcoredepender.qbs b/tests/auto/blackbox/testdata/subprojects/resources/modules/QtCoreDepender/qtcoredepender.qbs deleted file mode 100644 index 03d649309..000000000 --- a/tests/auto/blackbox/testdata/subprojects/resources/modules/QtCoreDepender/qtcoredepender.qbs +++ /dev/null @@ -1,5 +0,0 @@ -import qbs - -Module { - Depends { name: "Qt.core" } -} diff --git a/tests/auto/blackbox/testdata/subprojects/subproject1/main.cpp b/tests/auto/blackbox/testdata/subprojects/subproject1/main.cpp deleted file mode 100644 index 6a0bac9f1..000000000 --- a/tests/auto/blackbox/testdata/subprojects/subproject1/main.cpp +++ /dev/null @@ -1,6 +0,0 @@ -void f(); - -int main() -{ - f(); -} diff --git a/tests/auto/blackbox/testdata/subprojects/subproject2/subproject2.qbs b/tests/auto/blackbox/testdata/subprojects/subproject2/subproject2.qbs deleted file mode 100644 index 183df4dac..000000000 --- a/tests/auto/blackbox/testdata/subprojects/subproject2/subproject2.qbs +++ /dev/null @@ -1,15 +0,0 @@ -import qbs - -Project { - name: "subproject2" - property string libNamePrefix: "test" - SubProject { - filePath: "subproject3/subproject3.qbs" - inheritProperties: true - Properties { - name: "overridden name" - condition: true - libNameSuffix: "Lib" - } - } -} diff --git a/tests/auto/blackbox/testdata/subprojects/subproject2/subproject3/subproject3.qbs b/tests/auto/blackbox/testdata/subprojects/subproject2/subproject3/subproject3.qbs deleted file mode 100644 index acdf1d7e6..000000000 --- a/tests/auto/blackbox/testdata/subprojects/subproject2/subproject3/subproject3.qbs +++ /dev/null @@ -1,16 +0,0 @@ -import qbs -import LibraryType - -Project { - condition: false - property string libNameSuffix: "blubb" - Product { - name: project.libNamePrefix + project.libNameSuffix - type: LibraryType.type() - Depends { name: "cpp" } - Depends { name: "QtCoreDepender" } - cpp.defines: "MY_EXPORT=Q_DECL_EXPORT" - files: "testlib.cpp" - Export { Depends { name: "Qt.core" } } - } -} diff --git a/tests/auto/blackbox/testdata/subprojects/subproject2/subproject3/testlib.cpp b/tests/auto/blackbox/testdata/subprojects/subproject2/subproject3/testlib.cpp deleted file mode 100644 index 398034cb3..000000000 --- a/tests/auto/blackbox/testdata/subprojects/subproject2/subproject3/testlib.cpp +++ /dev/null @@ -1,3 +0,0 @@ -#include <QtGlobal> - -MY_EXPORT void f() {} diff --git a/tests/auto/blackbox/testdata/subprojects/toplevelproject.qbs b/tests/auto/blackbox/testdata/subprojects/toplevelproject.qbs deleted file mode 100644 index f167ccabc..000000000 --- a/tests/auto/blackbox/testdata/subprojects/toplevelproject.qbs +++ /dev/null @@ -1,19 +0,0 @@ -import qbs - -Project { - name: "top level project" - references: ["subproject2"] - - Project { - condition: true - name: "app-project" - CppApplication { - name: "app" - Depends { name: "testLib" } - cpp.defines: "MY_EXPORT=" - files: "subproject1/main.cpp" - } - } - - qbsSearchPaths: ["resources"] -} diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp index 3f48f0103..667583ec6 100644 --- a/tests/auto/blackbox/tst_blackbox.cpp +++ b/tests/auto/blackbox/tst_blackbox.cpp @@ -54,12 +54,6 @@ using qbs::Internal::removeDirectoryWithContents; using qbs::Profile; using qbs::Settings; -static bool regularFileExists(const QString &filePath) -{ - const QFileInfo fi(filePath); - return fi.exists() && fi.isFile(); -} - static QString initQbsExecutableFilePath() { QString filePath = QCoreApplication::applicationDirPath() + QLatin1String("/qbs"); @@ -71,10 +65,7 @@ TestBlackbox::TestBlackbox() : testDataDir(QCoreApplication::applicationDirPath() + "/../tests/auto/blackbox/testWorkDir"), testSourceDir(QDir::cleanPath(SRCDIR "/testdata")), qbsExecutableFilePath(initQbsExecutableFilePath()), - buildProfileName(QLatin1String("qbs_autotests")), - buildDir(buildProfileName + QLatin1String("-debug")), - defaultInstallRoot(buildDir + QLatin1Char('/') + InstallOptions::defaultInstallRoot()), - buildGraphPath(buildDir + QLatin1Char('/') + buildDir + QLatin1String(".bg")) + defaultInstallRoot(relativeBuildDir() + QLatin1Char('/') + InstallOptions::defaultInstallRoot()) { QLocale::setDefault(QLocale::c()); } @@ -92,7 +83,7 @@ int TestBlackbox::runQbs(const QbsRunParameters ¶ms) } args << params.arguments; if (params.useProfile) - args.append(QLatin1String("profile:") + buildProfileName); + args.append(QLatin1String("profile:") + profileName()); QString cmdLine = qbsExecutableFilePath; foreach (const QString &str, args) cmdLine += QLatin1String(" \"") + str + QLatin1Char('"'); @@ -178,17 +169,17 @@ void TestBlackbox::initTestCase() QVERIFY(regularFileExists(qbsExecutableFilePath)); Settings settings((QString())); - if (!settings.profiles().contains(buildProfileName)) - QFAIL(QByteArray("The build profile '" + buildProfileName.toLocal8Bit() + + if (!settings.profiles().contains(profileName())) + QFAIL(QByteArray("The build profile '" + profileName().toLocal8Bit() + "' could not be found. Please set it up on your machine.")); - Profile buildProfile(buildProfileName, &settings); + Profile buildProfile(profileName(), &settings); QVariant qtBinPath = buildProfile.value(QLatin1String("Qt.core.binPath")); if (!qtBinPath.isValid()) - QFAIL(QByteArray("The build profile '" + buildProfileName.toLocal8Bit() + + QFAIL(QByteArray("The build profile '" + profileName().toLocal8Bit() + "' is not a valid Qt profile.")); if (!QFile::exists(qtBinPath.toString())) - QFAIL(QByteArray("The build profile '" + buildProfileName.toLocal8Bit() + + QFAIL(QByteArray("The build profile '" + profileName().toLocal8Bit() + "' points to an invalid Qt path.")); // Initialize the test data directory. @@ -198,192 +189,22 @@ void TestBlackbox::initTestCase() ccp(testSourceDir, testDataDir); } -void TestBlackbox::addedFilePersistent() -{ - QDir::setCurrent(testDataDir + QLatin1String("/added-file-persistent")); - - // On the initial run, linking will fail. - QbsRunParameters failedRunParams; - failedRunParams.expectFailure = true; - QVERIFY(runQbs(failedRunParams) != 0); - - // Add a file. qbs must schedule it for rule application on the next build. - waitForNewTimestamp(); - QFile projectFile("project.qbs"); - QVERIFY2(projectFile.open(QIODevice::ReadWrite), qPrintable(projectFile.errorString())); - const QByteArray originalContent = projectFile.readAll(); - QByteArray addedFileContent = originalContent; - addedFileContent.replace("/* 'file.cpp' */", "'file.cpp'"); - projectFile.resize(0); - projectFile.write(addedFileContent); - projectFile.flush(); - QCOMPARE(runQbs(QbsRunParameters("resolve")), 0); - - // Remove the file again. qbs must unschedule the rule application again. - // Consequently, the linking step must fail as in the initial run. - waitForNewTimestamp(); - projectFile.resize(0); - projectFile.write(originalContent); - projectFile.flush(); - QVERIFY(runQbs(failedRunParams) != 0); - - // Add the file again. qbs must schedule it for rule application on the next build. - waitForNewTimestamp(); - projectFile.resize(0); - projectFile.write(addedFileContent); - projectFile.close(); - QCOMPARE(runQbs(QbsRunParameters("resolve")), 0); - - // qbs must remember that a file was scheduled for rule application. The build must then - // succeed, as now all necessary symbols are linked in. - QCOMPARE(runQbs(), 0); -} - -void TestBlackbox::addQObjectMacroToCppFile() -{ - QDir::setCurrent(testDataDir + QLatin1String("/add-qobject-macro-to-cpp-file")); - QCOMPARE(runQbs(), 0); - - waitForNewTimestamp(); - QFile cppFile("object.cpp"); - QVERIFY2(cppFile.open(QIODevice::ReadWrite), qPrintable(cppFile.errorString())); - QByteArray contents = cppFile.readAll(); - contents.replace("// ", ""); - cppFile.resize(0); - cppFile.write(contents); - cppFile.close(); - QCOMPARE(runQbs(), 0); -} - -void TestBlackbox::baseProperties() -{ - QDir::setCurrent(testDataDir + QLatin1String("/baseProperties")); - QCOMPARE(runQbs(), 0); -} - void TestBlackbox::buildDirectories() { const QString projectDir = QDir::cleanPath(testDataDir + QLatin1String("/build-directories")); - const QString projectBuildDir = projectDir + '/' + buildDir; + const QString projectBuildDir = projectDir + '/' + relativeBuildDir(); QDir::setCurrent(projectDir); QCOMPARE(runQbs(QStringList("-qq")), 0); const QStringList outputLines = QString::fromLocal8Bit(m_qbsStderr.trimmed()).split('\n', QString::SkipEmptyParts); QCOMPARE(outputLines.count(), 4); - QCOMPARE(outputLines.at(0).trimmed(), projectDir + '/' + productBuildDir("p1")); - QCOMPARE(outputLines.at(1).trimmed(), projectDir + '/' + productBuildDir("p2")); + QCOMPARE(outputLines.at(0).trimmed(), projectDir + '/' + relativeProductBuildDir("p1")); + QCOMPARE(outputLines.at(1).trimmed(), projectDir + '/' + relativeProductBuildDir("p2")); QCOMPARE(outputLines.at(2).trimmed(), projectBuildDir); QCOMPARE(outputLines.at(3).trimmed(), projectDir); } -void TestBlackbox::build_project_data() -{ - QTest::addColumn<QString>("projectSubDir"); - QTest::addColumn<QString>("productFileName"); - QTest::newRow("BPs in Sources") - << QString("buildproperties_source") - << executableFilePath("HelloWorld"); - QTest::newRow("code generator") - << QString("codegen") - << executableFilePath("codegen"); - QTest::newRow("link static libs") - << QString("link_staticlib") - << executableFilePath("HelloWorld"); - QTest::newRow("precompiled header") - << QString("precompiledHeader") - << executableFilePath("MyApp"); - QTest::newRow("lots of dots") - << QString("lotsofdots") - << executableFilePath("lots.of.dots"); - QTest::newRow("Qt5 plugin") - << QString("qt5plugin") - << productBuildDir("echoplugin") + '/' + HostOsInfo::dynamicLibraryName("echoplugin"); - QTest::newRow("Q_OBJECT in source") - << QString("moc_cpp") - << executableFilePath("moc_cpp"); - QTest::newRow("Q_OBJECT in header") - << QString("moc_hpp") - << executableFilePath("moc_hpp"); - QTest::newRow("Q_OBJECT in header, moc_XXX.cpp included") - << QString("moc_hpp_included") - << executableFilePath("moc_hpp_included"); - QTest::newRow("app and lib with same source file") - << QString("lib_samesource") - << executableFilePath("HelloWorldApp"); - QTest::newRow("source files with the same base name but different extensions") - << QString("sameBaseName") - << executableFilePath("basename"); - QTest::newRow("static library dependencies") - << QString("staticLibDeps") - << executableFilePath("staticLibDeps"); - QTest::newRow("simple probes") - << QString("simpleProbe") - << executableFilePath("MyApp"); - QTest::newRow("application without sources") - << QString("appWithoutSources") - << executableFilePath("appWithoutSources"); -} - -void TestBlackbox::build_project() -{ - QFETCH(QString, projectSubDir); - QFETCH(QString, productFileName); - if (!projectSubDir.startsWith('/')) - projectSubDir.prepend('/'); - QVERIFY2(QFile::exists(testDataDir + projectSubDir), qPrintable(testDataDir + projectSubDir)); - QDir::setCurrent(testDataDir + projectSubDir); - rmDirR(buildDir); - - QCOMPARE(runQbs(), 0); - QVERIFY2(regularFileExists(productFileName), qPrintable(productFileName)); - QVERIFY(regularFileExists(buildGraphPath)); - QVERIFY2(QFile::remove(productFileName), qPrintable(productFileName)); - waitForNewTimestamp(); - QCOMPARE(runQbs(QbsRunParameters(QStringList("--check-timestamps"))), 0); - QVERIFY2(regularFileExists(productFileName), qPrintable(productFileName)); - QVERIFY(regularFileExists(buildGraphPath)); -} - -void TestBlackbox::build_project_dry_run_data() -{ - build_project_data(); -} - -void TestBlackbox::build_project_dry_run() -{ - QFETCH(QString, projectSubDir); - QFETCH(QString, productFileName); - if (!projectSubDir.startsWith('/')) - projectSubDir.prepend('/'); - QVERIFY2(QFile::exists(testDataDir + projectSubDir), qPrintable(testDataDir + projectSubDir)); - QDir::setCurrent(testDataDir + projectSubDir); - rmDirR(buildDir); - - QCOMPARE(runQbs(QbsRunParameters(QStringList("-n"))), 0); - const QStringList &buildDirContents - = QDir(buildDir).entryList(QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs); - QVERIFY2(buildDirContents.isEmpty(), qPrintable(buildDirContents.join(" "))); -} - -void TestBlackbox::changeDependentLib() -{ - QDir::setCurrent(testDataDir + "/change-dependent-lib"); - QCOMPARE(runQbs(), 0); - waitForNewTimestamp(); - const QString qbsFileName("change-dependent-lib.qbs"); - QFile qbsFile(qbsFileName); - QVERIFY(qbsFile.open(QIODevice::ReadWrite)); - const QByteArray content1 = qbsFile.readAll(); - QByteArray content2 = content1; - content2.replace("cpp.defines: [\"XXXX\"]", "cpp.defines: [\"ABCD\"]"); - QVERIFY(content1 != content2); - qbsFile.seek(0); - qbsFile.write(content2); - qbsFile.close(); - QCOMPARE(runQbs(), 0); -} - void TestBlackbox::changedFiles_data() { QTest::addColumn<bool>("useChangedFilesForInitialBuild"); @@ -396,7 +217,7 @@ void TestBlackbox::changedFiles() QFETCH(bool, useChangedFilesForInitialBuild); QDir::setCurrent(testDataDir + "/changed-files"); - rmDirR(buildDir); + rmDirR(relativeBuildDir()); const QString changedFile = QDir::cleanPath(QDir::currentPath() + "/file1.cpp"); QbsRunParameters params1; if (useChangedFilesForInitialBuild) @@ -424,7 +245,7 @@ void TestBlackbox::dependenciesProperty() { QDir::setCurrent(testDataDir + QLatin1String("/dependenciesProperty")); QCOMPARE(runQbs(), 0); - QFile depsFile(productBuildDir("product1") + QLatin1String("/product1.deps")); + QFile depsFile(relativeProductBuildDir("product1") + QLatin1String("/product1.deps")); QVERIFY(depsFile.open(QFile::ReadOnly)); QString deps = QString::fromLatin1(depsFile.readAll()); QVERIFY(!deps.isEmpty()); @@ -465,68 +286,11 @@ void TestBlackbox::dependenciesProperty() QCOMPARE(product2_cpp.property("defines").toString(), QLatin1String("SMURF")); } -void TestBlackbox::resolve_project_data() -{ - return build_project_data(); -} - -void TestBlackbox::resolve_project() -{ - QFETCH(QString, projectSubDir); - QFETCH(QString, productFileName); - if (!projectSubDir.startsWith('/')) - projectSubDir.prepend('/'); - QVERIFY2(QFile::exists(testDataDir + projectSubDir), qPrintable(testDataDir + projectSubDir)); - QDir::setCurrent(testDataDir + projectSubDir); - rmDirR(buildDir); - - QCOMPARE(runQbs(QbsRunParameters("resolve")), 0); - QVERIFY2(!QFile::exists(productFileName), qPrintable(productFileName)); - QVERIFY(regularFileExists(buildGraphPath)); -} - -void TestBlackbox::resolve_project_dry_run_data() -{ - return resolve_project_data(); -} - -void TestBlackbox::resolve_project_dry_run() -{ - QFETCH(QString, projectSubDir); - QFETCH(QString, productFileName); - if (!projectSubDir.startsWith('/')) - projectSubDir.prepend('/'); - QVERIFY2(QFile::exists(testDataDir + projectSubDir), qPrintable(testDataDir + projectSubDir)); - QDir::setCurrent(testDataDir + projectSubDir); - rmDirR(buildDir); - - QCOMPARE(runQbs(QbsRunParameters(QLatin1String("resolve"), QStringList("-n"))), 0); - QVERIFY2(!QFile::exists(productFileName), qPrintable(productFileName)); - QVERIFY2(!QFile::exists(buildGraphPath), qPrintable(buildGraphPath)); -} - -void TestBlackbox::typeChange() -{ - QDir::setCurrent(testDataDir + "/type-change"); - QCOMPARE(runQbs(), 0); - QVERIFY2(!m_qbsStdout.contains("compiling"), m_qbsStdout.constData()); - waitForNewTimestamp(); - QFile projectFile("project.qbs"); - QVERIFY2(projectFile.open(QIODevice::ReadWrite), qPrintable(projectFile.errorString())); - QByteArray content = projectFile.readAll(); - content.replace("//", ""); - projectFile.resize(0); - projectFile.write(content); - projectFile.close(); - QCOMPARE(runQbs(), 0); - QVERIFY2(m_qbsStdout.contains("compiling"), m_qbsStdout.constData()); -} - void TestBlackbox::usingsAsSoleInputsNonMultiplexed() { QDir::setCurrent(testDataDir + QLatin1String("/usings-as-sole-inputs-non-multiplexed")); QCOMPARE(runQbs(), 0); - const QString p3BuildDir = productBuildDir("p3"); + const QString p3BuildDir = relativeProductBuildDir("p3"); QVERIFY(regularFileExists(p3BuildDir + "/custom1.out.plus")); QVERIFY(regularFileExists(p3BuildDir + "/custom2.out.plus")); } @@ -538,10 +302,10 @@ static bool symlinkExists(const QString &linkFilePath) void TestBlackbox::clean() { - const QString appObjectFilePath = productBuildDir("app") + "/.obj/main.cpp" + QTC_HOST_OBJECT_SUFFIX; - const QString appExeFilePath = executableFilePath("app"); - const QString depObjectFilePath = productBuildDir("dep") + "/.obj/dep.cpp" + QTC_HOST_OBJECT_SUFFIX; - const QString depLibBase = productBuildDir("dep") + '/' + QTC_HOST_DYNAMICLIB_PREFIX + "dep"; + const QString appObjectFilePath = relativeProductBuildDir("app") + "/.obj/main.cpp" + QTC_HOST_OBJECT_SUFFIX; + const QString appExeFilePath = relativeExecutableFilePath("app"); + const QString depObjectFilePath = relativeProductBuildDir("dep") + "/.obj/dep.cpp" + QTC_HOST_OBJECT_SUFFIX; + const QString depLibBase = relativeProductBuildDir("dep") + '/' + QTC_HOST_DYNAMICLIB_PREFIX + "dep"; QString depLibFilePath; QStringList symlinks; if (qbs::Internal::HostOsInfo::isOsxHost()) { @@ -634,47 +398,6 @@ void TestBlackbox::clean() QVERIFY2(symlinkExists(symLink), qPrintable(symLink)); } -void TestBlackbox::exportSimple() -{ - QDir::setCurrent(testDataDir + "/exportSimple"); - QCOMPARE(runQbs(), 0); -} - -void TestBlackbox::exportWithRecursiveDepends() -{ - QDir::setCurrent(testDataDir + "/exportWithRecursiveDepends"); - QEXPECT_FAIL("", "currently broken", Abort); - QbsRunParameters params; - params.expectFailure = true; // Remove when test no longer fails. - QCOMPARE(runQbs(params), 0); -} - -void TestBlackbox::fileTagger() -{ - QDir::setCurrent(testDataDir + "/fileTagger"); - QCOMPARE(runQbs(), 0); - QVERIFY(m_qbsStdout.contains("moc bla.cpp")); -} - -void TestBlackbox::rc() -{ - QDir::setCurrent(testDataDir + "/rc"); - QCOMPARE(runQbs(), 0); - const bool rcFileWasCompiled = m_qbsStdout.contains("compiling test.rc"); - QCOMPARE(rcFileWasCompiled, HostOsInfo::isWindowsHost()); -} - -void TestBlackbox::removeFileDependency() -{ - QDir::setCurrent(testDataDir + "/removeFileDependency"); - QCOMPARE(runQbs(), 0); - QFile::remove("someheader.h"); - QbsRunParameters params; - params.expectFailure = true; - QVERIFY(runQbs(params) != 0); - QVERIFY(m_qbsStdout.contains("compiling main.cpp")); -} - void TestBlackbox::renameDependency() { QDir::setCurrent(testDataDir + "/renameDependency"); @@ -695,114 +418,11 @@ void TestBlackbox::renameDependency() QVERIFY(m_qbsStdout.contains("compiling main.cpp")); } -void TestBlackbox::renameProduct() -{ - QDir::setCurrent(testDataDir + "/renameProduct"); - - // Initial run. - QCOMPARE(runQbs(), 0); - - // Rename lib and adapt Depends item. - waitForNewTimestamp(); - QFile f("rename.qbs"); - QVERIFY(f.open(QIODevice::ReadWrite)); - QByteArray contents = f.readAll(); - contents.replace("TheLib", "thelib"); - f.resize(0); - f.write(contents); - f.close(); - QCOMPARE(runQbs(), 0); - - // Rename lib and don't adapt Depends item. - waitForNewTimestamp(); - QVERIFY(f.open(QIODevice::ReadWrite)); - contents = f.readAll(); - const int libNameIndex = contents.lastIndexOf("thelib"); - QVERIFY(libNameIndex != -1); - contents.replace(libNameIndex, 6, "TheLib"); - f.resize(0); - f.write(contents); - f.close(); - QbsRunParameters params; - params.expectFailure = true; - QVERIFY(runQbs(params) != 0); -} - -void TestBlackbox::renameTargetArtifact() -{ - QDir::setCurrent(testDataDir + "/renameTargetArtifact"); - - // Initial run. - QCOMPARE(runQbs(), 0); - QVERIFY(m_qbsStdout.contains("compiling")); - QCOMPARE(m_qbsStdout.count("linking"), 2); - - // Rename library file name. - waitForNewTimestamp(); - QFile f("rename.qbs"); - QVERIFY(f.open(QIODevice::ReadWrite)); - QByteArray contents = f.readAll(); - contents.replace("the_lib", "TheLib"); - f.resize(0); - f.write(contents); - f.close(); - QCOMPARE(runQbs(), 0); - QVERIFY(!m_qbsStdout.contains("compiling")); - QCOMPARE(m_qbsStdout.count("linking"), 2); -} - -void TestBlackbox::softDependency() -{ - QDir::setCurrent(testDataDir + "/soft-dependency"); - QCOMPARE(runQbs(), 0); -} - -void TestBlackbox::subProjects() -{ - QDir::setCurrent(testDataDir + "/subprojects"); - - // Check all three types of subproject creation, plus property overrides. - QCOMPARE(runQbs(), 0); - - // Disabling both the project with the dependency and the one with the dependent - // should not cause an error. - waitForNewTimestamp(); - QFile f(testDataDir + "/subprojects/toplevelproject.qbs"); - QVERIFY(f.open(QIODevice::ReadWrite)); - QByteArray contents = f.readAll(); - contents.replace("condition: true", "condition: false"); - f.resize(0); - f.write(contents); - f.close(); - f.setFileName(testDataDir + "/subprojects/subproject2/subproject2.qbs"); - QVERIFY(f.open(QIODevice::ReadWrite)); - contents = f.readAll(); - contents.replace("condition: true", "condition: false"); - f.resize(0); - f.write(contents); - f.close(); - QCOMPARE(runQbs(), 0); - - // Disabling the project with the dependency only is an error. - // This tests also whether changes in sub-projects are detected. - waitForNewTimestamp(); - f.setFileName(testDataDir + "/subprojects/toplevelproject.qbs"); - QVERIFY(f.open(QIODevice::ReadWrite)); - contents = f.readAll(); - contents.replace("condition: false", "condition: true"); - f.resize(0); - f.write(contents); - f.close(); - QbsRunParameters params; - params.expectFailure = true; - QVERIFY(runQbs(params) != 0); -} - void TestBlackbox::track_qrc() { QDir::setCurrent(testDataDir + "/qrc"); QCOMPARE(runQbs(), 0); - const QString fileName = executableFilePath("i"); + const QString fileName = relativeExecutableFilePath("i"); QVERIFY2(regularFileExists(fileName), qPrintable(fileName)); QDateTime dt = QFileInfo(fileName).lastModified(); QTest::qSleep(2020); @@ -823,9 +443,9 @@ void TestBlackbox::track_qobject_change() QDir::setCurrent(testDataDir + "/trackQObjChange"); copyFileAndUpdateTimestamp("bla_qobject.h", "bla.h"); QCOMPARE(runQbs(), 0); - const QString productFilePath = executableFilePath("i"); + const QString productFilePath = relativeExecutableFilePath("i"); QVERIFY2(regularFileExists(productFilePath), qPrintable(productFilePath)); - QString moc_bla_objectFileName = productBuildDir("i") + QString moc_bla_objectFileName = relativeProductBuildDir("i") + "/.obj/GeneratedFiles/moc_bla.cpp" QTC_HOST_OBJECT_SUFFIX; QVERIFY2(regularFileExists(moc_bla_objectFileName), qPrintable(moc_bla_objectFileName)); @@ -848,14 +468,14 @@ void TestBlackbox::trackAddFile() QDir::setCurrent(testDataDir + "/trackAddFile/work"); QCOMPARE(runQbs(), 0); - process.start(executableFilePath("someapp")); + process.start(relativeExecutableFilePath("someapp")); QVERIFY2(process.waitForStarted(), qPrintable(process.errorString())); QVERIFY2(process.waitForFinished(), qPrintable(process.errorString())); QCOMPARE(process.exitCode(), 0); output = process.readAllStandardOutput().split('\n'); QCOMPARE(output.takeFirst().trimmed().constData(), "Hello World!"); QCOMPARE(output.takeFirst().trimmed().constData(), "NARF!"); - QString unchangedObjectFile = buildDir + "/someapp/narf.cpp" QTC_HOST_OBJECT_SUFFIX; + QString unchangedObjectFile = relativeBuildDir() + "/someapp/narf.cpp" QTC_HOST_OBJECT_SUFFIX; QDateTime unchangedObjectFileTime1 = QFileInfo(unchangedObjectFile).lastModified(); waitForNewTimestamp(); @@ -864,7 +484,7 @@ void TestBlackbox::trackAddFile() touch("main.cpp"); QCOMPARE(runQbs(), 0); - process.start(executableFilePath("someapp")); + process.start(relativeExecutableFilePath("someapp")); QVERIFY(process.waitForStarted()); QVERIFY(process.waitForFinished()); QCOMPARE(process.exitCode(), 0); @@ -895,7 +515,7 @@ void TestBlackbox::trackExternalProductChanges() QVERIFY(!m_qbsStdout.contains("compiling jsFileChange.cpp")); QVERIFY(!m_qbsStdout.contains("compiling fileExists.cpp")); - rmDirR(buildDir); + rmDirR(relativeBuildDir()); QCOMPARE(runQbs(), 0); QVERIFY(m_qbsStdout.contains("compiling main.cpp")); QVERIFY(!m_qbsStdout.contains("compiling environmentChange.cpp")); @@ -916,7 +536,7 @@ void TestBlackbox::trackExternalProductChanges() QVERIFY(m_qbsStdout.contains("compiling jsFileChange.cpp")); QVERIFY(!m_qbsStdout.contains("compiling fileExists.cpp")); - rmDirR(buildDir); + rmDirR(relativeBuildDir()); QVERIFY(jsFile.open(QIODevice::ReadWrite)); jsCode = jsFile.readAll(); jsCode.replace("['jsFileChange.cpp']", "[]"); @@ -953,7 +573,7 @@ void TestBlackbox::trackRemoveFile() QDir::setCurrent(testDataDir + "/trackAddFile/work"); QCOMPARE(runQbs(), 0); - process.start(executableFilePath("someapp")); + process.start(relativeExecutableFilePath("someapp")); QVERIFY2(process.waitForStarted(), qPrintable(process.errorString())); QVERIFY2(process.waitForFinished(), qPrintable(process.errorString())); QCOMPARE(process.exitCode(), 0); @@ -961,7 +581,7 @@ void TestBlackbox::trackRemoveFile() QCOMPARE(output.takeFirst().trimmed().constData(), "Hello World!"); QCOMPARE(output.takeFirst().trimmed().constData(), "NARF!"); QCOMPARE(output.takeFirst().trimmed().constData(), "ZORT!"); - QString unchangedObjectFile = buildDir + "/someapp/narf.cpp" QTC_HOST_OBJECT_SUFFIX; + QString unchangedObjectFile = relativeBuildDir() + "/someapp/narf.cpp" QTC_HOST_OBJECT_SUFFIX; QDateTime unchangedObjectFileTime1 = QFileInfo(unchangedObjectFile).lastModified(); waitForNewTimestamp(); @@ -977,7 +597,7 @@ void TestBlackbox::trackRemoveFile() touch("project.qbs"); QCOMPARE(runQbs(), 0); - process.start(executableFilePath("someapp")); + process.start(relativeExecutableFilePath("someapp")); QVERIFY(process.waitForStarted()); QVERIFY(process.waitForFinished()); QCOMPARE(process.exitCode(), 0); @@ -990,7 +610,7 @@ void TestBlackbox::trackRemoveFile() QCOMPARE(unchangedObjectFileTime1, unchangedObjectFileTime2); // the object file for the removed cpp file should have vanished too - QCOMPARE(regularFileExists(buildDir + "/someapp/zort.cpp" QTC_HOST_OBJECT_SUFFIX), false); + QCOMPARE(regularFileExists(relativeBuildDir() + "/someapp/zort.cpp" QTC_HOST_OBJECT_SUFFIX), false); } void TestBlackbox::trackAddFileTag() @@ -1005,7 +625,7 @@ void TestBlackbox::trackAddFileTag() QDir::setCurrent(testDataDir + "/trackFileTags/work"); QCOMPARE(runQbs(), 0); - process.start(executableFilePath("someapp")); + process.start(relativeExecutableFilePath("someapp")); QVERIFY2(process.waitForStarted(), qPrintable(process.errorString())); QVERIFY2(process.waitForFinished(), qPrintable(process.errorString())); QCOMPARE(process.exitCode(), 0); @@ -1018,7 +638,7 @@ void TestBlackbox::trackAddFileTag() touch("project.qbs"); QCOMPARE(runQbs(), 0); - process.start(executableFilePath("someapp")); + process.start(relativeExecutableFilePath("someapp")); QVERIFY(process.waitForStarted()); QVERIFY(process.waitForFinished()); QCOMPARE(process.exitCode(), 0); @@ -1039,12 +659,12 @@ void TestBlackbox::trackRemoveFileTag() QCOMPARE(runQbs(), 0); // check if the artifacts are here that will become stale in the 2nd step - QVERIFY(regularFileExists(productBuildDir("someapp") + QVERIFY(regularFileExists(relativeProductBuildDir("someapp") + "/.obj/main_foo.cpp" QTC_HOST_OBJECT_SUFFIX)); - QVERIFY(regularFileExists(productBuildDir("someapp") + "/main_foo.cpp")); - QVERIFY(regularFileExists(productBuildDir("someapp") + "/main.foo")); + QVERIFY(regularFileExists(relativeProductBuildDir("someapp") + "/main_foo.cpp")); + QVERIFY(regularFileExists(relativeProductBuildDir("someapp") + "/main.foo")); - process.start(executableFilePath("someapp")); + process.start(relativeExecutableFilePath("someapp")); QVERIFY(process.waitForStarted()); QVERIFY(process.waitForFinished()); QCOMPARE(process.exitCode(), 0); @@ -1057,7 +677,7 @@ void TestBlackbox::trackRemoveFileTag() touch("project.qbs"); QCOMPARE(runQbs(), 0); - process.start(executableFilePath("someapp")); + process.start(relativeExecutableFilePath("someapp")); QVERIFY(process.waitForStarted()); QVERIFY(process.waitForFinished()); QCOMPARE(process.exitCode(), 0); @@ -1065,9 +685,9 @@ void TestBlackbox::trackRemoveFileTag() QCOMPARE(output.takeFirst().trimmed().constData(), "there's no foo here"); // check if stale artifacts have been removed - QCOMPARE(regularFileExists(productBuildDir("someapp") + "/.obj/main_foo.cpp" QTC_HOST_OBJECT_SUFFIX), false); - QCOMPARE(regularFileExists(productBuildDir("someapp") + "/main_foo.cpp"), false); - QCOMPARE(regularFileExists(productBuildDir("someapp") + "/main.foo"), false); + QCOMPARE(regularFileExists(relativeProductBuildDir("someapp") + "/.obj/main_foo.cpp" QTC_HOST_OBJECT_SUFFIX), false); + QCOMPARE(regularFileExists(relativeProductBuildDir("someapp") + "/main_foo.cpp"), false); + QCOMPARE(regularFileExists(relativeProductBuildDir("someapp") + "/main.foo"), false); } void TestBlackbox::trackAddMocInclude() @@ -1147,18 +767,6 @@ void TestBlackbox::trackRemoveProduct() QVERIFY(!m_qbsStdout.contains("linking product3")); } -void TestBlackbox::transformers() -{ - QDir::setCurrent(testDataDir + "/transformers"); - QCOMPARE(runQbs(), 0); -} - -void TestBlackbox::uic() -{ - QDir::setCurrent(testDataDir + "/uic"); - QCOMPARE(runQbs(), 0); -} - void TestBlackbox::wildcardRenaming() { QDir::setCurrent(testDataDir + "/wildcard_renaming"); @@ -1196,10 +804,10 @@ void TestBlackbox::ruleConditions() { QDir::setCurrent(testDataDir + "/ruleConditions"); QCOMPARE(runQbs(), 0); - QVERIFY(QFileInfo(executableFilePath("zorted")).exists()); - QVERIFY(QFileInfo(executableFilePath("unzorted")).exists()); - QVERIFY(QFileInfo(productBuildDir("zorted") + "/zorted.foo.narf.zort").exists()); - QVERIFY(!QFileInfo(productBuildDir("unzorted") + "/unzorted.foo.narf.zort").exists()); + QVERIFY(QFileInfo(relativeExecutableFilePath("zorted")).exists()); + QVERIFY(QFileInfo(relativeExecutableFilePath("unzorted")).exists()); + QVERIFY(QFileInfo(relativeProductBuildDir("zorted") + "/zorted.foo.narf.zort").exists()); + QVERIFY(!QFileInfo(relativeProductBuildDir("unzorted") + "/unzorted.foo.narf.zort").exists()); } void TestBlackbox::ruleCycle() @@ -1211,47 +819,6 @@ void TestBlackbox::ruleCycle() QVERIFY(m_qbsStderr.contains("Cycle detected in rule dependencies")); } -void TestBlackbox::trackAddQObjectHeader() -{ - QDir::setCurrent(testDataDir + "/missingqobjectheader"); - const QString qbsFileName("missingheader.qbs"); - QFile qbsFile(qbsFileName); - QVERIFY(qbsFile.open(QIODevice::WriteOnly | QIODevice::Truncate)); - qbsFile.write("import qbs.base 1.0\nCppApplication {\n Depends { name: 'Qt.core' }\n" - " files: ['main.cpp', 'myobject.cpp']\n}"); - qbsFile.close(); - QbsRunParameters params; - params.expectFailure = true; - QVERIFY(runQbs(params) != 0); - waitForNewTimestamp(); - QVERIFY(qbsFile.open(QIODevice::WriteOnly | QIODevice::Truncate)); - qbsFile.write("import qbs.base 1.0\nCppApplication {\n Depends { name: 'Qt.core' }\n" - " files: ['main.cpp', 'myobject.cpp','myobject.h']\n}"); - qbsFile.close(); - params.expectFailure = false; - QCOMPARE(runQbs(params), 0); -} - -void TestBlackbox::trackRemoveQObjectHeader() -{ - QDir::setCurrent(testDataDir + "/missingqobjectheader"); - const QString qbsFileName("missingheader.qbs"); - QFile qbsFile(qbsFileName); - QVERIFY(qbsFile.open(QIODevice::WriteOnly | QIODevice::Truncate)); - qbsFile.write("import qbs.base 1.0\nCppApplication {\n Depends { name: 'Qt.core' }\n" - " files: ['main.cpp', 'myobject.cpp','myobject.h']\n}"); - qbsFile.close(); - QbsRunParameters params; - QCOMPARE(runQbs(params), 0); - waitForNewTimestamp(); - QVERIFY(qbsFile.open(QIODevice::WriteOnly | QIODevice::Truncate)); - qbsFile.write("import qbs.base 1.0\nCppApplication {\n Depends { name: 'Qt.core' }\n" - " files: ['main.cpp', 'myobject.cpp']\n}"); - qbsFile.close(); - params.expectFailure = true; - QVERIFY(runQbs(params) != 0); -} - void TestBlackbox::overrideProjectProperties() { QDir::setCurrent(testDataDir + "/overrideProjectProperties"); @@ -1263,14 +830,14 @@ void TestBlackbox::overrideProjectProperties() << QLatin1String("project.someInt:156") << QLatin1String("project.someStringList:one") << QLatin1String("MyAppForYou.mainFile:main.cpp"))), 0); - QVERIFY(regularFileExists(executableFilePath("MyAppForYou"))); - QVERIFY(QFile::remove(buildGraphPath)); + QVERIFY(regularFileExists(relativeExecutableFilePath("MyAppForYou"))); + QVERIFY(QFile::remove(relativeBuildGraphFilePath())); QbsRunParameters params; params.arguments << QLatin1String("-f") << QLatin1String("project_using_helper_lib.qbs"); params.expectFailure = true; QVERIFY(runQbs(params) != 0); - rmDirR(buildDir); + rmDirR(relativeBuildDir()); params.arguments = QStringList() << QLatin1String("-f") << QLatin1String("project_using_helper_lib.qbs") << QLatin1String("project.linkSuccessfully:true"); @@ -1283,7 +850,7 @@ void TestBlackbox::productProperties() QDir::setCurrent(testDataDir + "/productproperties"); QCOMPARE(runQbs(QbsRunParameters(QStringList() << QLatin1String("-f") << QLatin1String("project.qbs"))), 0); - QVERIFY(regularFileExists(executableFilePath("blubb_user"))); + QVERIFY(regularFileExists(relativeExecutableFilePath("blubb_user"))); } void TestBlackbox::propertyChanges() @@ -1301,7 +868,7 @@ void TestBlackbox::propertyChanges() QVERIFY(m_qbsStdout.contains("linking product 1.debug")); QVERIFY(m_qbsStdout.contains("generated.txt")); QVERIFY(m_qbsStdout.contains("Making output from input")); - QFile generatedFile(productBuildDir("generated text file") + "/generated.txt"); + QFile generatedFile(relativeProductBuildDir("generated text file") + "/generated.txt"); QVERIFY(generatedFile.open(QIODevice::ReadOnly)); QCOMPARE(generatedFile.readAll(), QByteArray("prefix 1contents 1suffix 1")); generatedFile.close(); @@ -1504,64 +1071,12 @@ void TestBlackbox::propertyChanges() QVERIFY(m_qbsStdout.contains("Making output from input")); } -void TestBlackbox::disabledProduct() -{ - QDir::setCurrent(testDataDir + "/disabledProduct"); - QCOMPARE(runQbs(), 0); -} - -void TestBlackbox::disabledProject() -{ - QDir::setCurrent(testDataDir + "/disabledProject"); - QCOMPARE(runQbs(), 0); -} - -void TestBlackbox::disableProduct() -{ - QDir::setCurrent(testDataDir + "/disable-product"); - QCOMPARE(runQbs(), 0); - waitForNewTimestamp(); - QFile projectFile("project.qbs"); - QVERIFY(projectFile.open(QIODevice::ReadWrite)); - QByteArray content = projectFile.readAll(); - content.replace("// condition: false", "condition: false"); - projectFile.resize(0); - projectFile.write(content); - projectFile.close(); - QCOMPARE(runQbs(), 0); -} - -void TestBlackbox::duplicateProductNames() -{ - QDir::setCurrent(testDataDir + "/duplicateProductNames"); - QFETCH(QString, projectFileName); - QbsRunParameters params; - params.expectFailure = true; - params.arguments = QStringList() << "-f" << projectFileName; - QVERIFY(runQbs(params) != 0); - QVERIFY(m_qbsStderr.contains("Duplicate product name")); -} - -void TestBlackbox::duplicateProductNames_data() -{ - QTest::addColumn<QString>("projectFileName"); - QTest::newRow("Names explicitly set") << QString("explicit.qbs"); - QTest::newRow("Unnamed products in same file") << QString("implicit.qbs"); - QTest::newRow("Unnamed products in files of the same name") << QString("implicit-indirect.qbs"); -} - -void TestBlackbox::dynamicLibs() -{ - QDir::setCurrent(testDataDir + "/dynamicLibs"); - QCOMPARE(runQbs(), 0); -} - void TestBlackbox::dynamicMultiplexRule() { const QString testDir = testDataDir + "/dynamicMultiplexRule"; QDir::setCurrent(testDir); QCOMPARE(runQbs(), 0); - const QString outputFilePath = productBuildDir("dynamicMultiplexRule") + "/stuff-from-3-inputs"; + const QString outputFilePath = relativeProductBuildDir("dynamicMultiplexRule") + "/stuff-from-3-inputs"; QVERIFY(regularFileExists(outputFilePath)); waitForNewTimestamp(); touch("two.txt"); @@ -1580,10 +1095,10 @@ void TestBlackbox::dynamicRuleOutputs() QDir::setCurrent(testDir + "/work"); QCOMPARE(runQbs(), 0); - const QString appFile = executableFilePath("genlexer"); - const QString headerFile1 = productBuildDir("genlexer") + "/GeneratedFiles/numberscanner.h"; - const QString sourceFile1 = productBuildDir("genlexer") + "/GeneratedFiles/numberscanner.c"; - const QString sourceFile2 = productBuildDir("genlexer") + "/GeneratedFiles/lex.yy.c"; + const QString appFile = relativeExecutableFilePath("genlexer"); + const QString headerFile1 = relativeProductBuildDir("genlexer") + "/GeneratedFiles/numberscanner.h"; + const QString sourceFile1 = relativeProductBuildDir("genlexer") + "/GeneratedFiles/numberscanner.c"; + const QString sourceFile2 = relativeProductBuildDir("genlexer") + "/GeneratedFiles/lex.yy.c"; // Check build #1: source and header file name are specified in numbers.l QVERIFY(regularFileExists(appFile)); @@ -1617,18 +1132,6 @@ void TestBlackbox::dynamicRuleOutputs() QVERIFY(!QFile::exists(sourceFile2)); } -void TestBlackbox::emptyFileTagList() -{ - QDir::setCurrent(testDataDir + "/empty-filetag-list"); - QCOMPARE(runQbs(), 0); -} - -void TestBlackbox::emptySubmodulesList() -{ - QDir::setCurrent(testDataDir + "/empty-submodules-list"); - QCOMPARE(runQbs(), 0); -} - void TestBlackbox::erroneousFiles_data() { QTest::addColumn<QString>("errorMessage"); @@ -1651,27 +1154,14 @@ void TestBlackbox::erroneousFiles() } } -void TestBlackbox::explicitlyDependsOn() -{ - QDir::setCurrent(testDataDir + "/explicitlyDependsOn"); - QCOMPARE(runQbs(), 0); - QVERIFY(m_qbsStdout.contains("Creating output artifact")); - QCOMPARE(runQbs(), 0); - QVERIFY(!m_qbsStdout.contains("Creating output artifact")); - waitForNewTimestamp(); - touch("dependency.txt"); - QCOMPARE(runQbs(), 0); - QVERIFY(m_qbsStdout.contains("Creating output artifact")); -} - void TestBlackbox::fileDependencies() { QDir::setCurrent(testDataDir + "/fileDependencies"); - rmDirR(buildDir); + rmDirR(relativeBuildDir()); QCOMPARE(runQbs(), 0); QVERIFY(m_qbsStdout.contains("compiling narf.cpp")); QVERIFY(m_qbsStdout.contains("compiling zort.cpp")); - const QString productFileName = executableFilePath("myapp"); + const QString productFileName = relativeExecutableFilePath("myapp"); QVERIFY2(regularFileExists(productFileName), qPrintable(productFileName)); // Incremental build without changes. @@ -1809,77 +1299,6 @@ void TestBlackbox::jsExtensionsTextFile() QCOMPARE(lines.at(4).trimmed().constData(), "true"); } -void TestBlackbox::inheritQbsSearchPaths() -{ - QDir::setCurrent(testDataDir + "/inheritQbsSearchPaths"); - QCOMPARE(runQbs(), 0); -} - -void TestBlackbox::mocCppIncluded() -{ - QDir::setCurrent(testDataDir + "/moc_hpp_included"); - QCOMPARE(runQbs(), 0); // Initial build. - - // Touch header and try again. - waitForNewTimestamp(); - QFile headerFile("object.h"); - QVERIFY2(headerFile.open(QIODevice::WriteOnly | QIODevice::Append), - qPrintable(headerFile.errorString())); - headerFile.write("\n"); - headerFile.close(); - QCOMPARE(runQbs(), 0); - - // Touch cpp file and try again. - waitForNewTimestamp(); - QFile cppFile("object.cpp"); - QVERIFY2(cppFile.open(QIODevice::WriteOnly | QIODevice::Append), - qPrintable(cppFile.errorString())); - cppFile.write("\n"); - cppFile.close(); - QCOMPARE(runQbs(), 0); -} - -void TestBlackbox::newOutputArtifactInDependency() -{ - QDir::setCurrent(testDataDir + "/new-output-artifact-in-dependency"); - QCOMPARE(runQbs(), 0); - QVERIFY(m_qbsStdout.contains("linking app")); - const QByteArray linkingLibString = QByteArray("linking ") - + HostOsInfo::dynamicLibraryName("lib").toLatin1(); - QVERIFY(!m_qbsStdout.contains(linkingLibString)); - - waitForNewTimestamp(); - QFile projectFile("project.qbs"); - QVERIFY2(projectFile.open(QIODevice::ReadWrite), qPrintable(projectFile.errorString())); - QByteArray contents = projectFile.readAll(); - contents.replace("//Depends", "Depends"); - projectFile.resize(0); - projectFile.write(contents); - projectFile.close(); - QCOMPARE(runQbs(), 0); - QVERIFY(m_qbsStdout.contains("linking app")); - QVERIFY(m_qbsStdout.contains(linkingLibString)); -} - -void TestBlackbox::newPatternMatch() -{ - QDir::setCurrent(testDataDir + "/new-pattern-match"); - QCOMPARE(runQbs(), 0); - QVERIFY(m_qbsStdout.contains("Resolving")); - QCOMPARE(runQbs(), 0); - QVERIFY(!m_qbsStdout.contains("Resolving")); - QFile f("test.txt"); - QVERIFY2(f.open(QIODevice::WriteOnly), qPrintable(f.errorString())); - f.close(); - QCOMPARE(runQbs(), 0); - QVERIFY(m_qbsStdout.contains("Resolving")); - QCOMPARE(runQbs(), 0); - QVERIFY(!m_qbsStdout.contains("Resolving")); - f.remove(); - QCOMPARE(runQbs(), 0); - QVERIFY(m_qbsStdout.contains("Resolving")); -} - void TestBlackbox::nonBrokenFilesInBrokenProduct() { QDir::setCurrent(testDataDir + "/non-broken-files-in-broken-product"); @@ -1891,18 +1310,12 @@ void TestBlackbox::nonBrokenFilesInBrokenProduct() QVERIFY(!m_qbsStdout.contains("fine.cpp")); // The non-broken file must not be recompiled. } -void TestBlackbox::objC() -{ - QDir::setCurrent(testDataDir + "/objc"); - QCOMPARE(runQbs(), 0); -} - void TestBlackbox::qmlDebugging() { QDir::setCurrent(testDataDir + "/qml-debugging"); QCOMPARE(runQbs(), 0); QProcess nm; - nm.start("nm", QStringList(executableFilePath("debuggable-app"))); + nm.start("nm", QStringList(relativeExecutableFilePath("debuggable-app"))); if (nm.waitForStarted()) { // Let's ignore hosts without nm. QVERIFY2(nm.waitForFinished(), qPrintable(nm.errorString())); QVERIFY2(nm.exitCode() == 0, nm.readAllStandardError().constData()); @@ -1911,12 +1324,6 @@ void TestBlackbox::qmlDebugging() } } -void TestBlackbox::projectWithPropertiesItem() -{ - QDir::setCurrent(testDataDir + "/project-with-properties-item"); - QCOMPARE(runQbs(), 0); -} - void TestBlackbox::properQuoting() { QDir::setCurrent(testDataDir + "/proper quoting"); @@ -1929,12 +1336,6 @@ void TestBlackbox::properQuoting() QCOMPARE(unifiedLineEndings(m_qbsStdout).constData(), expectedOutput); } -void TestBlackbox::propertiesBlocks() -{ - QDir::setCurrent(testDataDir + "/propertiesBlocks"); - QCOMPARE(runQbs(), 0); -} - void TestBlackbox::radAfterIncompleteBuild_data() { QTest::addColumn<QString>("projectFileName"); @@ -1945,7 +1346,7 @@ void TestBlackbox::radAfterIncompleteBuild_data() void TestBlackbox::radAfterIncompleteBuild() { QDir::setCurrent(testDataDir + "/rad-after-incomplete-build"); - rmDirR(buildDir); + rmDirR(relativeBuildDir()); QFETCH(QString, projectFileName); // Step 1: Have a directory where a file used to be. @@ -2054,7 +1455,7 @@ void TestBlackbox::installedApp() QCOMPARE(runQbs(QbsRunParameters(QLatin1String("install"))), 0); QVERIFY(regularFileExists(defaultInstallRoot + QLatin1String("/usr/local/source/main.cpp"))); - rmDirR(buildDir); + rmDirR(relativeBuildDir()); QbsRunParameters params; params.command = "install"; params.arguments << "--no-build"; @@ -2125,7 +1526,7 @@ void TestBlackbox::missingProfile() void TestBlackbox::testAssembly() { Settings settings((QString())); - Profile profile(buildProfileName, &settings); + Profile profile(profileName(), &settings); bool haveGcc = profile.value("qbs.toolchain").toStringList().contains("gcc"); QDir::setCurrent(testDataDir + "/assembly"); QVERIFY(runQbs() == 0); @@ -2168,7 +1569,7 @@ void TestBlackbox::testNsis() } Settings settings((QString())); - Profile profile(buildProfileName, &settings); + Profile profile(profileName(), &settings); bool targetIsWindows = profile.value("qbs.targetOS").toStringList().contains("windows"); QDir::setCurrent(testDataDir + "/nsis"); QVERIFY(runQbs() == 0); @@ -2239,7 +1640,7 @@ void TestBlackbox::testWiX() } Settings settings((QString())); - Profile profile(buildProfileName, &settings); + Profile profile(profileName(), &settings); const QByteArray arch = profile.value("qbs.architecture").toString().toLatin1(); QDir::setCurrent(testDataDir + "/wix"); @@ -2248,8 +1649,8 @@ void TestBlackbox::testWiX() QVERIFY(m_qbsStdout.contains("compiling QbsBootstrapper.wxs")); QVERIFY(m_qbsStdout.contains("linking qbs-" + arch + ".msi")); QVERIFY(m_qbsStdout.contains("linking qbs-setup-" + arch + ".exe")); - QVERIFY(regularFileExists(productBuildDir("QbsSetup") + "/qbs-" + arch + ".msi")); - QVERIFY(regularFileExists(productBuildDir("QbsBootstrapper") + "/qbs-setup-" + arch + ".exe")); + QVERIFY(regularFileExists(relativeProductBuildDir("QbsSetup") + "/qbs-" + arch + ".msi")); + QVERIFY(regularFileExists(relativeProductBuildDir("QbsBootstrapper") + "/qbs-setup-" + arch + ".exe")); } static QString findExecutable(const QStringList &fileNames) @@ -2289,7 +1690,7 @@ void TestBlackbox::testNodeJs() params.command = QLatin1String("run"); QCOMPARE(runQbs(params), 0); QVERIFY((bool)m_qbsStdout.contains("hello world")); - QVERIFY(regularFileExists(productBuildDir("hello") + "/hello.js")); + QVERIFY(regularFileExists(relativeProductBuildDir("hello") + "/hello.js")); } void TestBlackbox::testTypeScript() @@ -2306,9 +1707,9 @@ void TestBlackbox::testTypeScript() params.arguments = QStringList() << "-p" << "animals"; QCOMPARE(runQbs(params), 0); - QVERIFY(regularFileExists(productBuildDir("animals") + "/animals.js")); - QVERIFY(regularFileExists(productBuildDir("animals") + "/extra.js")); - QVERIFY(regularFileExists(productBuildDir("animals") + "/main.js")); + QVERIFY(regularFileExists(relativeProductBuildDir("animals") + "/animals.js")); + QVERIFY(regularFileExists(relativeProductBuildDir("animals") + "/extra.js")); + QVERIFY(regularFileExists(relativeProductBuildDir("animals") + "/main.js")); } void TestBlackbox::testIconset() @@ -2323,7 +1724,7 @@ void TestBlackbox::testIconset() QCOMPARE(runQbs(params), 0); QVERIFY((bool)m_qbsStdout.contains("warning")); // because some images are missing - QVERIFY(regularFileExists(productBuildDir("iconset") + "/white.icns")); + QVERIFY(regularFileExists(relativeProductBuildDir("iconset") + "/white.icns")); } void TestBlackbox::testIconsetApp() @@ -2338,7 +1739,7 @@ void TestBlackbox::testIconsetApp() QCOMPARE(runQbs(params), 0); QVERIFY((bool)m_qbsStdout.contains("warning")); // because some images are missing - QVERIFY(regularFileExists(productBuildDir("iconsetapp") + "/iconsetapp.app/Contents/Resources/white.icns")); + QVERIFY(regularFileExists(relativeProductBuildDir("iconsetapp") + "/iconsetapp.app/Contents/Resources/white.icns")); } void TestBlackbox::testAssetCatalog() @@ -2360,48 +1761,33 @@ void TestBlackbox::testAssetCatalog() QVERIFY((bool)m_qbsStdout.contains("actool")); // should not produce a CAR since minimumOsxVersion will be < 10.9 - QVERIFY(!regularFileExists(productBuildDir("assetcatalogempty") + "/assetcatalogempty.app/Contents/Resources/Assets.car")); + QVERIFY(!regularFileExists(relativeProductBuildDir("assetcatalogempty") + "/assetcatalogempty.app/Contents/Resources/Assets.car")); - rmDirR(buildDir); + rmDirR(relativeBuildDir()); params.arguments.append("cpp.minimumOsxVersion:10.9"); // force CAR generation QCOMPARE(runQbs(params), 0); // empty asset catalogs must still produce output QVERIFY((bool)m_qbsStdout.contains("actool")); - QVERIFY(regularFileExists(productBuildDir("assetcatalogempty") + "/assetcatalogempty.app/Contents/Resources/Assets.car")); + QVERIFY(regularFileExists(relativeProductBuildDir("assetcatalogempty") + "/assetcatalogempty.app/Contents/Resources/Assets.car")); // this asset catalog happens to have an embedded icon set, // but this should NOT be built since it is not in the files list QVERIFY(!(bool)m_qbsStdout.contains("iconutil")); // now we'll add the iconset - rmDirR(buildDir); + rmDirR(relativeBuildDir()); params.arguments.append("project.includeIconset:true"); QCOMPARE(runQbs(params), 0); QVERIFY((bool)m_qbsStdout.contains("actool")); QVERIFY((bool)m_qbsStdout.contains("iconutil")); // make sure the nibs/storyboards are in there - QVERIFY(regularFileExists(productBuildDir("assetcatalogempty") + "/assetcatalogempty.app/Contents/Resources/MainMenu.nib")); + QVERIFY(regularFileExists(relativeProductBuildDir("assetcatalogempty") + "/assetcatalogempty.app/Contents/Resources/MainMenu.nib")); #ifdef Q_OS_MAC if (QSysInfo::macVersion() >= Q_MV_OSX(10, 10)) #endif - QVERIFY(regularFileExists(productBuildDir("assetcatalogempty") + "/assetcatalogempty.app/Contents/Resources/Storyboard.storyboardc")); -} - -QString TestBlackbox::uniqueProductName(const QString &productName) const -{ - return productName + '.' + buildProfileName; -} - -QString TestBlackbox::productBuildDir(const QString &productName) const -{ - return buildDir + '/' + uniqueProductName(productName); -} - -QString TestBlackbox::executableFilePath(const QString &productName) const -{ - return productBuildDir(productName) + '/' + HostOsInfo::appendExecutableSuffix(productName); + QVERIFY(regularFileExists(relativeProductBuildDir("assetcatalogempty") + "/assetcatalogempty.app/Contents/Resources/Storyboard.storyboardc")); } QTEST_MAIN(TestBlackbox) diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h index 1ce6003c3..8ebf712f9 100644 --- a/tests/auto/blackbox/tst_blackbox.h +++ b/tests/auto/blackbox/tst_blackbox.h @@ -77,10 +77,7 @@ class TestBlackbox : public QObject const QString testDataDir; const QString testSourceDir; const QString qbsExecutableFilePath; - const QString buildProfileName; - const QString buildDir; const QString defaultInstallRoot; - const QString buildGraphPath; public: TestBlackbox(); @@ -95,66 +92,28 @@ public slots: void initTestCase(); private slots: - void addedFilePersistent(); - void addQObjectMacroToCppFile(); - void baseProperties(); void buildDirectories(); - void build_project_data(); - void build_project(); - void build_project_dry_run_data(); - void build_project_dry_run(); - void changeDependentLib(); void changedFiles_data(); void changedFiles(); void dependenciesProperty(); - void disabledProduct(); - void disabledProject(); - void disableProduct(); - void duplicateProductNames(); - void duplicateProductNames_data(); - void dynamicLibs(); void dynamicMultiplexRule(); void dynamicRuleOutputs(); - void emptyFileTagList(); - void emptySubmodulesList(); void erroneousFiles_data(); void erroneousFiles(); - void explicitlyDependsOn(); void fileDependencies(); void jsExtensionsFile(); void jsExtensionsFileInfo(); void jsExtensionsProcess(); void jsExtensionsPropertyList(); void jsExtensionsTextFile(); - void inheritQbsSearchPaths(); - void mocCppIncluded(); - void newOutputArtifactInDependency(); - void newPatternMatch(); void nonBrokenFilesInBrokenProduct(); - void objC(); void qmlDebugging(); - void projectWithPropertiesItem(); void properQuoting(); - void propertiesBlocks(); void radAfterIncompleteBuild_data(); void radAfterIncompleteBuild(); - void resolve_project_data(); - void resolve_project(); - void resolve_project_dry_run_data(); - void resolve_project_dry_run(); - void typeChange(); void usingsAsSoleInputsNonMultiplexed(); void clean(); - void exportSimple(); - void exportWithRecursiveDepends(); - void fileTagger(); - void rc(); - void removeFileDependency(); void renameDependency(); - void renameProduct(); - void renameTargetArtifact(); - void softDependency(); - void subProjects(); void track_qrc(); void track_qobject_change(); void trackAddFile(); @@ -165,15 +124,11 @@ private slots: void trackAddMocInclude(); void trackAddProduct(); void trackRemoveProduct(); - void transformers(); - void uic(); void wildcardRenaming(); void recursiveRenaming(); void recursiveWildcards(); void ruleConditions(); void ruleCycle(); - void trackAddQObjectHeader(); - void trackRemoveQObjectHeader(); void overrideProjectProperties(); void productProperties(); void propertyChanges(); @@ -192,10 +147,6 @@ private slots: void testAssetCatalog(); private: - QString uniqueProductName(const QString &productName) const; - QString productBuildDir(const QString &productName) const; - QString executableFilePath(const QString &productName) const; - QByteArray m_qbsStderr; QByteArray m_qbsStdout; }; diff --git a/tests/auto/shared.h b/tests/auto/shared.h index 66fc1b80c..7ec6ed5ea 100644 --- a/tests/auto/shared.h +++ b/tests/auto/shared.h @@ -32,6 +32,7 @@ #include <tools/hostosinfo.h> #include <QFile> +#include <QFileInfo> #include <QtTest> #include <ctime> @@ -42,6 +43,35 @@ #define SKIP_TEST(message) QSKIP(message, SkipAll) #endif +inline QString profileName() { return QLatin1String("qbs_autotests"); } +inline QString relativeBuildDir() { return profileName() + QLatin1String("-debug"); } + +inline QString relativeBuildGraphFilePath() { + return relativeBuildDir() + QLatin1Char('/') + relativeBuildDir() + QLatin1String(".bg"); +} + +inline bool regularFileExists(const QString &filePath) +{ + const QFileInfo fi(filePath); + return fi.exists() && fi.isFile(); +} + +inline QString uniqueProductName(const QString &productName) +{ + return productName + '.' + profileName(); +} + +inline QString relativeProductBuildDir(const QString &productName) +{ + return relativeBuildDir() + '/' + uniqueProductName(productName); +} + +inline QString relativeExecutableFilePath(const QString &productName) +{ + return relativeProductBuildDir(productName) + '/' + + qbs::Internal::HostOsInfo::appendExecutableSuffix(productName); +} + inline void waitForNewTimestamp() { // Waits for the time that corresponds to the host file system's time stamp granularity. |