Merge pull request #1197 from Exiv2/add_c++11_support_0.27

Add c++11 support 0.27
v0.27.3
Robin Mills 5 years ago committed by GitHub
commit 0d17fb63d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -10,7 +10,7 @@ matrix:
dist: xenial
sudo: required
compiler: gcc
env: COVERAGE=1 CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Debug -DEXIV2_ENABLE_VIDEO=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DBUILD_WITH_COVERAGE=ON -DEXIV2_ENABLE_CURL=ON"
env: COVERAGE=1 CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Debug -DEXIV2_ENABLE_VIDEO=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DBUILD_WITH_COVERAGE=ON -DEXIV2_ENABLE_CURL=ON -DCMAKE_CXX_STANDARD=98"
- os: linux
dist: xenial
@ -18,18 +18,18 @@ matrix:
compiler: gcc
env:
- WITH_VALGRIND=1
- CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -DEXIV2_ENABLE_VIDEO=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DEXIV2_ENABLE_CURL=ON"
- CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -DEXIV2_ENABLE_VIDEO=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DEXIV2_ENABLE_CURL=ON -DCMAKE_CXX_STANDARD=98"
- os: linux
dist: xenial
sudo: required
compiler: clang
env: CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -DEXIV2_ENABLE_VIDEO=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DEXIV2_ENABLE_CURL=ON"
env: CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -DEXIV2_ENABLE_VIDEO=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DEXIV2_ENABLE_CURL=ON -DCMAKE_CXX_STANDARD=98"
- os: osx
osx_image: xcode11.3
compiler: clang
env: CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -DEXIV2_ENABLE_VIDEO=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DEXIV2_ENABLE_NLS=OFF -DEXIV2_ENABLE_CURL=ON"
env: CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -DEXIV2_ENABLE_VIDEO=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DEXIV2_ENABLE_NLS=OFF -DEXIV2_ENABLE_CURL=ON -DCMAKE_CXX_STANDARD=98"
install: ./ci/install.sh
script: ./ci/run.sh

