test/cache_partial.cc

Code
Comments
Other
Rev Date Author Line
794 27 Jun 09 peter 1 // $Id$
794 27 Jun 09 peter 2
794 27 Jun 09 peter 3 /*
1635 30 Mar 23 peter 4   Copyright (C) 2009, 2010, 2012, 2023 Peter Johansson
794 27 Jun 09 peter 5
794 27 Jun 09 peter 6   This file is part of svndigest, http://dev.thep.lu.se/svndigest
794 27 Jun 09 peter 7
794 27 Jun 09 peter 8   svndigest is free software; you can redistribute it and/or modify it
794 27 Jun 09 peter 9   under the terms of the GNU General Public License as published by
794 27 Jun 09 peter 10   the Free Software Foundation; either version 3 of the License, or
794 27 Jun 09 peter 11   (at your option) any later version.
794 27 Jun 09 peter 12
794 27 Jun 09 peter 13   svndigest is distributed in the hope that it will be useful, but
794 27 Jun 09 peter 14   WITHOUT ANY WARRANTY; without even the implied warranty of
794 27 Jun 09 peter 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
794 27 Jun 09 peter 16   General Public License for more details.
794 27 Jun 09 peter 17
794 27 Jun 09 peter 18   You should have received a copy of the GNU General Public License
794 27 Jun 09 peter 19   along with svndigest. If not, see <http://www.gnu.org/licenses/>.
794 27 Jun 09 peter 20 */
794 27 Jun 09 peter 21
794 27 Jun 09 peter 22 // Testing that partial cache works fine, ticket #338.
794 27 Jun 09 peter 23
1619 12 Mar 23 peter 24 #include <config.h>
1619 12 Mar 23 peter 25
794 27 Jun 09 peter 26 #include "Suite.h"
794 27 Jun 09 peter 27
1124 07 Jul 10 peter 28 #include "lib/AddStats.h"
1119 04 Jul 10 peter 29 #include "lib/File.h"
1119 04 Jul 10 peter 30 #include "lib/SVN.h"
1119 04 Jul 10 peter 31 #include "lib/SVNinfo.h"
1124 07 Jul 10 peter 32 #include "lib/StatsCollection.h"
1119 04 Jul 10 peter 33 #include "lib/utility.h"
801 06 Jul 09 peter 34
1675 26 Aug 23 peter 35 #include <yat/utility/utility.h>
1675 26 Aug 23 peter 36
1321 28 Nov 10 peter 37 #include <fstream>
794 27 Jun 09 peter 38 #include <iostream>
794 27 Jun 09 peter 39
801 06 Jul 09 peter 40 using namespace theplu::svndigest;
801 06 Jul 09 peter 41
794 27 Jun 09 peter 42 int main( int argc, char* argv[])
794 27 Jun 09 peter 43 {
794 27 Jun 09 peter 44   test::Suite suite(argc, argv, true);
794 27 Jun 09 peter 45
1675 26 Aug 23 peter 46   theplu::yat::utility::mkdir_p("toy_project/.svndigest");
1092 12 Jun 10 peter 47   std::string root="toy_project";
801 06 Jul 09 peter 48   std::string filename = root + "/AUTHORS";
801 06 Jul 09 peter 49   suite.out() << "Create SVN instance" << std::endl;
801 06 Jul 09 peter 50   SVN* svn=SVN::instance(root);
801 06 Jul 09 peter 51   if (!svn)
801 06 Jul 09 peter 52     return 1;
801 06 Jul 09 peter 53   // Extract repository location
801 06 Jul 09 peter 54   suite.out() << "Extract repository location" << std::endl;
801 06 Jul 09 peter 55   std::string  repo=SVNinfo(root).repos_root_url();
794 27 Jun 09 peter 56
801 06 Jul 09 peter 57   // create file ignoring cache file
1104 15 Jun 10 peter 58   std::string cache_file = "toy_project/.svndigest/AUTHORS.svndigest-cache";
801 06 Jul 09 peter 59   File file(0,filename,"");
1478 29 May 12 peter 60   const StatsCollection& stats1 = file.parse(suite.verbose(), true, 0);
803 10 Jul 09 peter 61   suite.add(test::consistent(stats1, suite));
801 06 Jul 09 peter 62
801 06 Jul 09 peter 63   // create file using partial cache
1675 26 Aug 23 peter 64   theplu::yat::utility::copy_file(test::src_filename("data/AUTHORS.svndigest-cache-r61"), cache_file);
801 06 Jul 09 peter 65   File file2(0,filename,"");
1478 29 May 12 peter 66   const StatsCollection& stats2 = file2.parse(suite.verbose(), false, 0);
803 10 Jul 09 peter 67   suite.add(test::consistent(stats2, suite));
801 06 Jul 09 peter 68
801 06 Jul 09 peter 69   suite.add(equal(stats1, stats2, suite));
801 06 Jul 09 peter 70
1122 07 Jul 10 peter 71   // test that load of partial cache is successful
1675 26 Aug 23 peter 72   theplu::yat::utility::copy_file(test::src_filename("data/AUTHORS.svndigest-cache-r61"), cache_file);
1124 07 Jul 10 peter 73   AddStats cstats(filename);
1122 07 Jul 10 peter 74   std::ifstream is(cache_file.c_str());
1124 07 Jul 10 peter 75   bool cache_ok=true;
1611 12 Feb 23 peter 76   suite.out() << "===\n";
1124 07 Jul 10 peter 77   cstats.load_cache(is, cache_ok);
1611 12 Feb 23 peter 78   suite.out() << "beta \n";
1124 07 Jul 10 peter 79   cstats.load_cache(is, cache_ok);
1124 07 Jul 10 peter 80   svn_revnum_t rev = cstats.load_cache(is, cache_ok);
1611 12 Feb 23 peter 81   suite.out() << "rev " << rev << "\n";
1124 07 Jul 10 peter 82   if (!cache_ok) {
1124 07 Jul 10 peter 83     suite.out() << "error: seems cache file " << cache_file << " is old\n";
1124 07 Jul 10 peter 84     suite.add(false);
1124 07 Jul 10 peter 85   }
1122 07 Jul 10 peter 86   if (rev!=48) {
1122 07 Jul 10 peter 87     suite.out() << "load cache: " << cache_file << " returned " << rev << "\n"
1122 07 Jul 10 peter 88                 << " expected 48\n";
1122 07 Jul 10 peter 89     suite.add(false);
1122 07 Jul 10 peter 90   }
1122 07 Jul 10 peter 91   is.close();
1122 07 Jul 10 peter 92
1611 12 Feb 23 peter 93   suite.out() << "return\n";
1162 13 Aug 10 peter 94   return suite.exit_status();
794 27 Jun 09 peter 95 }
794 27 Jun 09 peter 96
794 27 Jun 09 peter 97
801 06 Jul 09 peter 98
801 06 Jul 09 peter 99