summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Earls <enderw88@gmail.com>2014-05-18 08:25:30 -0700
committerCraig Earls <enderw88@gmail.com>2014-05-18 08:25:30 -0700
commit8e6cdcc1d13533252b1f6e6088dca966b64e4c88 (patch)
tree8f8fd4f644f292a25fb79d59961e135cc4b11c3a
parentd82c1b4b5531c7be1c1870a07f1836b230a4da27 (diff)
parent4af2b97921a68a522135f958f1999ec4b63435bb (diff)
downloadfork-ledger-8e6cdcc1d13533252b1f6e6088dca966b64e4c88.tar.gz
fork-ledger-8e6cdcc1d13533252b1f6e6088dca966b64e4c88.tar.bz2
fork-ledger-8e6cdcc1d13533252b1f6e6088dca966b64e4c88.zip
Merge branch 'master' of https://github.com/ledger/ledger
-rw-r--r--.gitignore28
-rw-r--r--CMakeLists.txt40
-rw-r--r--README.md28
-rw-r--r--doc/CMakeLists.txt22
-rw-r--r--lisp/CMakeLists.txt2
-rw-r--r--lisp/ledger-reconcile.el4
-rw-r--r--src/CMakeLists.txt20
-rw-r--r--src/format.cc2
-rw-r--r--src/global.cc4
-rw-r--r--src/journal.cc8
-rw-r--r--src/option.h2
-rw-r--r--src/output.cc6
-rw-r--r--src/py_times.cc2
-rw-r--r--src/session.cc6
-rw-r--r--src/textual.cc7
-rw-r--r--test/CMakeLists.txt10
-rw-r--r--test/baseline/dir-alias.test9
-rw-r--r--test/baseline/feat-balance_assert-off.test18
-rw-r--r--test/baseline/opt-no-aliases.test20
-rw-r--r--test/baseline/opt-recursive-aliases.test (renamed from test/baseline/dir-alias-recursive.test)0
-rw-r--r--test/regress/634AA589.test19
-rw-r--r--test/regress/AA2FF2B.test10
-rw-r--r--test/unit/CMakeLists.txt2
-rwxr-xr-xtools/spellcheck.sh2
24 files changed, 167 insertions, 104 deletions
diff --git a/.gitignore b/.gitignore
index 22bc0d15..a558cf67 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,6 @@
*.[oa]
+*.so
+*.so.*
*.backup
*.elc
*.gcov
@@ -11,12 +13,9 @@
.deps/
.libs/
ABOUT-NLS
-BaselineTests
Makefile
Makefile.am
Makefile.in
-PyUnitTests
-RegressionTests
TAGS
acconf.h.in
aclocal.m4
@@ -31,12 +30,16 @@ config.status
config.sub
configure
configure.ac
-data_tests
depcomp
doc/Doxyfile
doc/*.aux
doc/*.cp
+doc/*.cps
doc/*.fn
+doc/*.fns
+doc/*.html
+doc/*.info
+doc/*.info-*
doc/*.ky
doc/*.log
doc/*.pdf
@@ -47,12 +50,9 @@ doc/*.vr
doc/.dirstamp
doc/html/
doc/latex/
-doc/ledger.info
-doc/ledger3.info
doc/refman.pdf
doc/report/
elisp-comp
-expr_tests
install-sh
intl/
ledger
@@ -60,20 +60,16 @@ libtool
ltmain.sh
m4/
make.sh
-math_tests
missing
mkinstalldirs
po/
py-compile
-report_tests
shave
shave-libtool
-src/system.hh.gch
stamp-h1
texinfo.tex
tmpcvs*/
tmpwrk*/
-util_tests
dist/win/vc9/Debug/
dist/win/vc9/gen-mpir.exe
dist/win/vc9/gen-mpir.ilk
@@ -82,10 +78,6 @@ dist/win/vc9/ledger.ncb
dist/win/vc9/ledger.vcproj.*.user
dist/win/vc9/ledger.suo
dist/win/vc9/lib/Win32/Debug/
-dist/win/vc9/system.hh
-doc/ledger.1.html
-doc/ledger.html
-doc/ledger3.html
src/TAGS
CMakeCache.txt
CPackConfig.cmake
@@ -107,14 +99,10 @@ contrib/non-profit-audit-reports/tests/general-ledger.txt
contrib/non-profit-audit-reports/tests/MANIFEST
contrib/non-profit-audit-reports/general-ledger.zip
/wiki/
-doc/ledger-mode.info
-doc/ledger3.info-1
-doc/ledger3.info-2
-CTestTestfile.cmake
.ninja_deps
.ninja_log
build.ninja
rules.ninja
-Testing/Temporary
+test/Testing
/MathTests
/UtilTests
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9dd9f666..a22a6047 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,7 +24,7 @@ option(BUILD_DOCS "Build and install documentation" OFF)
option(BUILD_WEB_DOCS "Build version of documentation suitable for viewing online" OFF)
option(BUILD_EMACSLISP "Build and install ledger-mode for Emacs" OFF)
-if(BUILD_DEBUG)
+if (BUILD_DEBUG)
set(CMAKE_BUILD_TYPE Debug)
set(DEBUG_MODE 1)
else()
@@ -32,13 +32,13 @@ else()
set(DEBUG_MODE 0)
endif()
-if(DISABLE_ASSERTS)
+if (DISABLE_ASSERTS)
set(NO_ASSERTS 1)
else()
set(NO_ASSERTS 0)
endif()
-if(CLANG_GCOV)
+if (CLANG_GCOV)
set(PROFILE_LIBS profile_rt)
set(CMAKE_REQUIRED_LIBRARIES ${PROFILE_LIBS})
endif()
@@ -47,14 +47,14 @@ endif()
find_package(PythonInterp) # Used for running tests
-if(USE_PYTHON)
- if(NOT BUILD_LIBRARY)
+if (USE_PYTHON)
+ if (NOT BUILD_LIBRARY)
message(ERROR "Building the python module requires BUILD_LIBRARY=ON.")
endif()
set(Python_ADDITIONAL_VERSIONS 2.7 2.6)
find_package(PythonLibs)
- if(PYTHONLIBS_FOUND)
+ if (PYTHONLIBS_FOUND)
set(BOOST_PYTHON python)
set(HAVE_BOOST_PYTHON 1)
include_directories(SYSTEM ${PYTHON_INCLUDE_DIRS})
@@ -120,7 +120,7 @@ int main() {
return 0;
}" UNIX_PIPES_COMPILES)
-if(UNIX_PIPES_COMPILES)
+if (UNIX_PIPES_COMPILES)
set(HAVE_UNIX_PIPES 1)
else()
set(HAVE_UNIX_PIPES 0)
@@ -142,7 +142,7 @@ int main() {
return u32regex_search(text, r) ? 0 : 1;
}" BOOST_REGEX_UNICODE_RUNS)
-if(BOOST_REGEX_UNICODE_RUNS)
+if (BOOST_REGEX_UNICODE_RUNS)
set(HAVE_BOOST_REGEX_UNICODE 1)
else()
set(HAVE_BOOST_REGEX_UNICODE 0)
@@ -155,13 +155,13 @@ cmake_pop_check_state()
include_directories(${CMAKE_INCLUDE_PATH})
macro(find_opt_library_and_header _header_var _header _lib_var _lib _have_var)
- if(${_have_var})
+ if (${_have_var})
find_path(${_header_var} ${_header})
- if(NOT ${_header_var})
+ if (NOT ${_header_var})
set(${_have_var} 0)
else()
find_library(${_lib_var} ${_lib})
- if(NOT ${_lib_var})
+ if (NOT ${_lib_var})
set(${_have_var} 0)
else()
include_directories(SYSTEM "${${_header_var}}")
@@ -175,12 +175,12 @@ endmacro(find_opt_library_and_header _header_var _header _lib_var _lib _have_var
macro(find_req_library_and_header _header_var _header _lib_var _lib)
find_path(${_header_var} ${_header})
- if(NOT ${_header_var})
+ if (NOT ${_header_var})
message(SEND_ERROR "Could not find ${_header} on your system")
else()
include_directories(SYSTEM "${${_header_var}}")
find_library(${_lib_var} ${_lib})
- if(NOT ${_lib_var})
+ if (NOT ${_lib_var})
message(SEND_ERROR "Could not find library ${_lib} on your system")
endif()
endif()
@@ -194,7 +194,7 @@ find_opt_library_and_header(EDIT_PATH histedit.h EDIT_LIB edit HAVE_EDIT)
#find_package(Gettext) # Used for running tests
-#if(GETTEXT_FOUND)
+#if (GETTEXT_FOUND)
# set(HAVE_GETTEXT 1)
#else()
set(HAVE_GETTEXT 0)
@@ -209,18 +209,18 @@ find_opt_library_and_header(EDIT_PATH histedit.h EDIT_LIB edit HAVE_EDIT)
macro(add_ledger_library_dependencies _target)
target_link_libraries(${_target} ${MPFR_LIB})
target_link_libraries(${_target} ${GMP_LIB})
- if(HAVE_EDIT)
+ if (HAVE_EDIT)
target_link_libraries(${_target} ${EDIT_LIB})
endif()
- if(HAVE_GETTEXT)
+ if (HAVE_GETTEXT)
target_link_libraries(${_target} ${INTL_LIB})
endif()
- if(HAVE_BOOST_PYTHON)
+ if (HAVE_BOOST_PYTHON)
target_link_libraries(${_target} ${Boost_LIBRARIES} ${PYTHON_LIBRARIES})
else()
target_link_libraries(${_target} ${Boost_LIBRARIES})
endif()
- if(HAVE_BOOST_REGEX_UNICODE)
+ if (HAVE_BOOST_REGEX_UNICODE)
target_link_libraries(${_target} icuuc)
endif()
target_link_libraries(${_target} ${PROFILE_LIBS})
@@ -241,7 +241,7 @@ configure_file(
${PROJECT_SOURCE_DIR}/src/system.hh.in
${PROJECT_BINARY_DIR}/system.hh)
-if(CMAKE_CXX_COMPILER MATCHES "clang")
+if (CMAKE_CXX_COMPILER MATCHES "clang")
set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem ")
elseif(CMAKE_CXX_COMPILER MATCHES "g\\+\\+")
set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem ")
@@ -249,7 +249,7 @@ endif()
add_subdirectory(src)
add_subdirectory(doc)
-if(BUILD_EMACSLISP)
+if (BUILD_EMACSLISP)
add_subdirectory(lisp)
endif()
add_subdirectory(test)
diff --git a/README.md b/README.md
index eeeda9d3..09e809c8 100644
--- a/README.md
+++ b/README.md
@@ -101,30 +101,30 @@ And for building the current `maint` branch:
If you build stuff using MacPorts on OS X, as I do, here is what you would
run:
- sudo port install -f cmake python26
- libiconv +universal zlib +universal gmp +universal
- mpfr +universal ncurses +universal ncursesw +universal
- gettext +universal libedit +universal boost-jam
- boost +st+python26+icu texlive doxygen graphviz
- texinfo lcov sloccount
+ sudo port install -f cmake python26 \
+ libiconv +universal zlib +universal gmp +universal \
+ mpfr +universal ncurses +universal ncursesw +universal \
+ gettext +universal libedit +universal boost-jam \
+ boost +st+python26+icu texlive doxygen graphviz \
+ texinfo lcov sloccount
### Ubuntu
If you're going to build on Ubuntu, `sudo apt-get install ...` the
following packages (current as of Ubuntu 14.04):
- sudo apt-get install build-essential cmake doxygen
- libboost-system-dev libboost-dev python-dev gettext git
- libboost-date-time-dev libboost-filesystem-dev
- libboost-iostreams-dev libboost-python-dev libboost-regex-dev
+ sudo apt-get install build-essential cmake doxygen \
+ libboost-system-dev libboost-dev python-dev gettext git \
+ libboost-date-time-dev libboost-filesystem-dev \
+ libboost-iostreams-dev libboost-python-dev libboost-regex-dev \
libboost-test-dev libedit-dev libgmp3-dev libmpfr-dev texinfo
Or, for Ubuntu 12.04:
- sudo apt-get install build-essential cmake zlib1g-dev libbz2-dev
- python-dev gettext libgmp3-dev libmpfr-dev libboost-dev
- libboost-regex-dev libboost-date-time-dev
- libboost-filesystem-dev libboost-python-dev texinfo lcov
+ sudo apt-get install build-essential cmake zlib1g-dev libbz2-dev \
+ python-dev gettext libgmp3-dev libmpfr-dev libboost-dev \
+ libboost-regex-dev libboost-date-time-dev \
+ libboost-filesystem-dev libboost-python-dev texinfo lcov \
sloccount libboost-iostreams-dev libboost-test-dev
### Debian
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index 798ec422..9bf1bffe 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -7,7 +7,7 @@
if (USE_DOXYGEN)
find_package(Doxygen)
- if(NOT DOXYGEN_FOUND)
+ if (NOT DOXYGEN_FOUND)
message(FATAL_ERROR "Could not find doxygen. Reference documentation cannot be built.")
endif()
@@ -27,7 +27,7 @@ endif()
########################################################################
-if(NOT BUILD_DOCS)
+if (NOT BUILD_DOCS)
add_custom_target(doc DEPENDS doc.doxygen)
return()
endif()
@@ -45,7 +45,7 @@ find_program(GROFF groff)
foreach(file ${info_files})
get_filename_component(file_base ${file} NAME_WE)
- if(NOT MAKEINFO)
+ if (NOT MAKEINFO)
message(WARNING "Could not find makeinfo. Info version of documentation cannot be built.")
else()
add_custom_command(OUTPUT ${file_base}.info
@@ -55,8 +55,8 @@ foreach(file ${info_files})
list(APPEND ledger_doc_files ${file_base}.info)
endif()
- if(BUILD_WEB_DOCS)
- if(NOT MAKEINFO)
+ if (BUILD_WEB_DOCS)
+ if (NOT MAKEINFO)
message(WARNING "Could not find makeinfo. HTML version of documentation cannot be built.")
endif()
add_custom_command(OUTPUT ${file_base}.html
@@ -66,10 +66,10 @@ foreach(file ${info_files})
list(APPEND ledger_doc_files ${file_base}.html)
endif(BUILD_WEB_DOCS)
- if(NOT TEXI2PDF OR NOT TEX)
+ if (NOT TEXI2PDF OR NOT TEX)
message(WARNING "Could not find texi2pdf or tex. PDF version of documentation will not be built.")
else()
- if(BUILD_A4_PDF)
+ if (BUILD_A4_PDF)
set(papersize --texinfo=@afourpaper)
endif()
add_custom_command(OUTPUT ${file_base}.pdf
@@ -82,12 +82,12 @@ endforeach()
########################################################################
-if(BUILD_WEB_DOCS)
+if (BUILD_WEB_DOCS)
include(FindUnixCommands)
- if(NOT BASH)
+ if (NOT BASH)
message(FATAL_ERROR "Could not find bash. Unable to build documentation.")
endif()
- if(MAN2HTML)
+ if (MAN2HTML)
add_custom_command(OUTPUT ledger.1.html
COMMAND ${BASH} -c "man2html ${CMAKE_CURRENT_SOURCE_DIR}/ledger.1 | tail -n+3 > ledger.1.html"
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ledger.1
@@ -112,7 +112,7 @@ add_custom_target(doc DEPENDS ${ledger_doc_files} doc.doxygen)
include(GNUInstallDirs)
-if(CMAKE_INSTALL_MANDIR)
+if (CMAKE_INSTALL_MANDIR)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ledger.1
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT doc)
endif(CMAKE_INSTALL_MANDIR)
diff --git a/lisp/CMakeLists.txt b/lisp/CMakeLists.txt
index 525e91aa..76f221b4 100644
--- a/lisp/CMakeLists.txt
+++ b/lisp/CMakeLists.txt
@@ -39,7 +39,7 @@ macro(add_emacs_lisp_target el)
COMMENT "Creating byte-compiled Emacs lisp ${CMAKE_CURRENT_BINARY_DIR}/${el}c")
endmacro(add_emacs_lisp_target el)
-if(EMACS_EXECUTABLE)
+if (EMACS_EXECUTABLE)
# uncompilable .el files
foreach(el ${EMACS_LISP_SOURCES_UNCOMPILABLE})
configure_file(${el} ${CMAKE_CURRENT_BINARY_DIR}/${el})
diff --git a/lisp/ledger-reconcile.el b/lisp/ledger-reconcile.el
index 89d9f646..7f954336 100644
--- a/lisp/ledger-reconcile.el
+++ b/lisp/ledger-reconcile.el
@@ -75,8 +75,8 @@ reconcile-finish will mark all pending posting cleared."
:type 'string
:group 'ledger-reconcile)
-(defcustom ledger-reconcile-sort-key "(date)"
- "Default key for sorting reconcile buffer. For no sorting by default, use '(0)'."
+(defcustom ledger-reconcile-sort-key "(0)"
+ "Default key for sorting reconcile buffer. Possible values are '(date)', '(amount)', '(payee)'. For no sorting, i.e. using ledger file order, use '(0)'."
:type 'string
:group 'ledger-reconcile)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9752b052..aec75c06 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -52,7 +52,7 @@ set(LEDGER_SOURCES
strptime.cc
wcwidth.cc)
-if(HAVE_BOOST_PYTHON)
+if (HAVE_BOOST_PYTHON)
list(APPEND LEDGER_SOURCES
py_account.cc
py_amount.cc
@@ -135,8 +135,8 @@ set(LEDGER_INCLUDES
strptime.h
${PROJECT_BINARY_DIR}/system.hh)
-if(CMAKE_BUILD_TYPE STREQUAL "Debug")
- if((CMAKE_CXX_COMPILER MATCHES "clang") OR (CMAKE_CXX_COMPILER MATCHES "cxx"))
+if (CMAKE_BUILD_TYPE STREQUAL "Debug")
+ if ((CMAKE_CXX_COMPILER MATCHES "clang") OR (CMAKE_CXX_COMPILER MATCHES "cxx"))
add_definitions(
-Weverything
-Wno-disabled-macro-expansion
@@ -156,7 +156,7 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set_source_files_properties(
${${_src_list}} PROPERTIES COMPILE_FLAGS "-include ${_header_filename}")
- if(_other_srcs)
+ if (_other_srcs)
set_source_files_properties(
${_other_srcs} PROPERTIES COMPILE_FLAGS "-include ${_header_filename}")
endif()
@@ -164,7 +164,7 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(_args ${CMAKE_CXX_FLAGS})
list(APPEND _args ${CMAKE_CXX_FLAGS_DEBUG})
- if(BUILD_LIBRARY)
+ if (BUILD_LIBRARY)
list(APPEND _args ${CMAKE_SHARED_LIBRARY_CXX_FLAGS})
endif()
list(APPEND _args "-std=c++11 ")
@@ -211,7 +211,7 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set_source_files_properties(
${${_src_list}} PROPERTIES COMPILE_FLAGS "-Winvalid-pch")
- if(_other_srcs)
+ if (_other_srcs)
set_source_files_properties(
${_other_srcs} PROPERTIES COMPILE_FLAGS "-Winvalid-pch")
endif()
@@ -219,7 +219,7 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(_args ${CMAKE_CXX_FLAGS})
list(APPEND _args ${CMAKE_CXX_FLAGS_DEBUG})
- if(BUILD_LIBRARY)
+ if (BUILD_LIBRARY)
list(APPEND _args ${CMAKE_SHARED_LIBRARY_CXX_FLAGS})
endif()
list(APPEND _args ${GXX_WARNING_FLAGS})
@@ -253,7 +253,7 @@ add_pch_rule(${PROJECT_BINARY_DIR}/system.hh LEDGER_SOURCES main.cc global.cc)
include(GNUInstallDirs)
-if(BUILD_LIBRARY)
+if (BUILD_LIBRARY)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
add_library(libledger SHARED ${LEDGER_SOURCES})
add_ledger_library_dependencies(libledger)
@@ -274,7 +274,7 @@ else()
add_ledger_library_dependencies(ledger)
endif()
-if(USE_PYTHON)
+if (USE_PYTHON)
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c
"from __future__ import print_function
import distutils.sysconfig as s
@@ -284,7 +284,7 @@ print(s.get_python_lib(True, prefix=''))"
CACHE PATH "python module directory (${_TMP_PYTHON_SITE_PACKAGES})")
if (PYTHON_SITE_PACKAGES)
- if(WIN32 AND NOT CYGWIN)
+ if (WIN32 AND NOT CYGWIN)
set(_ledger_python_module_name "ledger.pyd")
elseif(CMAKE_HOST_APPLE)
set(_ledger_python_module_name "ledger.so")
diff --git a/src/format.cc b/src/format.cc
index 9b5e7d93..302c28d6 100644
--- a/src/format.cc
+++ b/src/format.cc
@@ -206,7 +206,7 @@ format_t::element_t * format_t::parse_elements(const string& fmt,
sizeof(format_mapping_t)); i++) {
if (*p == single_letter_mappings[i].letter) {
std::ostringstream expr;
- for (const char * ptr = single_letter_mappings[i].expr; *ptr; ){
+ for (const char * ptr = single_letter_mappings[i].expr; *ptr;) {
if (*ptr == '$') {
const char * beg = ++ptr;
while (*ptr && std::isalpha(*ptr))
diff --git a/src/global.cc b/src/global.cc
index 95e408eb..cc928c1b 100644
--- a/src/global.cc
+++ b/src/global.cc
@@ -142,13 +142,13 @@ void global_scope_t::read_init()
throw_(parse_error, _f("Could not find specified init file %1%") % init_file);
}
} else {
- if (const char * home_var = std::getenv("HOME")){
+ if (const char * home_var = std::getenv("HOME")) {
init_file = (path(home_var) / ".ledgerrc");
} else {
init_file = ("./.ledgerrc");
}
}
- if(exists(init_file)){
+ if (exists(init_file)) {
parse_init(init_file);
}
}
diff --git a/src/journal.cc b/src/journal.cc
index ced96ee9..b11b5c45 100644
--- a/src/journal.cc
+++ b/src/journal.cc
@@ -174,7 +174,7 @@ account_t * journal_t::expand_aliases(string name) {
// prevent infinite excursion. Each alias may only be expanded at most once.
account_t * result = NULL;
- if(no_aliases)
+ if (no_aliases)
return result;
bool keep_expanding = true;
@@ -184,7 +184,7 @@ account_t * journal_t::expand_aliases(string name) {
if (account_aliases.size() > 0) {
accounts_map::const_iterator i = account_aliases.find(name);
if (i != account_aliases.end()) {
- if(std::find(already_seen.begin(), already_seen.end(), name) != already_seen.end()) {
+ if (std::find(already_seen.begin(), already_seen.end(), name) != already_seen.end()) {
throw_(std::runtime_error,
_f("Infinite recursion on alias expansion for %1%")
% name);
@@ -197,11 +197,11 @@ account_t * journal_t::expand_aliases(string name) {
// only check the very first account for alias expansion, in case
// that can be expanded successfully
size_t colon = name.find(':');
- if(colon != string::npos) {
+ if (colon != string::npos) {
string first_account_name = name.substr(0, colon);
accounts_map::const_iterator j = account_aliases.find(first_account_name);
if (j != account_aliases.end()) {
- if(std::find(already_seen.begin(), already_seen.end(), first_account_name) != already_seen.end()) {
+ if (std::find(already_seen.begin(), already_seen.end(), first_account_name) != already_seen.end()) {
throw_(std::runtime_error,
_f("Infinite recursion on alias expansion for %1%")
% first_account_name);
diff --git a/src/option.h b/src/option.h
index 21942436..1ea9457d 100644
--- a/src/option.h
+++ b/src/option.h
@@ -229,7 +229,7 @@ public:
inline bool is_eq(const char * p, const char * n) {
// Test whether p matches n, substituting - in p for _ in n.
for (; *p && *n; p++, n++) {
- if (! (*p == '-' && *n == '_' ) && *p != *n)
+ if (! (*p == '-' && *n == '_') && *p != *n)
return false;
}
// Ignore any trailing underscore
diff --git a/src/output.cc b/src/output.cc
index f8555fe5..ba469ea9 100644
--- a/src/output.cc
+++ b/src/output.cc
@@ -331,10 +331,10 @@ void report_tags::flush()
void report_tags::operator()(post_t& post)
{
- if(post.metadata){
- foreach (const item_t::string_map::value_type& data, *post.metadata){
+ if (post.metadata) {
+ foreach (const item_t::string_map::value_type& data, *post.metadata) {
string tag=data.first;
- if(report.HANDLED(values) && (data.second).first){
+ if (report.HANDLED(values) && (data.second).first) {
tag+=": "+ (data.second).first.get().to_string();
}
std::map<string, std::size_t>::iterator i = tags.find(tag);
diff --git a/src/py_times.cc b/src/py_times.cc
index 44a6f3cd..c210889d 100644
--- a/src/py_times.cc
+++ b/src/py_times.cc
@@ -108,7 +108,7 @@ struct datetime_from_python
static void* convertible(PyObject* obj_ptr)
{
MY_PyDateTime_IMPORT;
- if(PyDateTime_Check(obj_ptr)) return obj_ptr;
+ if (PyDateTime_Check(obj_ptr)) return obj_ptr;
return 0;
}
diff --git a/src/session.cc b/src/session.cc
index ec57eab3..e373eb03 100644
--- a/src/session.cc
+++ b/src/session.cc
@@ -93,13 +93,13 @@ std::size_t session_t::read_data(const string& master_account)
acct = journal->find_account(master_account);
optional<path> price_db_path;
- if (HANDLED(price_db_)){
+ if (HANDLED(price_db_)) {
price_db_path = resolve_path(HANDLER(price_db_).str());
- if (!exists(price_db_path.get())){
+ if (!exists(price_db_path.get())) {
throw_(parse_error, _f("Could not find specified price-db file %1%") % price_db_path);
}
} else {
- if (const char * home_var = std::getenv("HOME")){
+ if (const char * home_var = std::getenv("HOME")) {
price_db_path = (path(home_var) / ".pricedb");
} else {
price_db_path = ("./.ledgerrc");
diff --git a/src/textual.cc b/src/textual.cc
index 8d4db512..418b6c00 100644
--- a/src/textual.cc
+++ b/src/textual.cc
@@ -1638,24 +1638,23 @@ post_t * instance_t::parse_post(char * line,
"line " << context.linenum << ": " << "post amount = " << amt);
amount_t diff = amt;
- amount_t tot;
switch (account_total.type()) {
case value_t::AMOUNT:
- tot = account_total.as_amount();
+ diff -= account_total.as_amount();
break;
case value_t::BALANCE:
if (optional<amount_t> comm_bal =
account_total.as_balance().commodity_amount(amt.commodity()))
- tot = *comm_bal;
+ diff -= *comm_bal;
break;
default:
break;
}
- diff -= tot;
+ amount_t tot = amt - diff;
DEBUG("post.assign",
"line " << context.linenum << ": " << "diff = " << diff);
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 97da8b24..0f19ae6f 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,7 +1,7 @@
include(ProcessorCount)
ProcessorCount(PROCESSORS)
-if(NOT PROCESSORS EQUAL 0)
+if (NOT PROCESSORS EQUAL 0)
math(EXPR JOBS "${PROCESSORS} * 2")
set(CTEST_BUILD_FLAGS -j${JOBS})
endif()
@@ -12,17 +12,17 @@ add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} ${CTEST_BUILD_FLAGS})
add_subdirectory(unit)
-if(HAVE_BOOST_PYTHON)
+if (HAVE_BOOST_PYTHON)
set(TEST_PYTHON_FLAGS "--python")
endif()
macro(add_ledger_harness_tests _class)
- if(PYTHONINTERP_FOUND)
+ if (PYTHONINTERP_FOUND)
file(GLOB ${_class}_TESTS *.test)
foreach(TestFile ${${_class}_TESTS})
get_filename_component(TestFile_Name ${TestFile} NAME_WE)
string(FIND ${TestFile_Name} "_py" TestFile_IsPythonTest)
- if((TestFile_IsPythonTest EQUAL -1) OR HAVE_BOOST_PYTHON)
+ if ((TestFile_IsPythonTest EQUAL -1) OR HAVE_BOOST_PYTHON)
add_test(${_class}Test_${TestFile_Name}
${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/test/RegressTests.py
${LEDGER_LOCATION} ${PROJECT_SOURCE_DIR}
@@ -39,7 +39,7 @@ add_subdirectory(baseline)
add_subdirectory(regress)
# jww (2014-04-17): This is temporary until we find a fix.
-#if(PYTHONINTERP_FOUND)
+#if (PYTHONINTERP_FOUND)
# set(_class DocTests)
# file(GLOB ${_class}_TESTS ${PROJECT_SOURCE_DIR}/doc/*.texi)
# foreach(TestFile ${${_class}_TESTS})
diff --git a/test/baseline/dir-alias.test b/test/baseline/dir-alias.test
index 6245d944..103868d8 100644
--- a/test/baseline/dir-alias.test
+++ b/test/baseline/dir-alias.test
@@ -2,12 +2,21 @@ alias A=B:A
alias B=C:B
alias C=D:C
+account Delta
+ alias D
+
2001-01-01 Test
A 10 EUR
Foo
+2001-01-01 Test
+ D 20 EUR
+ Foo
+
test reg
01-Jan-01 Test B:A 10 EUR 10 EUR
Foo -10 EUR 0
+01-Jan-01 Test Delta 20 EUR 20 EUR
+ Foo -20 EUR 0
end test
diff --git a/test/baseline/feat-balance_assert-off.test b/test/baseline/feat-balance_assert-off.test
new file mode 100644
index 00000000..fed24d4a
--- /dev/null
+++ b/test/baseline/feat-balance_assert-off.test
@@ -0,0 +1,18 @@
+
+2014-05-01 * Opening balance
+ Assets:Cash $100
+ Equity:Opening balance
+
+2014-05-10 * Spend money
+ Expenses:Foo $10
+ Assets:Cash -$10 = $80
+
+test bal -> 1
+__ERROR__
+While parsing file "$FILE", line 8:
+While parsing posting:
+ Assets:Cash -$10 = $80
+ ^^^
+Error: Balance assertion off by $-10 (expected to see $100)
+end test
+
diff --git a/test/baseline/opt-no-aliases.test b/test/baseline/opt-no-aliases.test
new file mode 100644
index 00000000..9deeca5d
--- /dev/null
+++ b/test/baseline/opt-no-aliases.test
@@ -0,0 +1,20 @@
+
+alias A=Foo
+
+account Bar
+ alias B
+
+2001-01-01 * Test
+ A 10 EUR
+ B
+
+test reg
+01-Jan-01 Test Foo 10 EUR 10 EUR
+ Bar -10 EUR 0
+end test
+
+test reg --no-aliases
+01-Jan-01 Test A 10 EUR 10 EUR
+ B -10 EUR 0
+end test
+
diff --git a/test/baseline/dir-alias-recursive.test b/test/baseline/opt-recursive-aliases.test
index d9addcd1..d9addcd1 100644
--- a/test/baseline/dir-alias-recursive.test
+++ b/test/baseline/opt-recursive-aliases.test
diff --git a/test/regress/634AA589.test b/test/regress/634AA589.test
new file mode 100644
index 00000000..8f8ff031
--- /dev/null
+++ b/test/regress/634AA589.test
@@ -0,0 +1,19 @@
+
+; The option --permissive quiets balance assertions
+
+2014-05-01 * Opening balance
+ Assets:Cash $100
+ Equity:Opening balance
+
+2014-05-10 * Spend money
+ Expenses:Foo $10
+ Assets:Cash -$10 = $80
+
+test bal --permissive
+ $90 Assets:Cash
+ $-100 Equity:Opening balance
+ $10 Expenses:Foo
+--------------------
+ 0
+end test
+
diff --git a/test/regress/AA2FF2B.test b/test/regress/AA2FF2B.test
new file mode 100644
index 00000000..944cdfea
--- /dev/null
+++ b/test/regress/AA2FF2B.test
@@ -0,0 +1,10 @@
+2008/01/20 * La Poste
+ Revenu:Invest:Exonéré
+ Actif:Courant:LaPosteLivretA 25,24 € = 25,24 €
+
+test --args-only --decimal-comma bal
+ 25,24 € Actif:Courant:LaPosteLivretA
+ -25,24 € Revenu:Invest:Exonéré
+--------------------
+ 0
+end test
diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt
index b3639c06..23bb0ea4 100644
--- a/test/unit/CMakeLists.txt
+++ b/test/unit/CMakeLists.txt
@@ -5,7 +5,7 @@ endmacro(add_ledger_test _name)
include_directories(${PROJECT_SOURCE_DIR}/src)
-if(BUILD_LIBRARY)
+if (BUILD_LIBRARY)
add_executable(UtilTests t_times.cc)
add_ledger_test(UtilTests)
diff --git a/tools/spellcheck.sh b/tools/spellcheck.sh
index 7a51a18d..182f32cb 100755
--- a/tools/spellcheck.sh
+++ b/tools/spellcheck.sh
@@ -1,3 +1,3 @@
#!/bin/sh
-aspell check --mode=texinfo $(dirname $0)/../doc/ledger3.texi
+aspell --lang=en_US.UTF-8 check --mode=texinfo $(dirname $0)/../doc/ledger3.texi