@ -28,9 +28,8 @@ option( EXIV2_ENABLE_SSH "USE Libssh for SshIo (WEBREADY)"
option( EXIV2_BUILD_SAMPLES "Build sample applications" ON )
option( EXIV2_BUILD_EXIV2_COMMAND "Build exiv2 command-line executable" ON )
option( EXIV2_BUILD_UNIT_TESTS "Build unit tests" ON )
option( EXIV2_BUILD_UNIT_TESTS "Build unit tests" OFF )
option( EXIV2_BUILD_DOC "Add 'doc' target to generate documentation" OFF )
option( EXIV2_BUILD_USE_C++11 "Use the C++11 compiler" OFF )
# Only intended to be used by Exiv2 developers/contributors
option( EXIV2_TEAM_EXTRA_WARNINGS "Add more sanity checks using compiler flags" OFF )

@ -701,7 +701,7 @@ You will find that 3 tests fail at the end of the test suite. It is safe to ign
### 2.17 Building with C++11 and other compilers
Exiv2 uses the default compiler for your system. Exiv2 v0.27 was written to the C++ 1998 standard and uses auto\_ptr. The C++11 and C++14 compilers will issue deprecation warnings about auto\_ptr. As _auto\_ptr support has been removed from C++17, you cannot build Exiv2 v0.27 with C++17 or later compilers._ Exiv2 v0.28 and later do not use auto\_ptr and will build with all compilers.
Exiv2 uses the default compiler for your system. Exiv2 v0.27 was written to the C++ 1998 standard and uses auto\_ptr. The C++11 and C++14 compilers will issue deprecation warnings about auto\_ptr. As _auto\_ptr support has been removed from C++17, you cannot build Exiv2 v0.27 with C++17 or later compilers._ Exiv2 v0.28 and later do not use auto\_ptr and will build with modern Standard C++ Compilers.
To generate a build with C++11:
@ -712,7 +712,9 @@ $ cmake .. -DCMAKE_CXX_STANDARD=11 -DCMAKE_CXX_FLAGS=-Wno-deprecated
$ make
```
The option -DCMAKE\_CXX\_FLAGS=-Wno-deprecated suppresses warnings from C++11 concerning auto\_ptr and other deprecated features.
The option -DCMAKE\_CXX\_STANDARD=11 specifies the C++ Language Standard. Possible values are 98, 11 or 14.
The option -DCMAKE\_CXX\_FLAGS=-Wno-deprecated suppresses warnings from C++11 concerning auto\_ptr and other deprecated features. **Caution:** Visual Studio users should not use -DCMAKE\_CXX\_FLAGS=-Wno-deprecated.
[TOC](#TOC)
@ -768,7 +770,7 @@ There are different kinds of tests:
**Caution Visual Studio Users using cmd.exe**<br>_You may use `make` to to execute tests in the test directory. To execute tests from the build directory, use `cmake`._ This is discussed in detail below: [Running tests on Visual Studio builds](#4-2)
Environment Variables used by test suite
Environment Variables used by the test suite:
| Variable | Default | Platforms | Purpose |
|:-- |:-- |:-- |:-- |
@ -777,6 +779,7 @@ Environment Variables used by test suite
| EXIV2_EXT | _**not set**_ | Linux<br>macOS<br>Unix| |
| EXIV2_ECHO | _**not set**_ | All Platforms | For debugging Bash scripts |
| VALGRIND | _**not set**_ | All Platforms | For debugging Bash scripts |
| VERBOSE | _**not set**_ | All Platforms | Causes make to report its actions |
<div id="4-1">
@ -850,10 +853,11 @@ You can build with Visual Studio using Conan. The is described in detail in [RE
As a summary, the procedure is:
```
c:\...\exiv2> mkdir build
c:\...\exiv2>mkdir build
c:\...\exiv2>cd build
c:\...\exiv2\build>conan install .. --build missing --profile msvc2019Release
c:\...\exiv2\build>cmake .. -DEXIV2_BUILD_UNIT_TESTS=On -G "Visual Studio 16 2019"
c:\...\exiv2\build>cmake --build . --config release
c:\...\exiv2\build>cmake --build . --config Release
... lots of output from compiler and linker ...
c:\...\exiv2\build>
```
@ -867,10 +871,11 @@ c:\...\exiv2\build>copy c:\Python37\python.exe c:\Python37\python3.exe
You must set the environment strings EXIV2\_BINDIR, EXIV2\_EXT and modify PATH. You will need a DOS Python3 interpreter on your path, and you'll need the bash interpreter. By careful to ensure the DOS python3.exe is found before the MingW/msys2 python3.
```
c:\...\exiv2\build> set EXIV2_BINDIR=%CD%
c:\...\exiv2\build> set EXIV2_EXT=.exe
c:\...\exiv2\build\bin> set "PATH=c:\Python37;c:\Python37\Scripts;c:\msys64\usr\bin;%PATH%"
c:\...\exiv2\build>set EXIV2_BINDIR=%CD%
c:\...\exiv2\build>set EXIV2_EXT=.exe
c:\...\exiv2\build\bin>set "PATH=c:\Python37;c:\Python37\Scripts;c:\msys64\usr\bin;%PATH%"
```
Move to the test directory and use make (which is in c:\msys64\usr\bin) to drive the test procedures. You cannot run the tests in the build directory because there is no Makefile in the build directory.
```
@ -895,12 +900,10 @@ set "P=%P%c:\msys64\usr\bin;" # msys2 make, bash etc
set "P=%P%c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin;"
set "P=%P%c:\Windows\System32;" # windows
set "P=%P%%USERPROFILE%\com;" # my home-made magic
echo %P%
set "PATH=%P%"
set "EXIV2_EXT=.exe"
set "EXIV2_BINDIR=%USERPROFILE%\gnu\github\exiv2\0.27-maintenance\build\bin"
color 0d
cmd /S /K cd "%EXIV2_BINDIR%\..\.."
color 1e
cmd /S /K cd "%USERPROFILE%\gnu\github\exiv2\0.27-maintenance\"
color
endlocal
```
@ -912,6 +915,19 @@ c:\...\exiv2\test>cd ..\build
c:\...\exiv2\build>cmake --build . --config Release --target tests
```
If you wish to use an environment variables, use env:
```
c:\...\exiv2\build>env VERBOSE=1 cmake --build . --config Release --target tests
```
When you are in the test directory, msys/make provides the following _(more convenient)_ syntax:
```
c:\...\exiv2\test>make tests VERBOSE=1
```
[TOC](#TOC)
<div id="4-3">
@ -1078,12 +1094,10 @@ set "P=%P%c:\msys64\usr\bin;" # msys2 make, bash etc
set "P=%P%c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin;"
set "P=%P%c:\Windows\System32;" # windows
set "P=%P%%USERPROFILE%\com;" # my home-made magic
echo %P%
set "PATH=%P%"
set "EXIV2_EXT=.exe"
set "EXIV2_BINDIR=%USERPROFILE%\gnu\github\exiv2\0.27-maintenance\build\bin"
color 0d
cmd /S /K cd "%EXIV2_BINDIR%\..\.."
color 1e
cmd /S /K cd "%USERPROFILE%\gnu\github\exiv2\0.27-maintenance\"
color
endlocal
```
@ -1187,4 +1201,4 @@ $ sudo pkg install developer/gcc-7
[TOC](#TOC)
Written by Robin Mills<br>robin@clanmills.com<br>Updated: 2020-05-02
Written by Robin Mills<br>robin@clanmills.com<br>Updated: 2020-05-06

@ -5,13 +5,14 @@ environment:
PYTHON: "C:/Python37-x64"
matrix:
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
CMAKE_GENERATOR: Ninja
INTEGRATION_TESTS: 1
VS_COMPILER_VERSION: 14
VCVARS: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat
VS_COMPILER_VERSION: 16
VCVARS: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat
ARCHITECTURE: x86_64
UNIT_TESTS: 1
WEBREADY: True
WARNINGS_AS_ERRORS: ON
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
CMAKE_GENERATOR: Ninja
@ -20,14 +21,16 @@ environment:
VCVARS: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat
ARCHITECTURE: x86_64
UNIT_TESTS: 1
WEBREADY: True
WARNINGS_AS_ERRORS: ON
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
CMAKE_GENERATOR: Ninja
INTEGRATION_TESTS: 0
VS_COMPILER_VERSION: 11
VCVARS: C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat
INTEGRATION_TESTS: 1
VS_COMPILER_VERSION: 14
VCVARS: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat
ARCHITECTURE: x86_64
UNIT_TESTS: 1
WEBREADY: True
WARNINGS_AS_ERRORS: ON
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
CMAKE_GENERATOR: Ninja
@ -35,8 +38,9 @@ environment:
VS_COMPILER_VERSION: 12
VCVARS: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat
ARCHITECTURE: x86_64
UNIT_TESTS: 1
WARNINGS_AS_ERRORS: ON
UNIT_TESTS: 0
WEBREADY: False
WARNINGS_AS_ERRORS: OFF
shallow_clone: true
@ -45,11 +49,11 @@ install:
- echo %APPVEYOR_BUILD_FOLDER%
- mkdir C:\projects\deps
- cd C:\projects\deps
- appveyor DownloadFile https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-win.zip -FileName ninja.zip
- appveyor DownloadFile https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-win.zip -FileName ninja.zip
- 7z x ninja.zip -oC:\projects\deps\ninja > nul
- set PATH=C:\projects\deps\ninja;%PATH%
- ninja --version
- pip.exe install conan==1.24.0
- pip.exe install conan==1.24.1
- cd %APPVEYOR_BUILD_FOLDER%
before_build:
@ -66,9 +70,9 @@ build_script:
- cmd: cd build
- cmd: call "%VCVARS%" x86_amd64
- cmd: conan --version
- cmd: conan install .. -o webready=True --build missing
- cmd: conan install .. -o webready=%WEBREADY% --build missing
- cmd: echo %CMAKE_GENERATOR%
- cmd: cmake -G "%CMAKE_GENERATOR%" -DEXIV2_TEAM_WARNINGS_AS_ERRORS=%WARNINGS_AS_ERRORS% -DCMAKE_BUILD_TYPE=Release -DEXIV2_ENABLE_NLS=OFF -DEXIV2_ENABLE_PNG=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_BUILD_UNIT_TESTS=%UNIT_TESTS% -DCMAKE_INSTALL_PREFIX=install ..
- cmd: cmake -G "%CMAKE_GENERATOR%" -DEXIV2_TEAM_WARNINGS_AS_ERRORS=%WARNINGS_AS_ERRORS% -DCMAKE_BUILD_TYPE=Release -DEXIV2_ENABLE_NLS=OFF -DEXIV2_ENABLE_PNG=ON -DEXIV2_ENABLE_WEBREADY=%WEBREADY% -DEXIV2_BUILD_UNIT_TESTS=%UNIT_TESTS% -DCMAKE_INSTALL_PREFIX=install ..
- cmd: cmake --build . --config Release
- cmd: cmake --build . --config Release --target install
- cmd: cd bin
@ -76,3 +80,5 @@ build_script:
- cmd: cd ../../tests/
- cmd: set EXIV2_EXT=.exe
- cmd: if %INTEGRATION_TESTS% == 1 %PYTHON%/python.exe runner.py -v
- cmd: cd ../build/bin
- cmd: exiv2 --version --verbose

@ -6,7 +6,6 @@ set -x
source conan/bin/activate
if [[ "$(uname -s)" == 'Linux' ]]; then
if [ "$CC" == "clang" ]; then
# clang + Ubuntu don't like to run with UBSAN, but ASAN works
export CMAKE_OPTIONS="$CMAKE_OPTIONS -DCMAKE_CXX_FLAGS=\"-fsanitize=address\" -DCMAKE_C_FLAGS=\"-fsanitize=address\" -DCMAKE_EXE_LINKER_FLAGS=\"-fsanitize=address\" -DCMAKE_MODULE_LINKER_FLAGS=\"-fsanitize=address\""
@ -19,13 +18,11 @@ else
export CMAKE_OPTIONS="$CMAKE_OPTIONS -DEXIV2_TEAM_USE_SANITIZERS=ON"
fi
mkdir build && cd build
mkdir build
cd build
conan install .. -o webready=True --build missing
cmake ${CMAKE_OPTIONS} -DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON -DCMAKE_INSTALL_PREFIX=install ..
make -j2
make -j 2
make tests
make install
@ -37,11 +34,6 @@ else
exit 1
fi
pushd .
cd bin
$EXIV2_VALGRIND ./unit_tests
popd
if [ -n "$COVERAGE" ]; then
bash <(curl -s https://codecov.io/bash)
fi

@ -90,6 +90,7 @@ endif ()
# http://stackoverflow.com/questions/10113017/setting-the-msvc-runtime-in-cmake
if(MSVC)
find_program(CLCACHE name clcache.exe
PATHS ENV CLCACHE_PATH
PATH_SUFFIXES Scripts clcache-4.1.0
@ -136,4 +137,10 @@ if(MSVC)
# Object Level Parallelism
add_compile_options(/MP)
add_definitions(-DNOMINMAX -DWIN32_LEAN_AND_MEAN)
# https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/
if (MSVC_VERSION GREATER_EQUAL "1910") # VS2017 and up
add_compile_options("/Zc:__cplusplus")
endif()
endif()

@ -40,6 +40,8 @@ class Exiv2Conan(ConanFile):
# libopenssl (a transitive dependency)
if os_info.is_windows:
self.requires('libcurl/7.69.1')
self.options['libcurl'].with_openssl = False
self.options['libcurl'].with_winssl = True
else:
self.requires('libcurl/7.64.1@bincrafters/stable')

@ -0,0 +1,47 @@
contrib/Qt/ReadMe.txt
---------------------
Exiv2 works well with Qt.
Qt requires C++11 libraries which are the default for Exiv2 v0.28 and later.
Exiv2 v0.27 default build (and pre-built binaries) are for C++98
You will have to build Exiv2 v0.27 from source with C++11 for Qt.
To build and run commandLineTool
--------------------------------
1) Windows Users should install MinGW/msys2 as documented in README.md
2) All users should build Exiv2 with C++11 support as documented in README.md
3) Generate Makefile
Caution: You will have to modify commandLineTool.pro to fit your environment.
$ cd <exiv2dir>
$ cd contrib/Qt
$ qmake commandLinePro.pro
4) Build commandLineTool.cpp
$ make
5) Run commandLineTool.exe
$ commandLineTool.exe
UNICODE_PATH on Windows
-----------------------
Windows users may prefer to build Exiv2 to support UNICODE_PATH.
The sample application samples/exifprint.cpp works with UNICODE_PATH.
The cmake option -DEXIV2_ENABLE_WIN_UNICODE=ON is documented in README.md
Searching for more information about Qt, MinGW and UNICODE_PATH
---------------------------------------------------------------
These matters are occasionally discussed on the forum. Please search to read discussions.
https://github.com/Exiv2/exiv2/issues/1101#issuecomment-623141576
http://dev.exiv2.org/boards/3/topics/2311?r=2312#message-2312
http://dev.exiv2.org/issues/1169
http://dev.exiv2.org/boards/3/topics/2705
Robin Mills
http://clanmills.com
2020-05-04

@ -0,0 +1,15 @@
QT += core
QT -= gui
TARGET = commandLineTool
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
win32 {
INCLUDEPATH += $$quote(c:/Qt/5.14.2/mingw73_64/include)
INCLUDEPATH += /usr/local/include
LIBS += -L$$quote(c:/Qt/5.14.2/mingw73_64/include) -L/usr/local/lib -lexiv2
}

@ -0,0 +1,15 @@
#include <QCoreApplication>
#include <exiv2/exiv2.hpp>
#include <iostream>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
exv_grep_keys_t keys;
Exiv2::dumpLibraryInfo(std::cout,keys);
return 0;
// return a.exec();
}

@ -97,7 +97,9 @@ typedef int pid_t;
#if __cplusplus >= 201103L
#include <memory>
#include <sys/types.h>
#ifndef _MSC_VER
#include <unistd.h>
#endif
template <typename T>
using auto_ptr = std::unique_ptr<T>;
#endif

@ -105,7 +105,9 @@ if (EXIV2_ENABLE_WEBREADY)
if (USING_CONAN)
target_compile_definitions(conntest PRIVATE ${CONAN_COMPILE_DEFINITIONS_LIBCURL})
target_link_libraries(conntest PRIVATE ${CONAN_EXE_LINKER_FLAGS_LIBCURL})
if (NOT APPLE)
if ( MSVC )
target_link_libraries(conntest PRIVATE Crypt32 Ws2_32 ${CURL_LIBRARIES})
elseif (NOT APPLE)
target_link_libraries(conntest PRIVATE CONAN_PKG::OpenSSL)
endif()
endif()

@ -182,7 +182,9 @@ if (EXIV2_ENABLE_WEBREADY)
if (USING_CONAN)
target_compile_definitions(exiv2lib PRIVATE ${CONAN_COMPILE_DEFINITIONS_LIBCURL})
target_link_libraries(exiv2lib PRIVATE ${CONAN_EXE_LINKER_FLAGS_LIBCURL})
if (NOT APPLE)
if ( MSVC )
target_link_libraries(exiv2lib PRIVATE Crypt32)
elseif (NOT APPLE)
target_link_libraries(exiv2lib PRIVATE CONAN_PKG::OpenSSL)
endif()
endif()

@ -74,6 +74,7 @@
# include <sys/socket.h>
# include <sys/sysctl.h>
# include <libprocstat.h>
# include <unistd.h>
#elif defined(__sun__)
# include <dlfcn.h>
# include <link.h>
@ -185,6 +186,8 @@ static Exiv2::StringVector getLoadedLibraries()
pushPath(path,libs,paths);
}
#elif defined(__FreeBSD__)
// this code seg-faults when called from an SSH script! (security?)
if ( isatty(STDIN_FILENO) ) {
unsigned int n;
struct procstat* procstat = procstat_open_sysctl();
struct kinfo_proc* procs = procstat ? procstat_getprocs(procstat, KERN_PROC_PID, getpid(), &n) : NULL;
@ -200,6 +203,7 @@ static Exiv2::StringVector getLoadedLibraries()
if ( files ) procstat_freefiles(procstat, files);
if ( procs ) procstat_freeprocs(procstat, procs);
if ( procstat ) procstat_close (procstat);
}
#elif defined (__sun__) || defined(__unix__)
// http://stackoverflow.com/questions/606041/how-do-i-get-the-path-of-a-process-in-unix-linux
char procsz[100];
@ -210,8 +214,6 @@ static Exiv2::StringVector getLoadedLibraries()
pathsz[l]='\0';
path.assign(pathsz);
libs.push_back(path);
} else {
libs.push_back("unknown");
}
// read file /proc/self/maps which has a list of files in memory
@ -259,7 +261,7 @@ void Exiv2::dumpLibraryInfo(std::ostream& os,const exv_grep_keys_t& keys)
size_t edition = (_MSC_VER-600)/100;
const char* editions[] = { "0","1","2","3","4","5","6","2003", "2005", "2008", "2010", "2012","2013","2015","2017","2019"};
if ( edition == 13 && _MSC_VER >= 1910 ) edition++ ; // 2017 _MSC_VAR == 1910
if ( edition == 13 && _MSC_VER >= 1920 ) edition++ ; // 2019 _MSC_VAR == 1920
if ( edition == 14 && _MSC_VER >= 1920 ) edition++ ; // 2019 _MSC_VAR == 1920
if ( edition > lengthof(editions) ) edition = 0 ;
if ( edition ) sprintf(version+::strlen(version)," (%s/%s)",editions[edition],bits==64?"x64":"x86");

@ -139,14 +139,14 @@ unit_test :
-@./$@.sh
bash_tests:
-if [ -e $$EXIV2_BINDIR/../Makefile ]; then \
-@if [ -e $$EXIV2_BINDIR/../Makefile ]; then \
-@./$@.sh ; \
else \
make alltest ; \
fi
tests:
-if [ -e $$EXIV2_BINDIR/../Makefile ]; then \
-@if [ -e $$EXIV2_BINDIR/../Makefile ]; then \
-@./$@.sh ; \
else \
make unit_test ; make alltest ; make python_tests ; make version_test ; \
@ -184,7 +184,7 @@ unixtest:
@if [ -e tmp/test-failed ]; then echo '***' FAILED ; cat tmp/test-failed ; echo '***' ; fi
python_tests:
-( cd ../tests ; python3 runner.py --verbose )
-( cd ../tests ; if [ ! -z $$VERBOSE ]; then verbose=--verbose ;fi ; python3 runner.py $$verbose )
testv:

@ -495,7 +495,7 @@ prepareTest()
good="$here/data/${this}.out"
results="$here/tmp/${this}.out"
tmpfile=$here/tmp/$this
touch $tmpfile
echo '' >> $tmpfile
if [ "$PLATFORM" == SunOS -o "$PLATFORM" == FreeBSD -o "$PLATFORM" == NetBSD ] ; then
da1=""
@ -508,7 +508,7 @@ prepareTest()
fi
tmpfile=tmp/ttt
touch $tmpfile
echo '' >> $tmpfile
da1="--strip-trailing-cr"
diff -q $da1 $tmpfile $tmpfile 2>/dev/null
if [ $? -ne 0 ] ; then

@ -1,7 +1,7 @@
#!/usr/bin/env bash
# Test driver for exiv2.exe --verbose --version
( source ./functions.source ; $bin/unit_tests$exe )
( source ./functions.source ; runTest unit_tests --gtest_color=no | grep -v "Warning: Unsupported date format")
# That's all Folks!
##

@ -526,7 +526,6 @@ def path(path_string):
return os.path.join(*path_string.split('/'))
def test_run(self):
"""
This function reads in the attributes commands, retval, stdout, stderr,
stdin and runs the `expand_variables` function on each. The resulting
@ -539,6 +538,7 @@ def test_run(self):
test by the CaseMeta metaclass. This ensures that it is run by each system
test **after** setUp() and setUpClass() were run.
"""
def test_run(self):
if not (len(self.commands) == len(self.retval)
== len(self.stdout) == len(self.stderr) == len(self.stdin)):
raise ValueError(

Loading…
Cancel
Save