# # # patch "cset.cc" # from [5bcd0bd25bedbcef5dce7e69b89177a72960ea93] # to [bf9358acd35ed990c59aa4d3006174f0cb9e94bf] # ============================================================ --- cset.cc 5bcd0bd25bedbcef5dce7e69b89177a72960ea93 +++ cset.cc bf9358acd35ed990c59aa4d3006174f0cb9e94bf @@ -532,7 +532,7 @@ } { - L(F("TEST: cset reading - misordered files")); + L(F("TEST: cset reading - misordered files in delete")); // bad cset, bar should be before foo data dat("delete \"foo\"\n" "\n" @@ -542,6 +542,90 @@ } { + L(F("TEST: cset reading - misordered files in rename")); + // bad cset, bar should be before foo + data dat("rename \"foo\" \"foonew\"\n" + "\n" + "rename \"bar\" \"barnew\"\n"); + cset cs; + BOOST_CHECK_THROW(read_cset(dat, cs), std::logic_error); + } + + { + L(F("TEST: cset reading - misordered files in add_dir")); + // bad cset, bar should be before foo + data dat("add_dir \"foo\"\n" + "\n" + "add_dir \"bar\"\n"); + cset cs; + BOOST_CHECK_THROW(read_cset(dat, cs), std::logic_error); + } + + { + L(F("TEST: cset reading - misordered files in add_file")); + // bad cset, bar should be before foo + data dat("add_file \"foo\"\n" + " content [0000000000000000000000000000000000000000]\n" + "\n" + "add_file \"bar\"\n" + " content [0000000000000000000000000000000000000000]\n"); + cset cs; + BOOST_CHECK_THROW(read_cset(dat, cs), std::logic_error); + } + + { + L(F("TEST: cset reading - misordered files in add_file")); + // bad cset, bar should be before foo + data dat("add_file \"foo\"\n" + " content [0000000000000000000000000000000000000000]\n" + "\n" + "add_file \"bar\"\n" + " content [0000000000000000000000000000000000000000]\n"); + cset cs; + BOOST_CHECK_THROW(read_cset(dat, cs), std::logic_error); + } + + { + L(F("TEST: cset reading - misordered files in patch")); + // bad cset, bar should be before foo + data dat("patch \"foo\"\n" + " from [0000000000000000000000000000000000000000]\n" + " to [1000000000000000000000000000000000000000]\n" + "\n" + "patch \"bar\"\n" + " from [0000000000000000000000000000000000000000]\n" + " to [1000000000000000000000000000000000000000]\n") + cset cs; + BOOST_CHECK_THROW(read_cset(dat, cs), std::logic_error); + } + + { + L(F("TEST: cset reading - misordered files in clear")); + // bad cset, bar should be before foo + data dat("clear \"foo\"\n" + " attr \"flavoursome\"\n" + "\n" + "clear \"bar\"\n" + " attr \"flavoursome\"\n"); + cset cs; + BOOST_CHECK_THROW(read_cset(dat, cs), std::logic_error); + } + + { + L(F("TEST: cset reading - misordered files in set")); + // bad cset, bar should be before foo + data dat(" set \"foo\"\n" + " attr \"flavoursome\"\n" + "value \"yes\"\n" + "\n" + " set \"bar\"\n" + " attr \"flavoursome\"\n" + "value \"yes\"\n"); + cset cs; + BOOST_CHECK_THROW(read_cset(dat, cs), std::logic_error); + } + + { L(F("TEST: cset reading - duplicate entries")); data dat("delete \"foo\"\n" "\n" @@ -565,8 +649,20 @@ } { - L(F("TEST: cset reading - wrong attr ordering")); + L(F("TEST: cset reading - wrong attr ordering in clear")); // fooish should be before quuxy + data dat( "clear \"bar\"\n" + " attr \"quuxy\"\n" + "\n" + "clear \"bar\"\n" + " attr \"fooish\"\n"); + cset cs; + BOOST_CHECK_THROW(read_cset(dat, cs), std::logic_error); + } + + { + L(F("TEST: cset reading - wrong attr ordering in set")); + // fooish should be before quuxy data dat( " set \"bar\"\n" " attr \"quuxy\"\n" "value \"mostly\"\n" @@ -593,6 +689,28 @@ } { + L(F("TEST: cset reading - attr set+clear")); + // can't have dups. + data dat( "clear \"bar\"\n" + " attr \"flavoursome\"\n" + "\n" + " set \"bar\"\n" + " attr \"flavoursome\"\n" + "value \"sometimes\"\n"); + cset cs; + BOOST_CHECK_THROW(read_cset(dat, cs), std::logic_error); + } + + { + L(F("TEST: cset reading - no-op patch")); + data dat( "patch \"bar\"\n" + " from [0000000000000000000000000000000000000000]\n" + " to [0000000000000000000000000000000000000000]\n"); + cset cs; + BOOST_CHECK_THROW(read_cset(dat, cs), std::logic_error); + } + + { L(F("TEST: cset writing - normalisation")); cset cs; MM(cs); split_path foo, bar, quux, foo_quux, idle, fish, womble, policeman;