On Wed, Mar 8, 2017 at 9:14 AM, Zorro Lang <zlang@xxxxxxxxxx> wrote: > On Wed, Mar 08, 2017 at 08:50:50AM +0200, Amir Goldstein wrote: >> On Wed, Mar 8, 2017 at 5:50 AM, Zorro Lang <zlang@xxxxxxxxxx> wrote: >> > On Tue, Mar 07, 2017 at 08:50:27AM -0800, Darrick J. Wong wrote: >> >> Hi Zorro, >> >> >> >> I noticed that generic/411 creates some sort of directory structure >> >> involving $TEST_DIR/$seq/$$_mpA/mnt1/mnt2, then pipes the findmnt output >> >> through _filter_test_dir. >> >> >> >> Unfortunately, on my test system I have TEST_DIR=/mnt, so the filtering >> >> produces this output: >> >> >> >> QA output created by 411 >> >> ------ >> >> TEST_DIR/411 SCRATCH_DEV >> >> mpA SCRATCH_DEV >> >> mpATEST_DIR1 SCRATCH_DEV >> >> mpB SCRATCH_DEV >> >> mpBTEST_DIR1 SCRATCH_DEV >> >> mpBTEST_DIR1/TEST_DIR2 SCRATCH_DEV >> >> mpC SCRATCH_DEV >> >> mpCTESTDIR1 SCRATCH_DEV >> >> ====== >> > >> > Hmm, that's really a problem, thanks for finding it:) If someone >> > use "/mnt" as TEST_DIR, _filter_test_dir will change all "/mnt" >> > things to "TEST_DIR". >> > >> > Except we recommend all cases shouldn't contain "/mnt" >> > in its test path name. Or we'd better change _filter_test_dir, >> > make it to be more picky. >> > >> > I prefer the second way, except someone has a third way :) >> > >> >> crash test passed >> >> >> >> Which means that the golden output comparison fails. :( >> >> >> >> I'm not sure what's a proper fix here: changing _filter_test_dir to be >> >> more picky about what gets sed'ed? >> >> >> >> e.g. sed -e "s,\([[:space:]]\)$TEST_DIR,\1TEST_DIR,g/" >> > >> > Except [[:space:]]$TEST_DIR, maybe we should think about "^$TEST_DIR" too, >> > e.g: >> > >> > echo "/mnt/mnt1/mnt2 /mnt/mnt3/mnt4" | \ >> > sed -e "s,\([[:space:]]\)$TEST_DIR,\1TEST_DIR,g" | \ >> > sed -e "s,^$TEST_DIR,TEST_DIR,g" >> > >> >> That's not enough. >> It's true that currently golden outputs only have ' ' and ^ preceding TEST_DIR, >> but why should we limit the solution to TEST_DIR >> SCRATCH_MNT could just as well be /mnt and we have SCRATCH_MNT >> in golden outputs following '\'' '\"' and : as well. > > Hmm, yes, you're right, maybe follow other things... I didn't think > about this. So change the filter is not easy. > >> >> > (Is there a simpler way to do above things ^^ ? :) >> > >> >> I'm not a regexp master, but can't we setup an expression that matches >> $TEST_DIR.\S and only replaces the $TEST_DIR part, >> that would replace only the first occurrence of $TEST_DIR is every word. > > Maybe output $TEST_* or $SCRATCH_* twice in one line. > > Maybe there's not a better way to change the filter. Stop all cases using > sub-path name that's same with $TEST_* or $SCRATCH_* maybe the best way. > Or maybe there is $ echo '/mnt/mnt/mnt /mnt/mnt1/mnt2 "/mnt/mnt/mnt:/mnt/mnt/mnt"' | sed -e 's,\B/mnt,TEST_DIR,g' TEST_DIR/mnt/mnt TEST_DIR/mnt1/mnt2 "TEST_DIR/mnt/mnt:TEST_DIR/mnt/mnt" \b should stand for word boundary, so I thought regexp should use \b, but that yields the opposite result. \B yields the correct result, but I do not understand why...? -- To unsubscribe from this list: send the line "unsubscribe fstests" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html