summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/tests/bibtex-longline-test.pl
blob: d800be2ef93044822ea6a8e8e74d1fa3a14c11b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/env perl
# $Id: bibtex-openout-test.pl 17085 2010-02-18 18:03:18Z karl $
# Public domain.  Originally written 2010, Karl Berry.
# Check that bibtex does not break long strings (change in 2010).

# srcdir = web2c (in the source tree)
BEGIN { chomp ($srcdir = $ENV{"srcdir"} || `cd \`dirname $0\`/.. && pwd`); }
require "$srcdir/../tests/common-test.pl";

exit (&main ());

sub main
{
  # The blg and bbl file names are based on the aux name and cannot be
  # overridden.  We can't write to the aux (source) directory, though,
  # because that's an absolute path and openout_any=p.  Therefore, copy
  # the input files to our working directory.
  for my $ext ("aux", "bib") {
    &test_file_copy ("$srcdir/tests/longline.$ext", "./longline.$ext");
  }
  
  # Run BibTeX, quit if it fails.
  my $ret = &test_run ("./bibtex", "./longline.aux");
  return 1 if $ret != 0;

  # There should be lines longer than 80 chars in the output.
  # (In older versions of BibTeX, they are forcibly split, with a %.)
  local *IN;
  $IN = "longline.bbl";
  open (IN) || die "open($IN) failed: $!";
  while (<IN>) {
    last if length ($_) >= 80;
  }
  
  # We failed if all lines were < 80.
  my $bad = ! (length $_ >= 80);
  return $bad;
}