libcsv Validation

Port build from safelibs/port-libcsv at commit c36debc16bac (release build-c36debc16bac)

1Libraries
301Tests
5Source tests
296Usage tests
0Regression tests
301 / 301Port tests passing
0Port tests failing
602 (100%)Evidence casts
1 / 1Port libraries passing

Tests

Empty fields and custom delimiter Original / libcsv / empty-field-custom-delimiter Passed

Checks empty field callbacks while parsing semicolon delimited data.

Run
Original
Kind
source
Client
none
Duration
0.00s
Tags
api delimiter
Log

            
Example tool compile and run Original / libcsv / example-tool-compile-run Passed

Builds an upstream example tool and runs it against a fixture CSV.

Run
Original
Kind
source
Client
none
Duration
0.00s
Tags
api example
Log

            
Large field handling Original / libcsv / large-field-handling Passed

Parses a large field and confirms the callback receives all bytes.

Run
Original
Kind
source
Client
none
Duration
0.00s
Tags
api large-field
Log

            
Parser callback behavior Original / libcsv / parser-callback-behavior Passed

Compiles a parser callback program and checks fields and rows.

Run
Original
Kind
source
Client
none
Duration
0.00s
Tags
api parser
Log

            
Strict quote error behavior Original / libcsv / strict-quote-error Passed

Uses strict parser options to reject an unterminated quoted field.

Run
Original
Kind
source
Client
none
Duration
0.00s
Tags
api negative
Log

            
readstat conversion log reports variable and row counts Original / libcsv / usage-readstat-conversion-log-counts Passed

Captures the stdout of three sequential conversions of a seven-row two-column CSV through DTA and SAV and CSV and verifies every conversion emits a "Converted N variables and M rows in T seconds" log line whose variable and row counts match the expected shape, locking in the structured success indicator.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv log counts
Log

            
readstat 100 column CSV summary and edge cells Original / libcsv / usage-readstat-csv-100-columns Passed

Builds a 100 column numeric CSV with two data rows, converts through DTA, and verifies the summary reports exactly 100 columns and that the first column, last column, and a midpoint column hold their expected values on both rows.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv columns scale
Log

            
readstat 3 column 10 row CSV roundtrip Original / libcsv / usage-readstat-csv-3col-10row-simple-roundtrip Passed

Converts a CSV with three numeric columns and ten data rows through DTA and verifies the summary reports the exact row and column counts and that each row reappears with the expected six-decimal values.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv roundtrip
Log

            
readstat 3x3 CSV every cell verified after DTA round trip Original / libcsv / usage-readstat-csv-3x3-every-cell Passed

Builds a small three-row by three-column CSV with distinct values in every cell so each one is uniquely addressable, converts through DTA, and verifies each of the nine cells reappears at the matching row and column position on readback so no row or column gets transposed, dropped, or duplicated.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv addressing mixed
Log

            
readstat 5000 row CSV summary Original / libcsv / usage-readstat-csv-5000-rows Passed

Builds a 5000-row numeric CSV, converts it through DTA, and verifies the summary reports the exact row count and that the first and last data rows survive readback.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv scale
Log

            
readstat streams an 8000-row CSV through DTA and back Original / libcsv / usage-readstat-csv-8000-row-streaming-roundtrip Passed

Generates an 8000-row two-column CSV with monotonically increasing values, converts to DTA, reads it back to CSV via the "-" stdout sink, and verifies the DTA summary reports exactly 8000 rows, the readback produces 8001 lines (header + rows), and the first/middle/last data rows survive numerically. Stresses libreadstat's CSV streaming path with a row count larger than typical buffered batches.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv streaming large
Log

            
readstat preserves rows where every cell is empty Original / libcsv / usage-readstat-csv-all-empty-cells-preserved Passed

Builds a DTA from a CSV containing two rows in which every cell is empty for both a STRING column and a NUMERIC column and verifies the round-tripped CSV retains both empty rows with empty quoted strings for the string column and empty numeric placeholders for the numeric column.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv empty missing
Log

            
readstat all-zero numeric column renders as 0.000000 in every cell Original / libcsv / usage-readstat-csv-all-zero-column-rendering Passed

Builds a CSV with two numeric columns where the first column carries varied non-zero integers and the second column is all zero across four rows, converts through DTA, and verifies the second column is rendered as the literal six-decimal short form 0.000000 in every row — never as a bare 0, never as 0.0, never as scientific notation, and never empty — while the first column independently renders its varied values.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric zero rendering
Log

            
readstat CSV numeric column with all zero rows Original / libcsv / usage-readstat-csv-all-zeros-multi-row Passed

Builds a CSV whose numeric column holds zero on every one of five rows, converts through DTA, and verifies each readback row reports a numeric zero in the six-decimal short form rather than an empty value or unrelated number.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric zero
Log

            
readstat CSV with constant first column preserves repeated value across all rows Original / libcsv / usage-readstat-csv-constant-first-column Passed

Builds a two-column CSV where the first column carries the same string value on every data row (a degenerate constant column) and the second column varies, converts through DTA, and verifies every readback row repeats the constant verbatim so no row collapses or deduplicates the value.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv constant mixed
Log

            
readstat CRLF CSV input Original / libcsv / usage-readstat-csv-crlf-line-endings Passed

Feeds a CRLF-terminated CSV to readstat and verifies the rows are parsed and exported back to CSV without extra carriage returns.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv crlf
Log

            
readstat decimal tenths preserved at six-decimal output Original / libcsv / usage-readstat-csv-decimal-tenths-roundtrip Passed

Converts a CSV whose numeric column carries 0.1, 0.2, and 0.3 through DTA and verifies each value reappears in the readback as its six-decimal short form, confirming tenths round-trip even though they are not exact in binary floating point.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv decimal precision
Log

            
readstat renders DISCRETE missing values as blanks when DTA is read back Original / libcsv / usage-readstat-csv-discrete-missing-blank-in-dta Passed

Builds CSV plus JSON metadata that declares a DISCRETE missing-value sentinel of 99 on a numeric column, converts to DTA, reads the DTA back to CSV, and verifies the row whose score equals 99 emits an empty cell ("beta,") while non-sentinel rows preserve their numeric value (alpha,42 and gamma,7 stay populated). Locks in the libreadstat behavior of suppressing user-declared missing sentinels at DTA readback time.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta missing metadata
Log

            
readstat CSV through DTA and back is byte-stable across two passes Original / libcsv / usage-readstat-csv-dta-csv-byte-equal-roundtrip Passed

Round-trips a CSV through DTA twice — once for a reference readback CSV and once for a second readback CSV — and verifies the two readback CSVs are byte-for-byte identical via cmp, then computes a SHA-256 of each and verifies the digests match exactly, proving the DTA roundtrip is deterministic and yields identical bytes on a fresh invocation.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv roundtrip byte-equality
Log

            
readstat CSV through DTA SAV and back to CSV produces identical readback Original / libcsv / usage-readstat-csv-dta-sav-csv-exact-match Passed

Round-trips a CSV through DTA, then through SAV, then back to CSV via the SAV file, and verifies that the final CSV content is byte-for-byte identical to a direct CSV-through-DTA-and-back-to-CSV readback, locking in that the SAV intermediate hop does not perturb the data.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv multistep equivalence
Log

            
readstat CSV through DTA SAV DTA preserves five rows exactly Original / libcsv / usage-readstat-csv-dta-sav-dta-5row-exact Passed

Round-trips a five-row CSV through DTA then SAV then back to DTA, dumps the final DTA as CSV, and verifies every one of the five data rows reappears at its original position with both string and numeric values intact.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv multistep
Log

            
readstat converts CSV-built DTA into a ZSAV with binary compression Original / libcsv / usage-readstat-csv-dta-to-zsav-cross-format Passed

Builds a DTA from CSV, then performs a second readstat invocation that consumes the DTA and produces a ZSAV (SPSS compressed) directly without re-using the JSON metadata. Verifies the resulting ZSAV summary reports format "SPSS compressed binary file (ZSAV)", "Compression: binary", "Format version: 3", and that the readback CSV preserves both row values, exercising the DTA-reader -> ZSAV-writer pipeline rather than the CSV-reader pipeline.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta zsav cross-format
Log

            
readstat embedded newline in quoted CSV field Original / libcsv / usage-readstat-csv-embedded-newline-quoted Passed

Parses a CSV row whose quoted string field contains a literal newline and verifies the multi-line value survives through DTA back to CSV.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv quoting
Log

            
readstat empty CSV is rejected Original / libcsv / usage-readstat-csv-empty-file-rejected Passed

Feeds an empty CSV that contains only a single newline to readstat with a one-variable metadata file and verifies the conversion fails with a non-zero exit status and produces no usable DTA output, locking in that header-less inputs do not silently produce an empty dataset.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv negative
Log

            
readstat empty numeric column across rows Original / libcsv / usage-readstat-csv-empty-numeric-column Passed

Converts a CSV whose numeric column has empty values on every row through DTA and verifies the row count is preserved and string fields survive.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv missing
Log

            
readstat empty string field Original / libcsv / usage-readstat-csv-empty-string Passed

Converts an empty string field through DTA and verifies the row is preserved.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat CSV with explicit 5-decimal-place precision values Original / libcsv / usage-readstat-csv-explicit-5-decimal-precision Passed

Builds a CSV whose numeric column carries values written with exactly five decimal places (0.12345, 1.23456, 9.87654), converts through DTA, and verifies the readback emits each value in readstat's six-decimal short form with the original five-decimal digits intact and a trailing zero appended, demonstrating that the input precision is preserved without rounding away significant digits.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv precision decimal
Log

            
readstat numeric column with explicit .0 suffix preserved as float Original / libcsv / usage-readstat-csv-explicit-dot-zero-float Passed

Builds a CSV whose numeric column carries values written with an explicit .0 decimal suffix (rather than bare integers), converts through DTA, and verifies the readback always renders six-decimal floats so the values are interpreted as numeric rather than as a string column even though they look integer-valued.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv decimal numeric
Log

            
readstat single float column 0.5 step roundtrip Original / libcsv / usage-readstat-csv-float-half-step Passed

Builds a CSV with one numeric column ranging from 0.5 to 50.0 in 0.5 steps, converts through DTA, and verifies the row count and the first, last, and a midpoint value all survive readback.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv decimal
Log

            
readstat summary Format line content for each output format Original / libcsv / usage-readstat-csv-format-line-each-format Passed

Builds a CSV through DTA and then produces SAV, ZSAV, XPT, and SAS7BDAT files from that intermediate DTA, captures the readstat summary for each one, and verifies the leading "Format: ..." line carries the format-specific descriptor (Stata DTA, SPSS SAV, SPSS compressed ZSAV, SAS XPORT, SAS7BDAT) so the wrong format cannot be silently substituted.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv summary format
Log

            
readstat extracts Format version line across DTA SAV ZSAV SAS7BDAT formats Original / libcsv / usage-readstat-csv-format-version-extraction Passed

Builds a CSV through DTA and derives SAV, ZSAV, and SAS7BDAT files from that intermediate, captures each summary, extracts the trailing integer from the "Format version:" line with sed, and verifies that for every format the extracted value parses as a positive integer rather than being missing or non-numeric, locking in that the version field is structurally well-formed across the four formats that report it.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv summary format version
Log

            
readstat numeric column doubling formula preserved across DTA round trip Original / libcsv / usage-readstat-csv-formula-double-relation Passed

Builds a CSV with two numeric columns where column2 equals column1 multiplied by 2 across five data rows (1->2, 2->4, 3->6, 4->8, 5->10), converts through DTA, and verifies in the readback that for each data row the second-column numeric value is exactly twice the first-column numeric value, computed by parsing the integer portions of the six-decimal short forms with awk.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric formula
Log

            
readstat single int column 1 to 1000 count Original / libcsv / usage-readstat-csv-int-1-to-1000-count Passed

Builds a CSV with a single numeric column carrying integers 1 through 1000, converts through DTA, and verifies the summary reports exactly 1000 rows and that the first and last values reappear at the expected positions.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv scale
Log

            
readstat CSV preserves 32 bit and 64 bit integer boundary values Original / libcsv / usage-readstat-csv-int32-max-boundary Passed

Builds a CSV with one numeric column carrying signed 32 bit min and max plus signed 64 bit min and max plus a few neighbouring boundary values, converts through DTA, and verifies each integer reappears on readback as its expected six-decimal value rather than overflowing or being truncated.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric boundary
Log

            
readstat numeric with leading plus sign Original / libcsv / usage-readstat-csv-leading-plus-sign Passed

Converts a CSV whose numeric values carry an explicit leading plus sign through DTA and verifies the sign is normalized away in the readback.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric
Log

            
readstat long column names through DTA and SAV Original / libcsv / usage-readstat-csv-long-column-names Passed

Converts a CSV with column names longer than 32 characters through DTA and SAV and verifies the long names are preserved verbatim in the readback header for each format.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv headers
Log

            
readstat 30 column CSV round trip Original / libcsv / usage-readstat-csv-many-columns-roundtrip Passed

Builds a 30-column numeric CSV with matching metadata, converts through DTA, and verifies the column count and first and last column values survive.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv columns
Log

            
readstat distinct strictly increasing numeric column preserves order and values Original / libcsv / usage-readstat-csv-many-distinct-increasing Passed

Builds a CSV with one numeric column carrying 25 strictly increasing distinct values, converts through DTA, and verifies every value reappears at its original line position so neither the order nor the magnitudes drift after the round trip.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric ordering
Log

            
readstat rejects metadata that does not list a CSV column Original / libcsv / usage-readstat-csv-mismatched-metadata-variable-rejected Passed

Supplies a CSV header with columns "n,v" but a JSON metadata file that lists "foobar,v", and verifies readstat exits non-zero with "Could not find type of variable n in metadata", proving readstat validates that every CSV column has a metadata entry rather than silently typing the unknown column.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv metadata negative
Log

            
readstat mixed int and float numeric columns Original / libcsv / usage-readstat-csv-mixed-int-float-columns Passed

Converts a CSV whose first numeric column carries integers and second numeric column carries non-integral floats through DTA and verifies both columns survive at six-decimal precision without one column collapsing into the other type.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric
Log

            
readstat mixed numeric and string columns with varying string widths Original / libcsv / usage-readstat-csv-mixed-numeric-string-padding Passed

Builds a CSV with one numeric column and one string column where string values vary in length from 1 to 12 characters, converts through DTA, and verifies each string value reappears verbatim alongside its paired numeric value rendered to six decimals.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv mixed
Log

            
readstat multiple negative numeric rows Original / libcsv / usage-readstat-csv-multi-negative-numbers Passed

Converts a CSV with several negative numeric values of varying magnitudes through DTA and verifies each value reappears in the CSV readback.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric
Log

            
readstat CSV through DTA SAV and back to CSV Original / libcsv / usage-readstat-csv-multistep-format-hops Passed

Round-trips a CSV through DTA, then through SAV, then back to CSV via DTA, verifying string and numeric values survive every hop.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv multistep
Log

            
readstat numeric precision through DTA Original / libcsv / usage-readstat-csv-numeric-precision Passed

Converts a CSV with several many-digit decimal values through DTA and verifies the readback retains 15 significant digits, matching readstat's high-precision numeric output.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv precision
Log

            
readstat multi-column CSV with one numeric and one string column Original / libcsv / usage-readstat-csv-one-numeric-one-string Passed

Builds a two-column CSV pairing a numeric column with a single string column and verifies that after a DTA round trip the readback header preserves the column order, the numeric column is rendered as six-decimal floats while the string column remains quoted, and the values are not transposed across the column boundary.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv mixed
Log

            
readstat CSV preserves paired very large positive and negative integers Original / libcsv / usage-readstat-csv-paired-large-pos-neg Passed

Builds a CSV whose single numeric column alternates between very large positive and very large negative integers (up to 1e15 in magnitude), converts through DTA, and verifies each paired value reappears with its sign and magnitude intact and that no positive value collapses into its negative twin.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric sign
Log

            
readstat CSV two correlated numeric columns Original / libcsv / usage-readstat-csv-positive-negative-correlation Passed

Builds a CSV with two distinct numeric columns where one is positively correlated with row index and another is negatively correlated, converts through DTA, and verifies the monotonic increase and decrease survive readback exactly.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric
Log

            
readstat quoted CSV header with space in column name Original / libcsv / usage-readstat-csv-quoted-column-name-with-space Passed

Converts a CSV whose header row carries a quoted column name containing a space character through DTA using a matching metadata variable name and verifies the original quoted header is restored on readback and the data row reappears intact.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv header quoted
Log

            
readstat CSV with quoted column names that fit DTA naming roundtrips cleanly Original / libcsv / usage-readstat-csv-quoted-header-no-spaces Passed

Builds a CSV whose header row uses quoted column names that still fit DTA naming rules (no spaces, no special characters), converts through DTA, and verifies the quotes are stripped from the stored variable names while the data rows survive the round trip with the un-quoted column names in the readback header.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv header quoted
Log

            
readstat specific cell preserved by row and column index Original / libcsv / usage-readstat-csv-row-column-cell-roundtrip Passed

Builds a CSV where row 4 column 2 carries a unique numeric marker value (8675309) surrounded by distractor zeros, converts through DTA, and verifies the marker reappears at the same row and column position in the readback CSV without bleeding into neighbouring cells.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv addressing
Log

            
readstat converts CSV-built SAS7BDAT into an XPT transport file Original / libcsv / usage-readstat-csv-sas7bdat-to-xpt-cross-format Passed

Pipelines CSV plus JSON metadata into a DTA, then DTA into a SAS7BDAT, then SAS7BDAT into an XPT transport file, and finally reads the XPT back to CSV. Verifies the XPT summary identifies the transport format and the readback CSV preserves the three rows produced by the SAS7BDAT -> XPT writer chain (a path that exercises libreadstat's SAS reader and the XPT writer).

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat xpt cross-format
Log

            
readstat scientific notation lowercase and uppercase Original / libcsv / usage-readstat-csv-scientific-mixed-case Passed

Converts a CSV with scientific notation values using both lowercase e and uppercase E, plus negative exponents, through DTA and verifies each parses to the expected numeric value.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric
Log

            
readstat sentinel value at row 1 column 1 preserved exactly Original / libcsv / usage-readstat-csv-sentinel-row1-col1 Passed

Builds a CSV where the very first data cell (row 1, column 1) carries a unique sentinel numeric value (271828) surrounded by zeros, converts through DTA, and verifies the readback line 2 (data row 1) has the sentinel in field 1 and zeros in subsequent fields, that the sentinel appears exactly once in the entire output, and that no other data row has any non-zero value in column 1.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sentinel addressing
Log

            
readstat 1x1 CSV Original / libcsv / usage-readstat-csv-single-cell-1x1 Passed

Converts a CSV containing exactly one column and one data row through DTA and verifies the summary, header, and single value all survive.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv minimal
Log

            
readstat 1x1 CSV with numeric value Original / libcsv / usage-readstat-csv-single-cell-numeric-1x1 Passed

Converts a CSV containing exactly one numeric column and one numeric data row (the value 17) through DTA and verifies the summary reports Columns 1 and Rows 1, the readback header is the bare numeric column name and the single data line is the six-decimal short form of 17, distinguishing this numeric 1x1 case from the existing string-flavoured 1x1 test.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv minimal numeric
Log

            
readstat text-only string column preserved through DTA Original / libcsv / usage-readstat-csv-text-only-column-roundtrip Passed

Converts a CSV containing a single string-typed column with four distinct ASCII labels through DTA and verifies every label reappears verbatim and in the same order on readback.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv string
Log

            
readstat three-column CSV with string, integer-valued, and float-valued columns Original / libcsv / usage-readstat-csv-three-distinct-types Passed

Builds a three-column CSV pairing a STRING column with two NUMERIC columns whose data is shaped as integers in column 2 and as non-integral floats in column 3, converts through DTA, and verifies the readback header order is preserved, the string column stays quoted, the integer-valued numeric column renders with .000000 suffix, and the float-valued numeric column renders the fractional part exactly.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv mixed types
Log

            
readstat CSV to DTA Original / libcsv / usage-readstat-csv-to-dta Passed

Runs readstat to convert CSV plus JSON metadata into a Stata DTA file and reads it back as CSV.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat CSV to SPSS POR portable file summary Original / libcsv / usage-readstat-csv-to-por-summary Passed

Builds an SPSS portable POR file from CSV via DTA using uppercase variable names that the portable format requires and verifies the metadata summary identifies the SPSS portable format and reports the column count matching the input CSV shape.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv por metadata
Log

            
readstat CSV to SAS7BDAT round trip Original / libcsv / usage-readstat-csv-to-sas7bdat-roundtrip Passed

Converts CSV through DTA into a SAS7BDAT data file and verifies the field values reappear in CSV after readback.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat
Log

            
readstat CSV to SAV Original / libcsv / usage-readstat-csv-to-sav Passed

Runs readstat to parse CSV through metadata and write an SPSS SAV dataset.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat CSV to XLSX output Original / libcsv / usage-readstat-csv-to-xlsx-output Passed

Converts CSV through DTA into an XLSX workbook and verifies the workbook is a valid zip with the expected shared strings and cell value.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xlsx
Log

            
readstat CSV to SAS XPORT round trip Original / libcsv / usage-readstat-csv-to-xpt-roundtrip Passed

Converts CSV through DTA into a SAS transport (XPT) file and verifies the values survive the round trip back to CSV.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt
Log

            
readstat CSV to compressed ZSAV round trip Original / libcsv / usage-readstat-csv-to-zsav-roundtrip Passed

Converts CSV through DTA into an SPSS compressed binary (ZSAV) file and verifies the values and binary compression marker.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav
Log

            
readstat CSV with trailing empty lines Original / libcsv / usage-readstat-csv-trailing-empty-lines Passed

Converts a CSV that ends with several blank lines through DTA and verifies the trailing blanks do not inflate the row count.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv blank-lines
Log

            
readstat trailing whitespace inside string fields normalized to trimmed value Original / libcsv / usage-readstat-csv-trailing-whitespace-fields Passed

Builds a CSV whose quoted string fields carry trailing space characters after the actual content (for example "alpha ", "beta "), converts through DTA, and verifies that the readback emits the trimmed string content without the trailing spaces — distinguishing this case from the existing whitespace-only-field test which collapses all-whitespace to empty.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv whitespace trim
Log

            
readstat all-uppercase column names preserve case Original / libcsv / usage-readstat-csv-uppercase-column-names Passed

Converts a CSV whose header row uses fully uppercase column names through DTA and verifies the readback emits the column names in the same all-uppercase form, locking in that readstat does not lowercase or normalize the casing.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv header case
Log

            
readstat treats .CSV uppercase as a CSV input Original / libcsv / usage-readstat-csv-uppercase-extension-accepted Passed

Stores the input fixture with an uppercase ".CSV" extension and verifies readstat still recognizes the format, ingests both rows, and writes a valid DTA. Documents that readstat's input-format dispatch is not strictly case-sensitive and matches the ".csv" path that lowercase fixtures exercise.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv extension case-insensitive
Log

            
readstat does not strip UTF-8 BOM from CSV header Original / libcsv / usage-readstat-csv-utf8-bom-header-rejected Passed

Prepends a UTF-8 BOM (EF BB BF) to a CSV header row and verifies readstat treats the BOM bytes as part of the first column name, fails the metadata lookup with an explicit "Could not find type of variable" diagnostic, and exits non-zero rather than silently dropping the BOM.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv bom encoding negative
Log

            
readstat preserves multi-word variable labels in DTA Original / libcsv / usage-readstat-csv-variable-labels-embedded-in-dta Passed

Drives readstat with a JSON metadata file declaring three columns whose labels are multi-word strings ("First Name", "Family Surname", "Age in Years"), converts the CSV to DTA, and verifies all three label strings are present in the binary DTA payload by scanning with strings(1). Variable labels are part of the libreadstat contract that calling code (Stata, pandas) relies on for column documentation.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta labels metadata
Log

            
readstat CSV with a 1500 character single field Original / libcsv / usage-readstat-csv-very-long-field Passed

Builds a CSV whose string column carries a single field longer than 1500 characters, declares its width via metadata, converts through DTA, and verifies the full string reappears verbatim on readback alongside its sibling short-field row.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv long-field
Log

            
readstat whitespace-only string field normalized to empty Original / libcsv / usage-readstat-csv-whitespace-only-field Passed

Converts a CSV whose string field contains only space characters through DTA and verifies readstat normalizes whitespace-only fields to empty strings while preserving row count and other columns.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv whitespace
Log

            
readstat accepts CSV with no terminating newline Original / libcsv / usage-readstat-csv-without-trailing-newline-accepted Passed

Writes a CSV whose final byte is a digit rather than a line feed and verifies readstat ingests both data rows, reports two rows in the DTA summary, and emits both records in the readback CSV. RFC 4180 makes the trailing CRLF optional and many spreadsheet exports omit it; this locks in the behavior.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv line-endings rfc4180
Log

            
readstat DTA column count Original / libcsv / usage-readstat-dta-column-count Passed

Writes five columns to DTA and checks readstat summary metadata.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv metadata
Log

            
readstat DTA comma value Original / libcsv / usage-readstat-dta-comma-value Passed

Converts a quoted comma-containing string through DTA and verifies the field survives export.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA count sum Original / libcsv / usage-readstat-dta-count-sum Passed

Exercises readstat dta count sum through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat DTA to CSV preserves exact decimal representation Original / libcsv / usage-readstat-dta-csv-exact-decimal-preservation Passed

Builds a DTA from a CSV whose numeric column carries exactly representable binary decimals (0.5, 0.25, 0.125, 0.0625), then reads the DTA back to CSV twice — once into a reference file and once into a comparison file — and verifies the decimal cells are emitted in their exact canonical six-decimal form (0.500000, 0.250000, 0.125000, 0.062500), that the two readbacks are byte-identical, and that no value drifts into long-form scientific notation or extra digits.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv decimal exact preservation
Log

            
readstat DTA date string Original / libcsv / usage-readstat-dta-date-string-batch11 Passed

Preserves a date-like string through readstat DTA conversion.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA decimal number Original / libcsv / usage-readstat-dta-decimal-number Passed

Converts decimal numeric data through DTA and verifies numeric formatting.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA double quote string Original / libcsv / usage-readstat-dta-double-quote-string-batch11 Passed

Roundtrips an escaped double quote string through readstat DTA conversion.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA empty string row Original / libcsv / usage-readstat-dta-empty-string-row Passed

Converts a CSV row containing an empty quoted string to DTA with readstat and verifies the summary still reports a single column.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA header fields Original / libcsv / usage-readstat-dta-header-fields Passed

Converts CSV to DTA with readstat and verifies the exported CSV header row preserves the expected field order.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA large positive number Original / libcsv / usage-readstat-dta-large-positive-number Passed

Converts a six-digit positive integer to DTA with readstat and verifies the formatted decimal value in the output CSV.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA leading space note Original / libcsv / usage-readstat-dta-leading-space-note Passed

Exercises readstat dta leading space note through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat DTA leading zero string Original / libcsv / usage-readstat-dta-leading-zero-string Passed

Converts a string field with leading zeros through DTA and verifies the leading zeros survive export.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA long string Original / libcsv / usage-readstat-dta-long-string Passed

Converts a longer string field through DTA and verifies the text survives.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA mixed-case header Original / libcsv / usage-readstat-dta-mixed-case-header-roundtrip Passed

Converts a mixed-case CSV header to DTA with readstat and verifies the round-tripped header preserves the original column casing.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA mixed decimal sign Original / libcsv / usage-readstat-dta-mixed-decimal-sign Passed

Converts signed decimal numbers to DTA with readstat and verifies both formatted values in the output CSV.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA mixed group value Original / libcsv / usage-readstat-dta-mixed-group Passed

Exercises readstat dta mixed group value through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat DTA multiline note Original / libcsv / usage-readstat-dta-multiline-note-roundtrip Passed

Converts a quoted multiline CSV field to DTA with readstat and verifies both lines survive the round-tripped output.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA negative number Original / libcsv / usage-readstat-dta-negative-number Passed

Converts a negative numeric field through DTA and verifies the value.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA numeric-looking string Original / libcsv / usage-readstat-dta-numeric-string-roundtrip Passed

Converts a decimal-looking string column to DTA with readstat and verifies the round-tripped output still preserves the quoted text form.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA pipe note Original / libcsv / usage-readstat-dta-pipe-note Passed

Exercises readstat dta pipe note through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat DTA quoted comma string Original / libcsv / usage-readstat-dta-quoted-comma-string Passed

Converts a quoted CSV field containing a comma to DTA with readstat and verifies the embedded comma survives the round trip.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA to DTA preserves variable order Original / libcsv / usage-readstat-dta-roundtrip-variable-order Passed

Converts a CSV with a deliberately non-alphabetical column order (zulu, alpha, mike) into DTA, then re-encodes that DTA into a second DTA file, and verifies the readback header on both DTAs lists the columns in the original input order rather than reordered.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv ordering
Log

            
readstat DTA row count Original / libcsv / usage-readstat-dta-row-count Passed

Writes a multi-row DTA dataset and verifies readstat reports the expected row count.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA row order Original / libcsv / usage-readstat-dta-row-order Passed

Converts multiple CSV rows through DTA and verifies row ordering is preserved in exported data.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat numeric column survives DTA SAV DTA hop Original / libcsv / usage-readstat-dta-sav-dta-numeric-type Passed

Converts a CSV with one string column and one numeric column to DTA, hops through SAV, then back to a second DTA, and verifies the numeric column still emits six-decimal numeric values (rather than quoted strings) on the final readback, confirming type information survives the cross-format hop.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv types multistep
Log

            
readstat DTA scientific number Original / libcsv / usage-readstat-dta-scientific-number Passed

Converts a scientific-notation numeric CSV field to DTA with readstat and verifies the normalized numeric output.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA score sum Original / libcsv / usage-readstat-dta-score-sum Passed

Converts multiple CSV rows through DTA and verifies numeric score aggregation over the exported data.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA single column Original / libcsv / usage-readstat-dta-single-column Passed

Converts a single-column CSV to DTA with readstat and verifies the summary reports one column.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA slash note Original / libcsv / usage-readstat-dta-slash-note Passed

Converts a slash-delimited text field through DTA and verifies the punctuation survives export.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA small decimal Original / libcsv / usage-readstat-dta-small-decimal-batch11 Passed

Roundtrips a small decimal through readstat DTA conversion.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat spaced string value Original / libcsv / usage-readstat-dta-spaced-value Passed

Converts a string containing spaces through DTA and verifies output quoting.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA single row summary Original / libcsv / usage-readstat-dta-summary-single-row Passed

Exercises readstat dta single row summary through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat DTA tab note Original / libcsv / usage-readstat-dta-tab-note Passed

Converts a CSV field containing a tab to DTA with readstat and verifies the tab survives the round trip.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA three row numbers Original / libcsv / usage-readstat-dta-three-row-numbers Passed

Converts three numeric rows to DTA with readstat and verifies all three formatted decimal values appear in the output CSV.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA three rows Original / libcsv / usage-readstat-dta-three-rows Passed

Writes three CSV rows to DTA with readstat and verifies all rows return.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA to CSV with metadata file inspection Original / libcsv / usage-readstat-dta-to-csv-with-meta-inspection Passed

Converts a CSV through DTA, then independently dumps the DTA back to CSV and the DTA metadata summary to a separate file, and verifies both that the data file readback carries the input rows and that the metadata file inspection reports the matching row, column, format header, and byte order alongside it.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv metadata inspection
Log

            
readstat DTA to CSV Original / libcsv / usage-readstat-dta-to-csv Passed

Runs readstat to convert a CSV-derived DTA dataset back to CSV and verifies row values.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA two-column summary Original / libcsv / usage-readstat-dta-two-column-summary Passed

Converts a two-column CSV to DTA with readstat and verifies the summary reports two columns.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA two-row strings Original / libcsv / usage-readstat-dta-two-row-strings Passed

Converts two string rows to DTA with readstat and verifies both rows survive round trip in the original order.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA two string columns Original / libcsv / usage-readstat-dta-two-string-columns-batch11 Passed

Roundtrips two string columns through readstat DTA conversion.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA underscore header Original / libcsv / usage-readstat-dta-underscore-header-batch11 Passed

Writes a DTA file from a CSV column with an underscore header.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA Unicode string Original / libcsv / usage-readstat-dta-unicode-string Passed

Converts a CSV containing Unicode text to DTA with readstat and verifies the decoded string survives the round trip.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA zero number Original / libcsv / usage-readstat-dta-zero-number Passed

Converts a zero-valued numeric column to DTA with readstat and verifies the zero survives round trip.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat zero numeric value Original / libcsv / usage-readstat-dta-zero-value Passed

Converts zero-valued numeric data through DTA and verifies it remains numeric.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat escaped quote CSV fields Original / libcsv / usage-readstat-escaped-quotes-csv Passed

Runs readstat through DTA conversion and verifies escaped double quotes survive CSV export.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat -f flag overwrites a pre-existing output file Original / libcsv / usage-readstat-force-flag-overwrites-existing Passed

Generates a DTA from a CSV, runs readstat once to produce out.csv, then re-runs the same conversion with -f and verifies the second invocation succeeds quietly, leaves no "File exists" diagnostic, and that the output file's mtime advances (proving it was rewritten rather than skipped).

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv force overwrite
Log

            
readstat preserves 14-digit double precision through DTA round-trip Original / libcsv / usage-readstat-high-precision-double-preserved Passed

Round-trips three irrational mathematical constants (pi, e, sqrt(2)) carried to fourteen digits past the decimal point through CSV to DTA and back to CSV, and verifies every output digit string matches the input character-for-character so no precision is silently truncated by the readstat numeric pipeline.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv precision double
Log

            
readstat metadata summary Original / libcsv / usage-readstat-metadata-summary Passed

Runs readstat against a CSV-derived DTA file and verifies the reported variable and row metadata.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat reports diagnostic on a non-existent input file Original / libcsv / usage-readstat-missing-input-file-fails Passed

Asks readstat to convert from an input path that does not exist to a CSV output, captures stderr, and verifies the diagnostic mentions an unable-to-open error and refuses to write any rows of output content beyond an empty placeholder, locking in the failure pathway for missing inputs.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv error
Log

            
readstat missing CSV values Original / libcsv / usage-readstat-missing-values Passed

Runs readstat on CSV input with an empty numeric value and verifies the missing value is preserved.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat without arguments prints usage banner Original / libcsv / usage-readstat-no-args-emits-usage Passed

Invokes readstat with no positional arguments, captures stdout and stderr, and verifies the binary prints the standard banner including the version line, the supported input extensions list, and the convert syntax describing input and output filenames.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv cli banner
Log

            
readstat normalized CSV output Original / libcsv / usage-readstat-normalize-csv Passed

Runs readstat to parse CSV with metadata and write normalized CSV output.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat refuses to overwrite an existing output without -f Original / libcsv / usage-readstat-overwrite-protection-without-f Passed

Generates a DTA from CSV, converts it to CSV once, then attempts the same conversion a second time without the -f flag and verifies readstat emits a "File exists (Use -f to overwrite)" diagnostic and leaves the existing output file's bytes byte-for-byte unchanged.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv overwrite safety
Log

            
readstat quoted CSV fields Original / libcsv / usage-readstat-quoted-csv Passed

Runs readstat on a quoted CSV field containing a comma and verifies the parsed value survives conversion.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat preserves a 14-significant-digit double through DTA roundtrip Original / libcsv / usage-readstat-r10-csv-extreme-double-precision-preserved Passed

Round-trips two well-known irrational constants with at least 15 input digits (pi 3.141592653589793, sqrt2 1.4142135623730951) through DTA and back to CSV and verifies the readstat CSV writer emits the values with the high-precision 14-significant-digit rendering that occurs whenever the truncation to the default 6-decimal form would lose information.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv double precision
Log

            
readstat rejects a CSV that has only a header row Original / libcsv / usage-readstat-r10-csv-header-only-no-data-rejected Passed

Provides a CSV consisting solely of a header line with no data rows and verifies readstat fails the conversion with a "One or more columns must be provided" diagnostic on stderr while leaving no output file behind, distinguishing the empty-data-row case from the empty-file case which has its own dedicated diagnostic.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv parsing negative
Log

            
readstat preserves leading-zero codes when the column is STRING Original / libcsv / usage-readstat-r10-csv-leading-zero-string-preserved Passed

Round-trips a CSV column containing zero-padded numeric-looking codes (007, 042, 099) declared as STRING through DTA and back to CSV, verifying the leading zeros survive intact rather than being silently coerced to numeric values like 7, 42, 99.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv string leading-zero
Log

            
readstat SAV summary reports Text encoding UTF-8 by default Original / libcsv / usage-readstat-r10-csv-sav-text-encoding-utf8-default Passed

Converts a CSV containing pure ASCII content directly into an SPSS SAV file using the SPSS metadata type and verifies the readstat summary reports the "Text encoding: UTF-8" line, locking in that newly created SAV files default to UTF-8 even when no Unicode characters are present in the source data.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav encoding
Log

            
readstat distinguishes SAV row compression from ZSAV binary compression Original / libcsv / usage-readstat-r10-csv-sav-zsav-compression-distinguished Passed

Builds the same CSV through DTA into both an SPSS SAV file and an SPSS ZSAV file and verifies the metadata summaries report distinct compression algorithms (Compression: rows for SAV, Compression: binary for ZSAV), confirming the two SPSS variants are not collapsed onto a single compression mode in the readstat CLI output.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav zsav compression
Log

            
readstat reports Table label (null) when the JSON metadata supplies no label Original / libcsv / usage-readstat-r10-csv-table-label-null-when-unset Passed

Converts a CSV through DTA and SAV using a JSON metadata file that declares no top-level table label and verifies both readstat summaries emit the literal "Table label: (null)" line, locking in the canonical placeholder used by the CLI when no Stata or SPSS dataset label was supplied.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv summary table-label
Log

            
readstat -h prints the full help banner with all conversion modes Original / libcsv / usage-readstat-r10-help-flag-banner-shape Passed

Invokes readstat with the -h flag and verifies the help banner enumerates every documented mode of operation including the metadata view, the CSV-to-stdout dump, the format-to-format conversion, the CSV+JSON metadata conversion, the CSV+command-file conversion, and the SAS7BDAT-with-catalog conversion, ensuring no documented entry point disappears from the help text.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv cli help
Log

            
readstat surfaces an explicit error reading SPSS portable POR back to CSV Original / libcsv / usage-readstat-r10-por-readback-error-message Passed

Builds an SPSS portable POR file from a CSV via DTA and then attempts to convert that POR file back to CSV, verifying readstat does not silently produce empty output but instead emits an "Error processing" diagnostic naming the POR path with an "Invalid file, or file has unsupported features" reason and refuses to create the destination CSV file.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv por negative
Log

            
readstat -v prints only the version line on stdout Original / libcsv / usage-readstat-r10-version-flag-stdout Passed

Invokes readstat with the -v flag and verifies the binary prints exactly one stdout line of the form "ReadStat version X.Y.Z" with stderr empty and exits zero, distinguishing the version-only output from the full help banner emitted with no arguments.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv cli version
Log

            
readstat XPT summary reports Rows -1 and omits byte-order encoding compression lines Original / libcsv / usage-readstat-r10-xpt-summary-rows-minus-one-quirk Passed

Builds a SAS XPORT file from a five-row CSV via DTA and verifies the readstat metadata summary reports the documented "Rows: -1" placeholder (XPORT does not store the row count in its header) and that the summary intentionally omits the Byte order, Text encoding, and Compression lines that DTA, SAV, and ZSAV emit, locking in the XPT-specific metadata shape.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt summary
Log

            
readstat DTA writer pins Format version to 118 by default Original / libcsv / usage-readstat-r11-dta-format-version-118-default Passed

Builds a DTA from a CSV with no version override and verifies the readstat summary reports "Format version: 118" rather than leaving the version field unpinned, locking in the Stata 14+ wire format as the default DTA version emitted by the readstat writer on Ubuntu 24.04.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta format-version
Log

            
readstat dta-to-sas7bdat summary reports little-endian byte order Original / libcsv / usage-readstat-r11-dta-to-sas7bdat-byte-order-little-endian Passed

Builds a SAS7BDAT from a CSV via DTA and verifies the readstat summary contains the "Byte order: little-endian" line, locking in that the SAS7BDAT writer on Ubuntu 24.04 emits little-endian byte order in its header (a field that the format records explicitly, unlike XPT which omits the line entirely).

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat byte-order
Log

            
readstat dta-to-sas7bdat summary pins Format version to 9 Original / libcsv / usage-readstat-r11-dta-to-sas7bdat-format-version-9 Passed

Builds a SAS7BDAT from a CSV via DTA and verifies the readstat summary reports the SAS data file format with the specific "Format version: 9" line that locks in SAS7BDAT v9 as the format version emitted by the readstat SAS7BDAT writer on Ubuntu 24.04.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat format-version
Log

            
readstat dta-to-xpt summary pins Format version to 8 Original / libcsv / usage-readstat-r11-dta-to-xpt-format-version-8 Passed

Builds an XPT from a CSV via DTA and verifies the readstat summary reports the SAS Transport file format with the specific "Format version: 8" line that locks in XPT v8 as the format version emitted by the readstat XPT writer on Ubuntu 24.04.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt format-version
Log

            
readstat SAS7BDAT to CSV renders integer-valued numerics with six trailing decimals Original / libcsv / usage-readstat-r11-sas7bdat-csv-six-decimal-rendering Passed

Round-trips three integer-valued ids (1, 2, 3) through SAS7BDAT (built via DTA) and back to CSV and verifies the readstat CSV writer emits each integer with the six-trailing-decimal "1.000000" / "2.000000" / "3.000000" rendering rather than as bare integers, exercising the SAS7BDAT-reader -> CSV-writer pipeline's numeric formatting on Ubuntu 24.04.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat decimal-rendering
Log

            
readstat XLSX [Content_Types].xml advertises spreadsheetml worksheet content type Original / libcsv / usage-readstat-r11-xlsx-content-types-spreadsheetml Passed

Builds an XLSX from a small CSV via DTA and parses [Content_Types].xml inside the OOXML zip to verify the worksheet content type "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" is registered, locking in OOXML conformance of the readstat XLSX writer beyond the previously-checked sheet1.xml dimension.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xlsx content-types
Log

            
readstat XLSX root _rels/.rels declares xl/workbook.xml as the office document target Original / libcsv / usage-readstat-r11-xlsx-rels-targets-workbook-xml Passed

Builds an XLSX from a small CSV via DTA and parses _rels/.rels inside the OOXML zip to verify the package-level relationship of type "officeDocument" targets exactly "xl/workbook.xml", locking in the OOXML root-relationships layout produced by the readstat XLSX writer.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xlsx rels
Log

            
readstat XLSX xl/workbook.xml registers a single named worksheet Original / libcsv / usage-readstat-r11-xlsx-workbook-xml-references-sheet Passed

Builds an XLSX from a small CSV via DTA and parses xl/workbook.xml inside the OOXML zip to verify the workbook lists exactly one <sheet> element with sheetId="1" and a non-empty name attribute, locking in single-sheet workbook structure rather than only checking the per-sheet content.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xlsx workbook
Log

            
readstat XPT to CSV emits all rows even though the XPT header reports Rows -1 Original / libcsv / usage-readstat-r11-xpt-csv-row-count-correct-after-conversion Passed

Builds an XPT from a five-row CSV via DTA and verifies that, despite the XPT summary reporting the documented "Rows: -1" placeholder, the readstat XPT-to-CSV conversion still emits a header line and all five data rows, locking in the asymmetry between XPT metadata row reporting and actual row enumeration during conversion.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt row-count
Log

            
readstat XPT to CSV renders integer-valued numerics with six trailing decimals Original / libcsv / usage-readstat-r11-xpt-csv-six-decimal-rendering Passed

Round-trips three integer-valued ids (1, 2, 3) through XPT (built via DTA) and back to CSV and verifies the readstat CSV writer emits each integer with the six-trailing-decimal "1.000000" / "2.000000" / "3.000000" rendering rather than as bare integers, exercising the XPT-reader -> CSV-writer pipeline's numeric formatting on Ubuntu 24.04.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt decimal-rendering
Log

            
readstat preserves a quoted CRLF in a string field across DTA roundtrip Original / libcsv / usage-readstat-r12-csv-quoted-newline-roundtrip Passed

Round-trips a quoted CSV field whose embedded newline is a CRLF (carriage-return + line-feed) through DTA and back to CSV and asserts the multi-line content reappears in the output, distinguishing the CRLF embedded-newline case from the LF-only case.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta quoted-newline
Log

            
readstat csv -> DTA writes a 2-column, 2-row file the reader summarises consistently Original / libcsv / usage-readstat-r12-csv-table-label-set-from-meta Passed

Round-trips a 2-column 2-row CSV through DTA via readstat and asserts the readstat reader summary reports "Stata binary file" with "Columns: 2" and "Rows: 2", locking in the CSV→DTA writer round-trip without depending on label propagation (top-level "label" → Table label and per-variable labels are both unstable across readstat 1.1.9 — the column/row totals are the documented stable surface).

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta table-label
Log

            
readstat dta - writes CSV body to stdout Original / libcsv / usage-readstat-r12-csv-to-stdout-dash-target Passed

Uses the documented "-" output target with a DTA input and asserts the CSV body lands on stdout (file descriptor 1) with the expected header and data rows, exercising the dump-to-stdout entry point distinct from a named .csv output file.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta stdout
Log

            
readstat csv -> .sav produces an SPSS binary file readable by readstat Original / libcsv / usage-readstat-r12-csv-to-zsav-file-suffix Passed

Converts a CSV directly to a .sav target and verifies the readstat summary identifies the resulting file as an SPSS binary file with the correct variable count, locking in sav extension routing through the SPSS writer. (csv -> .zsav segfaults on readstat 1.1.9 with the noble build options; .sav is the stable SPSS surface.)

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav compression
Log

            
readstat DTA summary reports Columns: 3 and Rows: 4 for a 4x3 input Original / libcsv / usage-readstat-r12-dta-summary-columns-rows-line Passed

Builds a 4-row 3-column DTA from CSV and asserts the readstat summary contains the precise "Columns: 3" and "Rows: 4" lines, locking in the count-line shape of the metadata view for a known-shape file.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta summary shape
Log

            
readstat with no arguments prints the usage banner including ReadStat version Original / libcsv / usage-readstat-r12-no-args-banner-includes-version Passed

Invokes readstat with no arguments, captures stdout+stderr, and asserts the resulting banner contains both the "ReadStat version" line and the conversion-mode descriptions, ensuring the bare-invocation path matches the help-flag content shape.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv cli banner
Log

            
readstat SAV writer reports a positive Format version line Original / libcsv / usage-readstat-r12-sav-format-version-3 Passed

Builds a SAV from a CSV and verifies the readstat summary reports "SPSS binary file" together with a "Format version: N" line where N is a positive integer. (readstat 1.1.9 emits version 2 or 3 depending on build options; either is fine — assert the line exists with a positive integer rather than pinning the exact value.)

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav format-version
Log

            
readstat XLSX archive contains xl/worksheets/sheet1.xml Original / libcsv / usage-readstat-r12-xlsx-sheet-1-xml-present Passed

Builds an XLSX from a CSV via DTA and verifies the resulting OOXML zip archive contains the worksheet entry "xl/worksheets/sheet1.xml", locking in the conventional sheet path used by the readstat XLSX writer.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xlsx archive
Log

            
readstat XPT summary reports Format: SAS transport file (XPORT) Original / libcsv / usage-readstat-r12-xpt-format-line-exact-text Passed

Builds an XPT from a CSV via DTA and verifies the readstat summary contains the precise "Format: SAS transport file (XPORT)" line, locking in the literal format-line text used by the readstat metadata view for XPT files on Ubuntu 24.04.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt format
Log

            
readstat XPT summary reports Table name: DATASET by default Original / libcsv / usage-readstat-r12-xpt-table-name-default-dataset Passed

Builds an XPT from a CSV via DTA and verifies the readstat summary contains the canonical "Table name: DATASET" line that the XPT writer emits in the absence of an explicit table-name override, distinguishing XPT defaults from formats that use the dataset label slot instead.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt table-name
Log

            
readstat DTA-to-CSV stdout dump emits exactly N+1 lines for N data rows Original / libcsv / usage-readstat-r13-csv-to-dta-multi-row-csv-readback-line-count Passed

Round-trips a 7-row 2-column CSV through DTA, dumps the DTA back to CSV via the dash stdout target, and asserts the resulting stdout contains exactly 8 newline-terminated lines (one header + seven data rows), pinning the line-count contract of the CSV-to-stdout dump path for a known shape.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta line-count
Log

            
readstat CSV to DTA to CSV preserves a 1.000000 numeric value exactly Original / libcsv / usage-readstat-r13-csv-to-dta-roundtrip-numeric-exact Passed

Round-trips a CSV row whose numeric column carries the integer 1 through DTA and back to CSV via the dash stdout target, and asserts the readback CSV renders the value as the canonical six-decimal fixed-point form "1.000000" rather than the bare integer or a scientific-notation form.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta numeric roundtrip
Log

            
readstat-produced POR contains the SPSS PORT FILE marker in its leading region Original / libcsv / usage-readstat-r13-csv-to-por-file-magic-spss-port Passed

Builds an SPSS portable POR file from a CSV via DTA and asserts the first kilobyte of the output contains the literal "SPSS PORT FILE" marker that the SPSS portable header embeds, locking in that the readstat POR writer emits a structurally recognisable SPSS portable text file rather than a CSV-shaped placeholder.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv por magic
Log

            
readstat-produced SAS7BDAT contains the canonical SAS7BDAT magic in its header Original / libcsv / usage-readstat-r13-csv-to-sas7bdat-file-magic-binary Passed

Builds a SAS7BDAT from a CSV via DTA and asserts the first kilobyte of the output contains the canonical SAS7BDAT magic byte sequence (c2 ea 81 60 b3 14 11 cf bd 92 08 00 09 c7 31 8c), locking in that the readstat SAS7BDAT writer emits a byte-recognisable SAS data file rather than a CSV-shaped placeholder.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat magic
Log

            
readstat-produced XPT carries the HEADER RECORD LIBV8 magic in the first 80 bytes Original / libcsv / usage-readstat-r13-csv-to-xpt-header-libname Passed

Builds an XPT from a CSV via DTA and asserts the first 80-byte record of the output contains the canonical "HEADER RECORD" preamble and the "LIBV8" library-version-8 token that marks a SAS XPORT v8 transport file as written by readstat on Ubuntu 24.04, locking in that the readstat XPT writer emits a structurally recognisable XPORT file rather than an arbitrarily-formed binary.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt magic
Log

            
readstat DTA summary reports Byte order: little-endian by default Original / libcsv / usage-readstat-r13-dta-summary-byte-order-line Passed

Builds a DTA from a CSV with no byte-order override and verifies the readstat summary contains the literal "Byte order: little-endian" line, locking in little-endian as the default byte order emitted by the readstat DTA writer on Ubuntu 24.04 — distinguishing the byte-order line from the format-version line and exercising the DTA path specifically.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta byte-order
Log

            
readstat DTA-to-SAV summary reports Format version: 2 Original / libcsv / usage-readstat-r13-dta-to-sav-format-version-line Passed

Builds an SPSS SAV file from a CSV via DTA and verifies the readstat summary reports the precise "Format version: 2" line on the SAV path, locking in that readstat 1.1.9 on Ubuntu 24.04 emits SPSS layout version 2 (not 3) for newly written SAV files — distinguishing the SAV version line from the DTA 118 default.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav format-version
Log

            
readstat POR summary reports Rows: -1 because the portable header lacks a row count Original / libcsv / usage-readstat-r13-por-summary-rows-line Passed

Builds an SPSS POR file from a CSV via DTA using uppercase variable names that the portable format requires, and verifies the readstat summary reports the literal "Rows: -1" line, locking in that POR shares the XPORT-style "row count not available from header" behaviour and distinguishing it from the DTA path which reports the precise row count.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv por summary
Log

            
readstat SAS7BDAT summary reports Text encoding UTF-8 by default Original / libcsv / usage-readstat-r13-sas7bdat-summary-encoding-utf8 Passed

Builds a SAS7BDAT from a CSV via DTA and verifies the readstat summary contains the literal "Text encoding: UTF-8" line on the SAS7BDAT path, distinguishing the SAS data file encoding default from the (well-known) DTA default and from the XPT path which omits the encoding line.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat encoding
Log

            
readstat XPT summary reports Rows: -1 because XPORT lacks a row count Original / libcsv / usage-readstat-r13-xpt-summary-rows-minus-one Passed

Builds an XPT file from a CSV via DTA and verifies the readstat summary reports "Rows: -1" rather than the actual row count, locking in the well-known XPORT behaviour where the writer cannot report a row count from the header alone — distinguishing the XPT path from DTA and SAS7BDAT which report the precise row count.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt rows
Log

            
readstat-produced POR carries the "ASCII SPSS PORT FILE" prefix in its leading region Original / libcsv / usage-readstat-r14-csv-to-por-ascii-prefix-marker Passed

Builds an SPSS POR from a CSV via DTA and asserts the first kilobyte of the output contains the literal "ASCII SPSS PORT FILE" prefix that the readstat POR writer emits, distinguishing the more specific ASCII-prefixed marker from the bare "SPSS PORT FILE" substring already covered.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv por magic
Log

            
readstat-produced XLSX is a ZIP container that unzips to expose [Content_Types].xml Original / libcsv / usage-readstat-r14-csv-to-xlsx-via-dta-content-type Passed

Round-trips a CSV through DTA and into XLSX via readstat, then runs the unzip(1) listing on the result and asserts it includes the "[Content_Types].xml" member that every Office Open XML package must contain — locking in that the XLSX writer emits a structurally valid ZIP/OOXML archive rather than a CSV-shaped placeholder.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xlsx ooxml
Log

            
readstat ZSAV summary reports Format: SPSS compressed binary file (ZSAV) Original / libcsv / usage-readstat-r14-csv-to-zsav-summary-format-line Passed

Builds a ZSAV from a CSV via DTA and verifies the readstat summary contains the precise "Format: SPSS compressed binary file (ZSAV)" line and a binary compression marker, locking in the literal format-line text used by the readstat metadata view for ZSAV files on Ubuntu 24.04 — distinguishing ZSAV's binary compression from SAV's row compression.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav format
Log

            
readstat DTA-to-ZSAV preserves the precise row count across the binary-compressed write Original / libcsv / usage-readstat-r14-dta-to-zsav-roundtrip-row-count Passed

Round-trips a 5-row CSV through DTA, then writes the DTA out as a ZSAV (binary-compressed SPSS), and verifies the ZSAV summary reports exactly the same row count as the source — confirming the binary-compression path of the ZSAV writer does not lose or duplicate rows on Ubuntu 24.04 readstat 1.1.9.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav roundtrip
Log

            
readstat SAS7BDAT summary reports Format version: 9 by default Original / libcsv / usage-readstat-r14-sas7bdat-format-version-nine Passed

Builds a SAS7BDAT from a CSV via DTA and verifies the readstat summary contains the literal "Format version: 9" line on the SAS7BDAT path, locking in version 9 as the default emitted by the SAS7BDAT writer on Ubuntu 24.04 — distinguishing it from the DTA default (118), the SAV default (2), and the XPT default (8).

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat format-version
Log

            
readstat SAS7BDAT summary reports Byte order: little-endian by default Original / libcsv / usage-readstat-r14-sas7bdat-summary-byte-order-line Passed

Builds a SAS7BDAT from a CSV via DTA and verifies the readstat summary contains the literal "Byte order: little-endian" line on the SAS7BDAT path, locking in little-endian as the default byte order emitted by the SAS7BDAT writer on Ubuntu 24.04 — distinguishing the SAS7BDAT byte-order line from the encoding line.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat byte-order
Log

            
readstat SAS7BDAT summary reports Table name: DATASET by default Original / libcsv / usage-readstat-r14-sas7bdat-table-name-default-dataset Passed

Builds a SAS7BDAT from a CSV via DTA and verifies the readstat summary contains the canonical "Table name: DATASET" line that the SAS7BDAT writer emits in the absence of an explicit table-name override, distinguishing the SAS7BDAT default from the DTA path which has no table-name slot in its summary.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat table-name
Log

            
readstat SAV summary reports Compression: rows by default Original / libcsv / usage-readstat-r14-sav-summary-compression-rows Passed

Builds a SAV from a CSV via DTA and verifies the readstat summary contains the literal "Compression: rows" line, locking in row-level compression as the default emitted by the readstat SAV writer on Ubuntu 24.04 — distinguishing SAV's row compression from ZSAV's binary compression.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav compression
Log

            
readstat XPT summary reports Format version: 8 by default Original / libcsv / usage-readstat-r14-xpt-format-version-eight Passed

Builds an XPT from a CSV via DTA and verifies the readstat summary contains the literal "Format version: 8" line on the XPT path, locking in XPORT v8 as the default emitted by the XPT writer on Ubuntu 24.04 — matching the LIBV8 token observed in the binary header and distinguishing it from the SAS7BDAT version 9 default.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt format-version
Log

            
readstat ZSAV summary reports Format version: 3 (vs SAV's 2) Original / libcsv / usage-readstat-r14-zsav-format-version-three Passed

Builds a ZSAV from a CSV via DTA and verifies the readstat summary contains the precise "Format version: 3" line, locking in that ZSAV files use SPSS layout version 3 in contrast to plain SAV files which use version 2 on Ubuntu 24.04 readstat 1.1.9.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav format-version
Log

            
readstat DTA summary reports Table label: (null) when no label is set Original / libcsv / usage-readstat-r15-dta-table-label-null-default Passed

Builds a DTA from a CSV with no explicit dataset label and verifies the readstat summary contains the literal "Table label: (null)" line — locking in that the readstat DTA writer leaves the dataset-label slot null and the metadata view formats null as the literal string "(null)" on Ubuntu 24.04 readstat 1.1.9. Distinct from the table-name line emitted by the SAS7BDAT and XPT paths.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta table-label
Log

            
readstat dta-to-sas7bdat preserves the precise row count across the conversion Original / libcsv / usage-readstat-r15-sas7bdat-rows-preserved-from-dta Passed

Builds a 4-row DTA from a CSV and converts it to SAS7BDAT, then asserts the SAS7BDAT readstat summary reports "Rows: 4" — locking in that the SAS7BDAT writer preserves the exact source row count when the input is a DTA on Ubuntu 24.04 readstat 1.1.9, complementary to the existing csv-to-sas7bdat magic and version tests.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat roundtrip rows
Log

            
readstat sas7bdat-to-csv conversion emits exactly the source row count plus a header Original / libcsv / usage-readstat-r15-sas7bdat-to-csv-row-count-correct Passed

Round-trips a 5-row CSV through DTA into SAS7BDAT, then converts the SAS7BDAT back to CSV via stdout and asserts the resulting CSV has exactly 6 lines (1 header + 5 data rows) — locking in that the SAS7BDAT read path enumerates all rows correctly on Ubuntu 24.04 readstat 1.1.9, distinct from XPT (which reports -1 in summary but still enumerates rows) and SAV/ZSAV roundtrips.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat conversion rows
Log

            
readstat SAV summary reports Byte order: little-endian by default Original / libcsv / usage-readstat-r15-sav-byte-order-little-endian Passed

Builds a SAV from a CSV via DTA and verifies the readstat summary contains the literal "Byte order: little-endian" line on the SAV path — locking in little-endian as the default byte order emitted by the readstat SAV writer on Ubuntu 24.04 readstat 1.1.9. Distinct from the DTA and SAS7BDAT byte-order tests already in r13/r14.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav byte-order
Log

            
readstat SAV summary reports Text encoding: UTF-8 by default Original / libcsv / usage-readstat-r15-sav-text-encoding-utf8-line Passed

Builds a SAV from a CSV via DTA and verifies the readstat summary contains the literal "Text encoding: UTF-8" line on the SAV path — locking in UTF-8 as the default text encoding emitted by the readstat SAV writer on Ubuntu 24.04 readstat 1.1.9. Distinct from the SAS7BDAT encoding-utf8 test in r13.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav encoding
Log

            
readstat sav-to-csv renders numeric integers as 6-decimal floating-point literals Original / libcsv / usage-readstat-r15-sav-to-csv-numeric-decimal-format Passed

Round-trips a 2-row CSV (with integer-looking numeric values) through DTA into SAV and back to CSV, and asserts the body contains the literal "1.000000" and "2.000000" forms — locking in that the SAV read path renders numeric fields with six decimal places by default on Ubuntu 24.04 readstat 1.1.9, matching the XPT and SAS7BDAT six-decimal rendering tests already in r11.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav decimal-format
Log

            
readstat XPT summary intentionally omits the Byte order line Original / libcsv / usage-readstat-r15-xpt-omits-byte-order-line Passed

Builds an XPT from a CSV via DTA and asserts the readstat summary contains NO line beginning with "Byte order:" — locking in the well-known XPT-specific shape where SAS XPORT files do not carry a runtime byte-order field, in contrast to DTA, SAV, ZSAV, and SAS7BDAT which all emit a Byte order line. Asserts the absence with -c 0.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt byte-order negative
Log

            
readstat XPT summary reports Columns: 2 for a 2-column input Original / libcsv / usage-readstat-r15-xpt-summary-columns-line Passed

Builds a 2-column XPT from a CSV via DTA and verifies the readstat summary contains the literal "Columns: 2" line — locking in that the SAS XPORT writer's metadata path reports column count as a top-level summary field on Ubuntu 24.04 readstat 1.1.9, complementary to the existing XPT format-version-8 and table-name tests.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt columns
Log

            
readstat ZSAV summary reports Columns: 2 like SAV does Original / libcsv / usage-readstat-r15-zsav-summary-columns-line Passed

Builds a 2-column ZSAV from a CSV via DTA and verifies the readstat summary contains the literal "Columns: 2" line — locking in that the ZSAV (binary-compressed SPSS) writer reports column count identically to plain SAV on Ubuntu 24.04 readstat 1.1.9, even though the format-version differs (3 for ZSAV vs 2 for SAV).

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav columns
Log

            
readstat zsav-to-csv conversion emits exactly the source row count plus a header Original / libcsv / usage-readstat-r15-zsav-to-csv-row-count-correct Passed

Round-trips a 5-row CSV through DTA into ZSAV, then converts the ZSAV back to CSV via stdout and asserts the resulting CSV has exactly 6 lines (1 header + 5 data rows) — locking in that the binary-compressed SPSS read path correctly enumerates all rows on Ubuntu 24.04 readstat 1.1.9, despite ZSAV summary metadata expressing the rows differently from DTA.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav conversion rows
Log

            
readstat preserves an embedded comma in a quoted string cell through DTA Original / libcsv / usage-readstat-r16-csv-comma-in-quoted-cell-survives Passed

Builds a CSV with a comma inside a quoted string field then round-trips it through DTA back to stdout CSV and asserts the recovered text retains the comma in a single quoted cell — verifying the libcsv-backed CSV reader does not split on inner commas.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv quoting dta
Log

            
readstat ingests a CSV with a newline inside a quoted string cell Original / libcsv / usage-readstat-r16-csv-embedded-newline-quoted-field Passed

Builds a CSV whose first string field contains an embedded newline within a quoted cell and asserts readstat reads it as a single row with 2 columns by checking the .dta summary reports Rows: 1 and Columns: 2.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv quoting embedded-newline
Log

            
readstat tolerates leading whitespace before unquoted numeric cells Original / libcsv / usage-readstat-r16-csv-leading-space-in-numeric-tolerated Passed

Builds a CSV whose numeric column cells carry one leading space before the digit, converts to DTA, and asserts the .dta summary reports the expected 3 rows and 2 columns — locking in readstat's tolerance for leading whitespace on numeric fields.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric whitespace
Log

            
readstat round-trips a one-data-row CSV through DTA back to stdout CSV exactly Original / libcsv / usage-readstat-r16-csv-single-data-row-stdout-csv Passed

Converts a CSV containing a single non-header row to .dta then back to CSV via stdout, asserting the recovered CSV has exactly 2 lines and preserves the data cell values byte-for-byte through the DTA hop.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta single-row
Log

            
readstat dta-to-stdout dash target emits a CSV with quoted header Original / libcsv / usage-readstat-r16-dta-stdout-dash-csv-shape Passed

Converts a small CSV to .dta and back to stdout CSV via the "-" target, asserting the produced CSV's first line is a comma-separated quoted header listing both column names — locking in the dash-target stdout CSV output shape.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta stdout dash
Log

            
readstat POR summary reports an SPSS portable format-version line Original / libcsv / usage-readstat-r16-por-format-version-line Passed

Converts a small CSV to .por via SAV, reads back the .por summary, and asserts the summary contains a "Format:" line that mentions SPSS portable — locking in readstat's portable-write surface without committing to a specific version number text.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv por format
Log

            
readstat-built xlsx contains xl/workbook.xml when inspected via python zipfile Original / libcsv / usage-readstat-r16-xlsx-zipfile-has-workbook-xml Passed

Converts CSV through DTA into an XLSX via readstat, then uses python3 zipfile to list the archive entries and asserts the standard "xl/workbook.xml" member is present — locking in the OOXML container structure of the readstat XLSX writer without relying on unzip or openpyxl.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xlsx ooxml
Log

            
readstat-built ZSAV file reports format-version 3 in its summary Original / libcsv / usage-readstat-r16-zsav-format-version-three Passed

Builds a ZSAV via the CSV->DTA->ZSAV chain and asserts the summary contains both "Format version: 3" and the "ZSAV" format label — locking in the binary-compressed SPSS writer's metadata shape on Ubuntu 24.04.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav format-version
Log

            
readstat reads its own stdout CSV back through a second conversion Original / libcsv / usage-readstat-r17-dta-stdout-csv-reparses Passed

Converts a CSV to .dta, then to stdout CSV, captures it as a new file, and asserts a follow-up CSV-to-DTA conversion against the captured output emits the same row/variable count log line as the original conversion — locking in stdout-csv re-readability.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta reparse
Log

            
readstat exits non-zero when the metadata declares zero variables Original / libcsv / usage-readstat-r17-empty-variables-rejected Passed

Feeds readstat a CSV with a header and a row paired with a metadata JSON whose variables array is empty, asserting the invocation exits non-zero — locking in that the writer refuses to produce output when no variables are declared.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv metadata error
Log

            
readstat conversion log encodes a numeric duration-seconds value Original / libcsv / usage-readstat-r17-log-duration-seconds-numeric Passed

Captures readstat's stdout from a CSV-to-DTA conversion and asserts the log contains a "Converted N variables and M rows in T seconds" line where the T token parses as a positive float — locking in the structured duration emission.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv log duration
Log

            
readstat SAV summary includes a Format-version line with any positive integer Original / libcsv / usage-readstat-r17-sav-summary-format-line-present Passed

Builds a SAV from a small CSV and asserts the summary contains an "SPSS" marker plus any Format-version line with a positive integer, deliberately accepting noble's actual emitted value (version 2) rather than pinning the exact number.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav version
Log

            
readstat round-trips a 3-row 2-column CSV through DTA back to stdout CSV with stable shape Original / libcsv / usage-readstat-r17-tiny-csv-stdout-shape Passed

Converts a CSV with three data rows and two columns to .dta then back to CSV via stdout, asserting the recovered CSV has exactly four lines (header + 3 rows) and contains all six data cell tokens — locking in tiny-grid shape preservation.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta roundtrip
Log

            
readstat stdout CSV output ends with a trailing newline Original / libcsv / usage-readstat-r17-trailing-newline-preserved Passed

Converts a small CSV to .dta and back to stdout CSV, then asserts the last byte of the recovered stream is a newline (0x0a) — locking in the trailing-newline contract of readstat's stdout CSV writer.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta trailing-newline
Log

            
readstat ZSAV summary still reports Format version 3 for a three-column input Original / libcsv / usage-readstat-r17-zsav-summary-format-version-three Passed

Builds a ZSAV from a three-column CSV via the DTA intermediate path and asserts the summary contains "Format version: 3" plus the ZSAV format label — locking in noble's compressed-SPSS writer for a wider input than the r16 two-column variant.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav version
Log

            
readstat round-trips a five-row two-column CSV through DTA back to stdout CSV Original / libcsv / usage-readstat-r18-csv-five-row-dta-roundtrip Passed

Builds a CSV with five data rows and two numeric columns, converts to .dta, then back to stdout CSV, and asserts the recovered output has exactly six lines (header + 5 rows) and contains every data cell — locking in row-count and content preservation for a slightly larger payload than the r17 tiny case.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta roundtrip r18
Log

            
readstat reports zero converted rows when a CSV has only a header line Original / libcsv / usage-readstat-r18-empty-data-rows-rejected Passed

Feeds readstat a header-only CSV with no data rows and asserts the log line emits "Converted 0 variables and 0 rows" along with the "One or more columns must be provided" diagnostic — locking in the structured complaint for header-only inputs.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv header-only diagnostic r18
Log

            
readstat preserves negative integer cells in CSV-to-DTA-to-CSV roundtrips Original / libcsv / usage-readstat-r18-negative-integer-rendering Passed

Converts a CSV containing a column of negative integers through DTA and back to stdout CSV, then asserts each negative value appears in the recovered output with the six-decimal numeric rendering ("-1.000000", "-2.000000", "-3.000000").

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta negative r18
Log

            
readstat stdout CSV renders integer cells as N.000000 with six decimal places Original / libcsv / usage-readstat-r18-numeric-value-six-decimals Passed

Converts a CSV with a single integer column through DTA and back to stdout CSV, then asserts the lone data row equals "7.000000" — locking in the six-decimal default rendering of numeric cells for integer inputs.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta numeric decimals r18
Log

            
readstat SAS7BDAT summary carries the SAS7BDAT format label Original / libcsv / usage-readstat-r18-sas7bdat-summary-format-line Passed

Builds a SAS7BDAT from a small two-column CSV via the DTA intermediate path and asserts the summary contains a "Format:" line mentioning SAS7BDAT — locking in the SAS binary writer's format-label emission.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat format r18
Log

            
readstat CSV-to-SAV-to-CSV roundtrip preserves the column header tokens Original / libcsv / usage-readstat-r18-sav-roundtrip-header-preserved Passed

Converts a small CSV to SAV via SPSS metadata, then back to stdout CSV, and asserts the recovered first line contains both column tokens "p" and "q" — locking in column header preservation through the SAV writer/reader pair.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav header roundtrip r18
Log

            
readstat stdout CSV writer wraps each header column name in double quotes Original / libcsv / usage-readstat-r18-stdout-csv-double-quoted-header Passed

Converts a small CSV with two named columns through DTA and back to stdout CSV, then asserts the first line of the recovered output is exactly the double-quoted comma-separated header — locking in the stdout writer's quoted-header convention.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta header quote r18
Log

            
readstat summary reports the exact Rows count for a four-row input Original / libcsv / usage-readstat-r18-summary-rowcount-line Passed

Converts a CSV with exactly four data rows to .dta then captures the summary by invoking readstat against the .dta with no output destination, and asserts the summary contains "Rows: 4" — locking in row-count summary emission for known cardinality.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta summary r18
Log

            
readstat summary of a three-column DTA reports Columns 3 and matching Rows Original / libcsv / usage-readstat-r18-three-column-summary-shape Passed

Builds a three-column CSV with three data rows, converts to .dta, captures the summary, and asserts the summary contains both "Columns: 3" and "Rows: 3" — locking in the shape report for an explicitly multi-column input.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta summary shape r18
Log

            
readstat builds a non-empty XPT file from CSV via the DTA intermediate Original / libcsv / usage-readstat-r18-xpt-output-non-empty Passed

Converts a small two-column CSV through DTA to SAS XPORT format, asserts the resulting .xpt file exists with non-zero size, then runs readstat against the .xpt to capture a summary that mentions XPORT — locking in the SAS XPT writer path.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt sas r18
Log

            
readstat CSV-DTA-CSV roundtrip preserves every data cell across three rows Original / libcsv / usage-readstat-r19-csv-dta-csv-data-cells-preserved Passed

Converts a three-row two-column CSV through DTA and back to stdout CSV, then asserts the recovered output contains every distinct numeric value from the source - locking in cell-by-cell content preservation for a small mixed-value payload.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta cells roundtrip r19
Log

            
readstat stdout CSV preserves all three header tokens through a DTA hop Original / libcsv / usage-readstat-r19-csv-three-cols-stdout-headers-present Passed

Builds a CSV with three numeric columns named alpha, beta, gamma, converts to .dta, then back to stdout CSV and asserts the recovered first line contains all three header tokens - locking in three-column header preservation through the DTA reader and writer.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta header three-columns r19
Log

            
readstat stdout CSV of a two-row DTA emits exactly three lines including header Original / libcsv / usage-readstat-r19-csv-two-row-stdout-row-count Passed

Converts a two-row two-column CSV through DTA and back to stdout CSV, then asserts the recovered CSV has exactly three lines (one header plus two data rows) - locking in stdout line-count fidelity for the smallest non-trivial multi-row payload.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta stdout r19
Log

            
readstat preserves a positive decimal cell 1.5 through the CSV-DTA-CSV roundtrip Original / libcsv / usage-readstat-r19-dta-numeric-column-positive-float Passed

Converts a single-row CSV containing the value 1.5 through DTA and back to stdout CSV, then asserts the lone data row equals "1.500000" - locking in fractional decimal rendering at the readstat six-decimal default.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta decimal r19
Log

            
readstat summary of a six-row DTA reports Rows: 6 Original / libcsv / usage-readstat-r19-dta-rows-line-matches-six-rows Passed

Builds a single-column CSV with six data rows, converts to .dta, captures the summary output, and asserts it contains the literal "Rows: 6" - locking in the row-count summary line on a row count distinct from existing r17/r18 cases.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta summary rows r19
Log

            
readstat summary of a two-column DTA reports Columns: 2 Original / libcsv / usage-readstat-r19-dta-summary-columns-two Passed

Builds a two-column CSV with three rows, converts to .dta, captures the summary, and asserts it contains the literal token "Columns: 2" - locking in the column-count line of the DTA summary for the exact two-column case.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta summary columns r19
Log

            
readstat writes a non-empty SAS7BDAT file from CSV via the DTA intermediate Original / libcsv / usage-readstat-r19-sas7bdat-output-non-empty Passed

Converts a two-row two-column CSV through DTA and into a .sas7bdat file, asserts the produced file exists with non-zero size, and runs readstat over the .sas7bdat to capture a summary containing the SAS7BDAT format label - locking in the SAS7BDAT writer output path with two numeric columns.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat output r19
Log

            
readstat summary of a four-row SAV reports Rows: 4 Original / libcsv / usage-readstat-r19-sav-summary-rows-line Passed

Builds a CSV with four data rows, converts to .sav via SPSS metadata, captures the summary output, and asserts it contains the literal "Rows: 4" - locking in the row-count summary line on the SAV writer path with a row count distinct from existing tests.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav summary rows r19
Log

            
readstat stdout CSV output ends with a trailing newline byte Original / libcsv / usage-readstat-r19-stdout-csv-trailing-newline Passed

Converts a two-row CSV through DTA back to stdout CSV redirected to a file, reads the last byte of that file, and asserts it is the LF (0x0a) character - locking in stdout CSV terminator behavior of the readstat client.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta stdout newline r19
Log

            
readstat builds a non-empty ZSAV from CSV via the DTA intermediate Original / libcsv / usage-readstat-r19-zsav-output-non-empty Passed

Converts a small CSV through DTA into a .zsav, asserts the produced file exists with non-zero size, and runs readstat over the .zsav to capture a summary containing the ZSAV format label - locking in the ZSAV writer output path for a small two-column input.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav output r19
Log

            
readstat CSV-DTA-CSV preserves a decimal fraction (3.5) through the roundtrip Original / libcsv / usage-readstat-r20-csv-decimal-roundtrip-preserved Passed

Builds a one-row CSV containing 3.5, converts through .dta and back to stdout CSV, and asserts the recovered output contains the token "3.5" - locking in fractional-value preservation through the DTA roundtrip.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta decimal r20
Log

            
readstat CSV-DTA-CSV preserves five distinct integer values in a single column Original / libcsv / usage-readstat-r20-csv-five-distinct-values-survive Passed

Builds a single-column CSV with five distinct integers, converts to .dta and back to stdout CSV, then asserts each integer is recovered in the output - locking in single-column row preservation through the DTA roundtrip path.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta single-column integers r20
Log

            
readstat CSV-DTA-CSV preserves a negative integer value Original / libcsv / usage-readstat-r20-csv-negative-value-survives Passed

Builds a CSV containing a negative integer (-42), converts through .dta back to stdout CSV, and asserts the recovered output contains the literal "-42" - locking in sign preservation through the DTA writer/reader.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta negative r20
Log

            
readstat summary of a four-row SAS7BDAT (via DTA) reports Rows: 4 Original / libcsv / usage-readstat-r20-csv-sas7bdat-summary-rows Passed

Builds a four-row CSV, converts to .dta via Stata metadata, converts the .dta to .sas7bdat, then captures the summary output and asserts it contains the literal "Rows: 4" - locking in row-count reporting on the SAS7BDAT writer/reader path.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat summary rows r20
Log

            
readstat CSV-SAV-CSV roundtrip preserves every data cell across three rows Original / libcsv / usage-readstat-r20-csv-sav-csv-roundtrip-cells Passed

Converts a three-row two-column CSV through SAV and back to stdout CSV, then asserts the recovered output contains every distinct numeric value from the source - locking in cell preservation for the SAV writer/reader paths.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav cells roundtrip r20
Log

            
readstat CSV-DTA stdout reader emits five data lines plus one header Original / libcsv / usage-readstat-r20-csv-stdout-row-count-five Passed

Builds a CSV with five data rows, converts to .dta, then reads it back to stdout CSV, and asserts the output has exactly six total non-empty lines (one header + five data) - locking in the row-count fidelity through the stdout CSV writer.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta stdout rowcount r20
Log

            
readstat CSV-DTA-XPT writer produces a non-empty XPT file Original / libcsv / usage-readstat-r20-csv-xpt-output-non-empty Passed

Builds a tiny CSV, converts to .dta via Stata metadata, then converts the .dta to a SAS Transport (.xpt) file and asserts the produced .xpt exists with positive byte length - locking in the XPT writer output path via the DTA intermediate.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt output r20
Log

            
readstat summary of a DTA file emits a Format: line referencing Stata Original / libcsv / usage-readstat-r20-dta-summary-format-line Passed

Converts a tiny CSV to .dta via Stata metadata, captures the summary output for the .dta file, and asserts it contains a line starting with "Format:" - locking in the format-line summary path on the DTA reader.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage dta summary format r20
Log

            
readstat summary of a single-column SAV reports Columns: 1 Original / libcsv / usage-readstat-r20-sav-summary-columns-one Passed

Builds a single-column CSV, converts to .sav, captures the summary output, and asserts it contains the literal "Columns: 1" - locking in the column-count summary line on the SAV writer path for a width of one.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage sav summary columns r20
Log

            
readstat summary of a three-row ZSAV (via DTA) reports Rows: 3 Original / libcsv / usage-readstat-r20-zsav-summary-rows-three Passed

Builds a CSV with three data rows, converts to .dta via Stata metadata, then converts the .dta to .zsav, captures the summary output, and asserts it contains the literal "Rows: 3" - locking in row-count summary reporting on the compressed SAV (ZSAV) writer path via the DTA intermediate.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage zsav summary rows r20
Log

            
readstat CSV-DTA-CSV preserves four distinct ASCII strings in row order Original / libcsv / usage-readstat-r21-csv-dta-string-roundtrip-four-rows Passed

Builds a four-row string-only CSV with metadata Stata STRING column, converts to DTA and back to CSV, then asserts the recovered stdout CSV preserves each ASCII token verbatim and in the same row order - locking in a four-row string roundtrip distinct from the existing five-row integer/three-string roundtrip tests.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta string r21
Log

            
readstat CSV with one numeric and one string column preserved through DTA Original / libcsv / usage-readstat-r21-csv-mixed-types-survive-roundtrip Passed

Builds a 3-row CSV with a numeric column and a string column, converts through .dta and back to stdout CSV, and asserts both columns' values appear in the recovered output - locking in mixed-type-column roundtrip behavior at 3 rows distinct from existing one-numeric-one-string and r9-mixed tests by checking specific token presence in both columns.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta mixed-types r21
Log

            
readstat CSV-DTA-CSV roundtrip preserves six distinct ASCII strings Original / libcsv / usage-readstat-r21-csv-multi-distinct-strings-survive Passed

Builds a six-row string CSV with non-overlapping tokens, converts through .dta and back to stdout CSV, and asserts each unique token appears in the recovered output - locking in a six-distinct-string survival contract distinct from prior four/five-row string tests.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta multi-string r21
Log

            
readstat CSV-to-SAS7BDAT preserves six rows on stdout CSV readback Original / libcsv / usage-readstat-r21-csv-sas7bdat-rowcount-six Passed

Builds a six-row CSV, converts through .dta to .sas7bdat, reads back to stdout CSV, and asserts the recovered output has exactly seven non-empty lines (one header + six data rows) - locking in SAS7BDAT row-count fidelity on six-row input distinct from prior summary-rows tests.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage sas7bdat rowcount r21
Log

            
readstat CSV-SAV-CSV roundtrip preserves four distinct decimal values Original / libcsv / usage-readstat-r21-csv-sav-distinct-floats-survive Passed

Builds a four-row CSV with distinct decimal values (1.5, 2.5, 3.5, 4.5), converts through .sav and back to stdout CSV, and asserts each decimal token appears in the recovered output - locking in decimal preservation through the SAV writer path on a four-value sequence distinct from prior 3.5-only or integer tests.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav decimals r21
Log

            
readstat summary of a four-row SAV converted from CSV reports Rows: 4 Original / libcsv / usage-readstat-r21-csv-sav-rows-four-summary Passed

Builds a four-row CSV with SPSS metadata, converts to .sav directly (skipping the DTA intermediate), captures the summary, and asserts it contains "Rows: 4" - locking in row-count summary reporting on the direct CSV-to-SAV writer path with four data rows specifically.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage sav summary rows r21
Log

            
readstat CSV stdout output begins with quoted header column name Original / libcsv / usage-readstat-r21-csv-stdout-header-present Passed

Converts a two-row CSV through DTA and asserts the very first line of the stdout CSV is the quoted header `"vname"` (matching readstat's header-quoting convention) - locking in header emission on the stdout dash output distinct from existing header-line tests which check column count or three-column shapes.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta stdout-header r21
Log

            
readstat XPT summary reports Columns: 2 for a two-column CSV input Original / libcsv / usage-readstat-r21-csv-xpt-summary-columns-two Passed

Builds a two-column CSV with Stata metadata, converts to .dta then to .xpt, captures the summary, and asserts the literal "Columns: 2" appears - locking in XPT column-count summary specifically (existing XPT tests check rows or single columns).

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage xpt summary columns r21
Log

            
readstat summary of a six-row ZSAV reports Rows: 6 Original / libcsv / usage-readstat-r21-csv-zsav-rowcount-summary Passed

Builds a six-row CSV, converts to .dta then to .zsav, captures the summary, and asserts the literal "Rows: 6" appears - locking in compressed SAV row-count summary on a non-zero non-{3,5} row count (existing zsav tests cover 3-row and 5-row counts).

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage zsav summary rows r21
Log

            
readstat summary of a three-column DTA reports Columns: 3 Original / libcsv / usage-readstat-r21-dta-summary-columns-three Passed

Builds a three-column CSV with Stata metadata declaring three NUMERIC variables, converts to DTA, captures the summary, and asserts it contains "Columns: 3" - locking in column-count summary reporting for three-column input specifically (existing tests cover one/two column counts).

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage dta summary columns r21
Log

            
readstat handles doubled-quote escape Original / libcsv / usage-readstat-r9-csv-double-quote-escape Passed

Provides a CSV cell containing an escaped double-quote ("") and confirms readstat parses the row as a single quoted field whose value contains a literal double quote.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv escaping
Log

            
readstat 200 string rows Original / libcsv / usage-readstat-r9-csv-many-string-rows Passed

Stores 200 short string rows into Stata DTA via readstat and verifies the row count and a known cell are preserved on read-back.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv strings
Log

            
readstat mixed numeric and string columns Original / libcsv / usage-readstat-r9-csv-mixed-numeric-string-cols Passed

Builds a CSV with one numeric and two string columns, converts to DTA, and confirms both column kinds are preserved on readback.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv types
Log

            
readstat preserves negative float values Original / libcsv / usage-readstat-r9-csv-negative-floats-roundtrip Passed

Roundtrips a CSV containing negative fractional values through DTA and back to CSV, asserting each negative value is preserved with six-decimal formatting.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric
Log

            
readstat preserves quoted comma cell Original / libcsv / usage-readstat-r9-csv-quoted-comma-cell Passed

Embeds a literal comma inside a quoted CSV cell and verifies readstat keeps the field as a single column without splitting on the inner comma.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv quoting
Log

            
readstat single column 100 rows Original / libcsv / usage-readstat-r9-csv-single-column-100-rows Passed

Converts a 100-row single-column CSV through DTA and confirms the row count and a representative middle value are preserved.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv large
Log

            
readstat CSV through SPSS SAV format Original / libcsv / usage-readstat-r9-csv-spss-sav-roundtrip Passed

Converts a CSV through the SPSS .sav format and back to CSV and confirms the cell values reappear unchanged.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv spss
Log

            
readstat preserves tab separators as cell content Original / libcsv / usage-readstat-r9-csv-tab-not-comma-rejected Passed

Feeds a tab-separated input through readstat and verifies the comma parser treats the line as a single column rather than splitting on tabs.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv parsing
Log

            
readstat tolerates extra trailing newlines Original / libcsv / usage-readstat-r9-csv-trailing-newline-tolerance Passed

Appends multiple trailing blank lines to a small CSV and confirms readstat does not count them as additional rows.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv parsing
Log

            
readstat writes SPSS .sav with compression Original / libcsv / usage-readstat-r9-csv-zsav-compressed-output Passed

Writes a CSV through readstat into the SPSS .sav format and verifies the output is non-empty and round-trips back through readstat with the right shape.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav
Log

            
readstat SAS7BDAT summary metadata Original / libcsv / usage-readstat-sas7bdat-summary-format Passed

Builds a SAS7BDAT file from CSV via DTA and verifies the metadata summary identifies the SAS data format and reports the dataset shape.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat metadata
Log

            
readstat SAV column count Original / libcsv / usage-readstat-sav-column-count Passed

Writes a SAV dataset and verifies readstat reports the expected column count.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat comma string value Original / libcsv / usage-readstat-sav-comma-value Passed

Converts a string containing a comma through SAV and verifies CSV escaping.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV count sum Original / libcsv / usage-readstat-sav-count-sum Passed

Exercises readstat sav count sum through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat SAV date string Original / libcsv / usage-readstat-sav-date-string-batch11 Passed

Preserves a date-like string through readstat SAV conversion.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV decimal number Original / libcsv / usage-readstat-sav-decimal-number Passed

Converts decimal numeric data through SAV and verifies numeric formatting.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV double quote string Original / libcsv / usage-readstat-sav-double-quote-string-batch11 Passed

Roundtrips an escaped double quote string through readstat SAV conversion.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV empty string row Original / libcsv / usage-readstat-sav-empty-string-row Passed

Converts a CSV row containing an empty quoted string to SAV with readstat and verifies the summary still reports a single column.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV empty string Original / libcsv / usage-readstat-sav-empty-string Passed

Converts an empty string field through SAV and verifies the row is preserved.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV header fields Original / libcsv / usage-readstat-sav-header-fields Passed

Converts CSV to SAV with readstat and verifies the exported CSV header row preserves the expected field order.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV large positive number Original / libcsv / usage-readstat-sav-large-positive-number Passed

Converts a six-digit positive integer to SAV with readstat and verifies the formatted decimal value in the output CSV.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV leading space note Original / libcsv / usage-readstat-sav-leading-space-note Passed

Exercises readstat sav leading space note through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat SAV leading zero string Original / libcsv / usage-readstat-sav-leading-zero-string Passed

Converts a string field with leading zeros through SAV and verifies the leading zeros survive export.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV long string Original / libcsv / usage-readstat-sav-long-string Passed

Converts a longer string field through SAV and verifies the text survives.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV mixed-case header Original / libcsv / usage-readstat-sav-mixed-case-header-roundtrip Passed

Converts a mixed-case CSV header to SAV with readstat and verifies the round-tripped header preserves the original column casing.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV mixed decimal sign Original / libcsv / usage-readstat-sav-mixed-decimal-sign Passed

Converts signed decimal numbers to SAV with readstat and verifies both formatted values in the output CSV.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV mixed group value Original / libcsv / usage-readstat-sav-mixed-group Passed

Exercises readstat sav mixed group value through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat SAV multiline note Original / libcsv / usage-readstat-sav-multiline-note-roundtrip Passed

Converts a quoted multiline CSV field to SAV with readstat and verifies both lines survive the round-tripped output.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV negative number Original / libcsv / usage-readstat-sav-negative-number Passed

Converts a negative numeric field through SAV and verifies the value survives export.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV numeric-looking string Original / libcsv / usage-readstat-sav-numeric-string-roundtrip Passed

Converts a decimal-looking string column to SAV with readstat and verifies the round-tripped output still preserves the quoted text form.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV pipe note Original / libcsv / usage-readstat-sav-pipe-note Passed

Exercises readstat sav pipe note through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat SAV quoted comma string Original / libcsv / usage-readstat-sav-quoted-comma-string Passed

Converts a quoted CSV field containing a comma to SAV with readstat and verifies the embedded comma survives the round trip.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV row count Original / libcsv / usage-readstat-sav-row-count Passed

Writes four rows to SAV and checks readstat summary row metadata.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv metadata
Log

            
readstat SAV row order Original / libcsv / usage-readstat-sav-row-order Passed

Converts multiple CSV rows through SAV and verifies row ordering is preserved in exported data.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV scientific number Original / libcsv / usage-readstat-sav-scientific-number Passed

Converts a scientific-notation numeric CSV field to SAV with readstat and verifies the normalized numeric output.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV score sum Original / libcsv / usage-readstat-sav-score-sum Passed

Converts multiple CSV rows through SAV and verifies numeric score aggregation over the exported data.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV single column Original / libcsv / usage-readstat-sav-single-column Passed

Converts a single-column CSV to SAV with readstat and verifies the summary reports one column.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV slash note Original / libcsv / usage-readstat-sav-slash-note Passed

Converts a slash-delimited text field through SAV and verifies the punctuation survives export.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV small decimal Original / libcsv / usage-readstat-sav-small-decimal-batch11 Passed

Roundtrips a small decimal through readstat SAV conversion.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV spaced value Original / libcsv / usage-readstat-sav-spaced-value Passed

Converts a spaced string field through SAV and verifies the text survives export.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV single row summary Original / libcsv / usage-readstat-sav-summary-single-row Passed

Exercises readstat sav single row summary through a dependent-client usage scenario.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat SAV tab note Original / libcsv / usage-readstat-sav-tab-note Passed

Converts a CSV field containing a tab to SAV with readstat and verifies the tab survives the round trip.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV three row numbers Original / libcsv / usage-readstat-sav-three-row-numbers Passed

Converts three numeric rows to SAV with readstat and verifies all three formatted decimal values appear in the output CSV.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV three rows Original / libcsv / usage-readstat-sav-three-rows Passed

Writes three CSV rows to SAV with readstat and verifies all rows return.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV to CSV Original / libcsv / usage-readstat-sav-to-csv Passed

Runs readstat to read an SPSS SAV dataset generated from CSV and emit CSV rows.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV two-column summary Original / libcsv / usage-readstat-sav-two-column-summary Passed

Converts a two-column CSV to SAV with readstat and verifies the summary reports two columns.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV two-row strings Original / libcsv / usage-readstat-sav-two-row-strings-roundtrip Passed

Converts two string rows to SAV with readstat and verifies both rows survive round trip in the original order.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV two string columns Original / libcsv / usage-readstat-sav-two-string-columns-batch11 Passed

Roundtrips two string columns through readstat SAV conversion.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV underscore header Original / libcsv / usage-readstat-sav-underscore-header-batch11 Passed

Writes a SAV file from a CSV column with an underscore header.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV Unicode string Original / libcsv / usage-readstat-sav-unicode-string Passed

Converts a CSV containing Unicode text to SAV with readstat and verifies the decoded string survives the round trip.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV zero number Original / libcsv / usage-readstat-sav-zero-number Passed

Converts a zero-valued numeric column to SAV with readstat and verifies the zero survives round trip.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV zero value Original / libcsv / usage-readstat-sav-zero-value Passed

Converts a zero numeric field through SAV and verifies the zero value is preserved.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat honors user_width metadata for string columns Original / libcsv / usage-readstat-string-user-width-honored Passed

Builds a DTA from CSV with a STRING column carrying a 20-character "user_width" hint in metadata and a 20-character value, then verifies the round-trip back to CSV keeps the full unmodified string and the DTA summary still reports two rows and two columns.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv metadata width
Log

            
readstat summary line format parsed by regex Original / libcsv / usage-readstat-summary-line-format-regex Passed

Converts a CSV through DTA and SAV and parses each summary output with line-anchored regular expressions for the Columns, Rows, Compression, Text encoding, and Byte order fields, verifying both that the lines exist and that their values match the file shape rather than relying on plain substring search.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv summary regex
Log

            
readstat summary timestamp line matches expected calendar shape Original / libcsv / usage-readstat-summary-timestamp-line-shape Passed

Generates a DTA and a SAV from a CSV and verifies each summary's "Timestamp:" line matches the day-month-year hour:minute pattern (DD MMM YYYY HH:MM) emitted by readstat, locking in that the calendar field is well-formed even though the actual moment depends on the test run time.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv summary timestamp
Log

            
readstat wide CSV metadata Original / libcsv / usage-readstat-wide-csv Passed

Runs readstat with four CSV variables and verifies summary metadata and fourth-column export.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat XLSX sheet dimension reflects three columns and eight data rows Original / libcsv / usage-readstat-xlsx-sheet-dimension-larger Passed

Builds an XLSX from an eight-row three-column CSV via DTA and parses the sheet1 XML to verify the dimension attribute is exactly A1:C9 (three columns and one header plus eight data rows) and that the eighth data row contains the trailing string code reference for the final group entry.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xlsx dimension
Log

            
readstat XPT summary metadata Original / libcsv / usage-readstat-xpt-summary-format Passed

Generates an XPT file from CSV via DTA and verifies the metadata summary identifies the SAS transport format and column count.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt metadata
Log

            
readstat ZSAV compression summary Original / libcsv / usage-readstat-zsav-compression-summary Passed

Builds a ZSAV file from CSV via DTA and verifies the metadata summary reports binary compression and matching row and column counts.

Run
Original
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav metadata
Log

            
Empty fields and custom delimiter Port / libcsv / empty-field-custom-delimiter Passed

Checks empty field callbacks while parsing semicolon delimited data.

Run
Port
Kind
source
Client
none
Duration
0.00s
Tags
api delimiter
Log

            
Example tool compile and run Port / libcsv / example-tool-compile-run Passed

Builds an upstream example tool and runs it against a fixture CSV.

Run
Port
Kind
source
Client
none
Duration
0.00s
Tags
api example
Log

            
Large field handling Port / libcsv / large-field-handling Passed

Parses a large field and confirms the callback receives all bytes.

Run
Port
Kind
source
Client
none
Duration
0.00s
Tags
api large-field
Log

            
Parser callback behavior Port / libcsv / parser-callback-behavior Passed

Compiles a parser callback program and checks fields and rows.

Run
Port
Kind
source
Client
none
Duration
0.00s
Tags
api parser
Log

            
Strict quote error behavior Port / libcsv / strict-quote-error Passed

Uses strict parser options to reject an unterminated quoted field.

Run
Port
Kind
source
Client
none
Duration
0.00s
Tags
api negative
Log

            
readstat conversion log reports variable and row counts Port / libcsv / usage-readstat-conversion-log-counts Passed

Captures the stdout of three sequential conversions of a seven-row two-column CSV through DTA and SAV and CSV and verifies every conversion emits a "Converted N variables and M rows in T seconds" log line whose variable and row counts match the expected shape, locking in the structured success indicator.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv log counts
Log

            
readstat 100 column CSV summary and edge cells Port / libcsv / usage-readstat-csv-100-columns Passed

Builds a 100 column numeric CSV with two data rows, converts through DTA, and verifies the summary reports exactly 100 columns and that the first column, last column, and a midpoint column hold their expected values on both rows.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv columns scale
Log

            
readstat 3 column 10 row CSV roundtrip Port / libcsv / usage-readstat-csv-3col-10row-simple-roundtrip Passed

Converts a CSV with three numeric columns and ten data rows through DTA and verifies the summary reports the exact row and column counts and that each row reappears with the expected six-decimal values.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv roundtrip
Log

            
readstat 3x3 CSV every cell verified after DTA round trip Port / libcsv / usage-readstat-csv-3x3-every-cell Passed

Builds a small three-row by three-column CSV with distinct values in every cell so each one is uniquely addressable, converts through DTA, and verifies each of the nine cells reappears at the matching row and column position on readback so no row or column gets transposed, dropped, or duplicated.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv addressing mixed
Log

            
readstat 5000 row CSV summary Port / libcsv / usage-readstat-csv-5000-rows Passed

Builds a 5000-row numeric CSV, converts it through DTA, and verifies the summary reports the exact row count and that the first and last data rows survive readback.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv scale
Log

            
readstat streams an 8000-row CSV through DTA and back Port / libcsv / usage-readstat-csv-8000-row-streaming-roundtrip Passed

Generates an 8000-row two-column CSV with monotonically increasing values, converts to DTA, reads it back to CSV via the "-" stdout sink, and verifies the DTA summary reports exactly 8000 rows, the readback produces 8001 lines (header + rows), and the first/middle/last data rows survive numerically. Stresses libreadstat's CSV streaming path with a row count larger than typical buffered batches.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv streaming large
Log

            
readstat preserves rows where every cell is empty Port / libcsv / usage-readstat-csv-all-empty-cells-preserved Passed

Builds a DTA from a CSV containing two rows in which every cell is empty for both a STRING column and a NUMERIC column and verifies the round-tripped CSV retains both empty rows with empty quoted strings for the string column and empty numeric placeholders for the numeric column.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv empty missing
Log

            
readstat all-zero numeric column renders as 0.000000 in every cell Port / libcsv / usage-readstat-csv-all-zero-column-rendering Passed

Builds a CSV with two numeric columns where the first column carries varied non-zero integers and the second column is all zero across four rows, converts through DTA, and verifies the second column is rendered as the literal six-decimal short form 0.000000 in every row — never as a bare 0, never as 0.0, never as scientific notation, and never empty — while the first column independently renders its varied values.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric zero rendering
Log

            
readstat CSV numeric column with all zero rows Port / libcsv / usage-readstat-csv-all-zeros-multi-row Passed

Builds a CSV whose numeric column holds zero on every one of five rows, converts through DTA, and verifies each readback row reports a numeric zero in the six-decimal short form rather than an empty value or unrelated number.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric zero
Log

            
readstat CSV with constant first column preserves repeated value across all rows Port / libcsv / usage-readstat-csv-constant-first-column Passed

Builds a two-column CSV where the first column carries the same string value on every data row (a degenerate constant column) and the second column varies, converts through DTA, and verifies every readback row repeats the constant verbatim so no row collapses or deduplicates the value.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv constant mixed
Log

            
readstat CRLF CSV input Port / libcsv / usage-readstat-csv-crlf-line-endings Passed

Feeds a CRLF-terminated CSV to readstat and verifies the rows are parsed and exported back to CSV without extra carriage returns.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv crlf
Log

            
readstat decimal tenths preserved at six-decimal output Port / libcsv / usage-readstat-csv-decimal-tenths-roundtrip Passed

Converts a CSV whose numeric column carries 0.1, 0.2, and 0.3 through DTA and verifies each value reappears in the readback as its six-decimal short form, confirming tenths round-trip even though they are not exact in binary floating point.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv decimal precision
Log

            
readstat renders DISCRETE missing values as blanks when DTA is read back Port / libcsv / usage-readstat-csv-discrete-missing-blank-in-dta Passed

Builds CSV plus JSON metadata that declares a DISCRETE missing-value sentinel of 99 on a numeric column, converts to DTA, reads the DTA back to CSV, and verifies the row whose score equals 99 emits an empty cell ("beta,") while non-sentinel rows preserve their numeric value (alpha,42 and gamma,7 stay populated). Locks in the libreadstat behavior of suppressing user-declared missing sentinels at DTA readback time.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta missing metadata
Log

            
readstat CSV through DTA and back is byte-stable across two passes Port / libcsv / usage-readstat-csv-dta-csv-byte-equal-roundtrip Passed

Round-trips a CSV through DTA twice — once for a reference readback CSV and once for a second readback CSV — and verifies the two readback CSVs are byte-for-byte identical via cmp, then computes a SHA-256 of each and verifies the digests match exactly, proving the DTA roundtrip is deterministic and yields identical bytes on a fresh invocation.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv roundtrip byte-equality
Log

            
readstat CSV through DTA SAV and back to CSV produces identical readback Port / libcsv / usage-readstat-csv-dta-sav-csv-exact-match Passed

Round-trips a CSV through DTA, then through SAV, then back to CSV via the SAV file, and verifies that the final CSV content is byte-for-byte identical to a direct CSV-through-DTA-and-back-to-CSV readback, locking in that the SAV intermediate hop does not perturb the data.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv multistep equivalence
Log

            
readstat CSV through DTA SAV DTA preserves five rows exactly Port / libcsv / usage-readstat-csv-dta-sav-dta-5row-exact Passed

Round-trips a five-row CSV through DTA then SAV then back to DTA, dumps the final DTA as CSV, and verifies every one of the five data rows reappears at its original position with both string and numeric values intact.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv multistep
Log

            
readstat converts CSV-built DTA into a ZSAV with binary compression Port / libcsv / usage-readstat-csv-dta-to-zsav-cross-format Passed

Builds a DTA from CSV, then performs a second readstat invocation that consumes the DTA and produces a ZSAV (SPSS compressed) directly without re-using the JSON metadata. Verifies the resulting ZSAV summary reports format "SPSS compressed binary file (ZSAV)", "Compression: binary", "Format version: 3", and that the readback CSV preserves both row values, exercising the DTA-reader -> ZSAV-writer pipeline rather than the CSV-reader pipeline.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta zsav cross-format
Log

            
readstat embedded newline in quoted CSV field Port / libcsv / usage-readstat-csv-embedded-newline-quoted Passed

Parses a CSV row whose quoted string field contains a literal newline and verifies the multi-line value survives through DTA back to CSV.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv quoting
Log

            
readstat empty CSV is rejected Port / libcsv / usage-readstat-csv-empty-file-rejected Passed

Feeds an empty CSV that contains only a single newline to readstat with a one-variable metadata file and verifies the conversion fails with a non-zero exit status and produces no usable DTA output, locking in that header-less inputs do not silently produce an empty dataset.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv negative
Log

            
readstat empty numeric column across rows Port / libcsv / usage-readstat-csv-empty-numeric-column Passed

Converts a CSV whose numeric column has empty values on every row through DTA and verifies the row count is preserved and string fields survive.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv missing
Log

            
readstat empty string field Port / libcsv / usage-readstat-csv-empty-string Passed

Converts an empty string field through DTA and verifies the row is preserved.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat CSV with explicit 5-decimal-place precision values Port / libcsv / usage-readstat-csv-explicit-5-decimal-precision Passed

Builds a CSV whose numeric column carries values written with exactly five decimal places (0.12345, 1.23456, 9.87654), converts through DTA, and verifies the readback emits each value in readstat's six-decimal short form with the original five-decimal digits intact and a trailing zero appended, demonstrating that the input precision is preserved without rounding away significant digits.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv precision decimal
Log

            
readstat numeric column with explicit .0 suffix preserved as float Port / libcsv / usage-readstat-csv-explicit-dot-zero-float Passed

Builds a CSV whose numeric column carries values written with an explicit .0 decimal suffix (rather than bare integers), converts through DTA, and verifies the readback always renders six-decimal floats so the values are interpreted as numeric rather than as a string column even though they look integer-valued.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv decimal numeric
Log

            
readstat single float column 0.5 step roundtrip Port / libcsv / usage-readstat-csv-float-half-step Passed

Builds a CSV with one numeric column ranging from 0.5 to 50.0 in 0.5 steps, converts through DTA, and verifies the row count and the first, last, and a midpoint value all survive readback.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv decimal
Log

            
readstat summary Format line content for each output format Port / libcsv / usage-readstat-csv-format-line-each-format Passed

Builds a CSV through DTA and then produces SAV, ZSAV, XPT, and SAS7BDAT files from that intermediate DTA, captures the readstat summary for each one, and verifies the leading "Format: ..." line carries the format-specific descriptor (Stata DTA, SPSS SAV, SPSS compressed ZSAV, SAS XPORT, SAS7BDAT) so the wrong format cannot be silently substituted.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv summary format
Log

            
readstat extracts Format version line across DTA SAV ZSAV SAS7BDAT formats Port / libcsv / usage-readstat-csv-format-version-extraction Passed

Builds a CSV through DTA and derives SAV, ZSAV, and SAS7BDAT files from that intermediate, captures each summary, extracts the trailing integer from the "Format version:" line with sed, and verifies that for every format the extracted value parses as a positive integer rather than being missing or non-numeric, locking in that the version field is structurally well-formed across the four formats that report it.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv summary format version
Log

            
readstat numeric column doubling formula preserved across DTA round trip Port / libcsv / usage-readstat-csv-formula-double-relation Passed

Builds a CSV with two numeric columns where column2 equals column1 multiplied by 2 across five data rows (1->2, 2->4, 3->6, 4->8, 5->10), converts through DTA, and verifies in the readback that for each data row the second-column numeric value is exactly twice the first-column numeric value, computed by parsing the integer portions of the six-decimal short forms with awk.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric formula
Log

            
readstat single int column 1 to 1000 count Port / libcsv / usage-readstat-csv-int-1-to-1000-count Passed

Builds a CSV with a single numeric column carrying integers 1 through 1000, converts through DTA, and verifies the summary reports exactly 1000 rows and that the first and last values reappear at the expected positions.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv scale
Log

            
readstat CSV preserves 32 bit and 64 bit integer boundary values Port / libcsv / usage-readstat-csv-int32-max-boundary Passed

Builds a CSV with one numeric column carrying signed 32 bit min and max plus signed 64 bit min and max plus a few neighbouring boundary values, converts through DTA, and verifies each integer reappears on readback as its expected six-decimal value rather than overflowing or being truncated.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric boundary
Log

            
readstat numeric with leading plus sign Port / libcsv / usage-readstat-csv-leading-plus-sign Passed

Converts a CSV whose numeric values carry an explicit leading plus sign through DTA and verifies the sign is normalized away in the readback.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric
Log

            
readstat long column names through DTA and SAV Port / libcsv / usage-readstat-csv-long-column-names Passed

Converts a CSV with column names longer than 32 characters through DTA and SAV and verifies the long names are preserved verbatim in the readback header for each format.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv headers
Log

            
readstat 30 column CSV round trip Port / libcsv / usage-readstat-csv-many-columns-roundtrip Passed

Builds a 30-column numeric CSV with matching metadata, converts through DTA, and verifies the column count and first and last column values survive.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv columns
Log

            
readstat distinct strictly increasing numeric column preserves order and values Port / libcsv / usage-readstat-csv-many-distinct-increasing Passed

Builds a CSV with one numeric column carrying 25 strictly increasing distinct values, converts through DTA, and verifies every value reappears at its original line position so neither the order nor the magnitudes drift after the round trip.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric ordering
Log

            
readstat rejects metadata that does not list a CSV column Port / libcsv / usage-readstat-csv-mismatched-metadata-variable-rejected Passed

Supplies a CSV header with columns "n,v" but a JSON metadata file that lists "foobar,v", and verifies readstat exits non-zero with "Could not find type of variable n in metadata", proving readstat validates that every CSV column has a metadata entry rather than silently typing the unknown column.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv metadata negative
Log

            
readstat mixed int and float numeric columns Port / libcsv / usage-readstat-csv-mixed-int-float-columns Passed

Converts a CSV whose first numeric column carries integers and second numeric column carries non-integral floats through DTA and verifies both columns survive at six-decimal precision without one column collapsing into the other type.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric
Log

            
readstat mixed numeric and string columns with varying string widths Port / libcsv / usage-readstat-csv-mixed-numeric-string-padding Passed

Builds a CSV with one numeric column and one string column where string values vary in length from 1 to 12 characters, converts through DTA, and verifies each string value reappears verbatim alongside its paired numeric value rendered to six decimals.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv mixed
Log

            
readstat multiple negative numeric rows Port / libcsv / usage-readstat-csv-multi-negative-numbers Passed

Converts a CSV with several negative numeric values of varying magnitudes through DTA and verifies each value reappears in the CSV readback.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric
Log

            
readstat CSV through DTA SAV and back to CSV Port / libcsv / usage-readstat-csv-multistep-format-hops Passed

Round-trips a CSV through DTA, then through SAV, then back to CSV via DTA, verifying string and numeric values survive every hop.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv multistep
Log

            
readstat numeric precision through DTA Port / libcsv / usage-readstat-csv-numeric-precision Passed

Converts a CSV with several many-digit decimal values through DTA and verifies the readback retains 15 significant digits, matching readstat's high-precision numeric output.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv precision
Log

            
readstat multi-column CSV with one numeric and one string column Port / libcsv / usage-readstat-csv-one-numeric-one-string Passed

Builds a two-column CSV pairing a numeric column with a single string column and verifies that after a DTA round trip the readback header preserves the column order, the numeric column is rendered as six-decimal floats while the string column remains quoted, and the values are not transposed across the column boundary.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv mixed
Log

            
readstat CSV preserves paired very large positive and negative integers Port / libcsv / usage-readstat-csv-paired-large-pos-neg Passed

Builds a CSV whose single numeric column alternates between very large positive and very large negative integers (up to 1e15 in magnitude), converts through DTA, and verifies each paired value reappears with its sign and magnitude intact and that no positive value collapses into its negative twin.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric sign
Log

            
readstat CSV two correlated numeric columns Port / libcsv / usage-readstat-csv-positive-negative-correlation Passed

Builds a CSV with two distinct numeric columns where one is positively correlated with row index and another is negatively correlated, converts through DTA, and verifies the monotonic increase and decrease survive readback exactly.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric
Log

            
readstat quoted CSV header with space in column name Port / libcsv / usage-readstat-csv-quoted-column-name-with-space Passed

Converts a CSV whose header row carries a quoted column name containing a space character through DTA using a matching metadata variable name and verifies the original quoted header is restored on readback and the data row reappears intact.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv header quoted
Log

            
readstat CSV with quoted column names that fit DTA naming roundtrips cleanly Port / libcsv / usage-readstat-csv-quoted-header-no-spaces Passed

Builds a CSV whose header row uses quoted column names that still fit DTA naming rules (no spaces, no special characters), converts through DTA, and verifies the quotes are stripped from the stored variable names while the data rows survive the round trip with the un-quoted column names in the readback header.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv header quoted
Log

            
readstat specific cell preserved by row and column index Port / libcsv / usage-readstat-csv-row-column-cell-roundtrip Passed

Builds a CSV where row 4 column 2 carries a unique numeric marker value (8675309) surrounded by distractor zeros, converts through DTA, and verifies the marker reappears at the same row and column position in the readback CSV without bleeding into neighbouring cells.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv addressing
Log

            
readstat converts CSV-built SAS7BDAT into an XPT transport file Port / libcsv / usage-readstat-csv-sas7bdat-to-xpt-cross-format Passed

Pipelines CSV plus JSON metadata into a DTA, then DTA into a SAS7BDAT, then SAS7BDAT into an XPT transport file, and finally reads the XPT back to CSV. Verifies the XPT summary identifies the transport format and the readback CSV preserves the three rows produced by the SAS7BDAT -> XPT writer chain (a path that exercises libreadstat's SAS reader and the XPT writer).

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat xpt cross-format
Log

            
readstat scientific notation lowercase and uppercase Port / libcsv / usage-readstat-csv-scientific-mixed-case Passed

Converts a CSV with scientific notation values using both lowercase e and uppercase E, plus negative exponents, through DTA and verifies each parses to the expected numeric value.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric
Log

            
readstat sentinel value at row 1 column 1 preserved exactly Port / libcsv / usage-readstat-csv-sentinel-row1-col1 Passed

Builds a CSV where the very first data cell (row 1, column 1) carries a unique sentinel numeric value (271828) surrounded by zeros, converts through DTA, and verifies the readback line 2 (data row 1) has the sentinel in field 1 and zeros in subsequent fields, that the sentinel appears exactly once in the entire output, and that no other data row has any non-zero value in column 1.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sentinel addressing
Log

            
readstat 1x1 CSV Port / libcsv / usage-readstat-csv-single-cell-1x1 Passed

Converts a CSV containing exactly one column and one data row through DTA and verifies the summary, header, and single value all survive.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv minimal
Log

            
readstat 1x1 CSV with numeric value Port / libcsv / usage-readstat-csv-single-cell-numeric-1x1 Passed

Converts a CSV containing exactly one numeric column and one numeric data row (the value 17) through DTA and verifies the summary reports Columns 1 and Rows 1, the readback header is the bare numeric column name and the single data line is the six-decimal short form of 17, distinguishing this numeric 1x1 case from the existing string-flavoured 1x1 test.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv minimal numeric
Log

            
readstat text-only string column preserved through DTA Port / libcsv / usage-readstat-csv-text-only-column-roundtrip Passed

Converts a CSV containing a single string-typed column with four distinct ASCII labels through DTA and verifies every label reappears verbatim and in the same order on readback.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv string
Log

            
readstat three-column CSV with string, integer-valued, and float-valued columns Port / libcsv / usage-readstat-csv-three-distinct-types Passed

Builds a three-column CSV pairing a STRING column with two NUMERIC columns whose data is shaped as integers in column 2 and as non-integral floats in column 3, converts through DTA, and verifies the readback header order is preserved, the string column stays quoted, the integer-valued numeric column renders with .000000 suffix, and the float-valued numeric column renders the fractional part exactly.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv mixed types
Log

            
readstat CSV to DTA Port / libcsv / usage-readstat-csv-to-dta Passed

Runs readstat to convert CSV plus JSON metadata into a Stata DTA file and reads it back as CSV.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat CSV to SPSS POR portable file summary Port / libcsv / usage-readstat-csv-to-por-summary Passed

Builds an SPSS portable POR file from CSV via DTA using uppercase variable names that the portable format requires and verifies the metadata summary identifies the SPSS portable format and reports the column count matching the input CSV shape.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv por metadata
Log

            
readstat CSV to SAS7BDAT round trip Port / libcsv / usage-readstat-csv-to-sas7bdat-roundtrip Passed

Converts CSV through DTA into a SAS7BDAT data file and verifies the field values reappear in CSV after readback.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat
Log

            
readstat CSV to SAV Port / libcsv / usage-readstat-csv-to-sav Passed

Runs readstat to parse CSV through metadata and write an SPSS SAV dataset.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat CSV to XLSX output Port / libcsv / usage-readstat-csv-to-xlsx-output Passed

Converts CSV through DTA into an XLSX workbook and verifies the workbook is a valid zip with the expected shared strings and cell value.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xlsx
Log

            
readstat CSV to SAS XPORT round trip Port / libcsv / usage-readstat-csv-to-xpt-roundtrip Passed

Converts CSV through DTA into a SAS transport (XPT) file and verifies the values survive the round trip back to CSV.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt
Log

            
readstat CSV to compressed ZSAV round trip Port / libcsv / usage-readstat-csv-to-zsav-roundtrip Passed

Converts CSV through DTA into an SPSS compressed binary (ZSAV) file and verifies the values and binary compression marker.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav
Log

            
readstat CSV with trailing empty lines Port / libcsv / usage-readstat-csv-trailing-empty-lines Passed

Converts a CSV that ends with several blank lines through DTA and verifies the trailing blanks do not inflate the row count.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv blank-lines
Log

            
readstat trailing whitespace inside string fields normalized to trimmed value Port / libcsv / usage-readstat-csv-trailing-whitespace-fields Passed

Builds a CSV whose quoted string fields carry trailing space characters after the actual content (for example "alpha ", "beta "), converts through DTA, and verifies that the readback emits the trimmed string content without the trailing spaces — distinguishing this case from the existing whitespace-only-field test which collapses all-whitespace to empty.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv whitespace trim
Log

            
readstat all-uppercase column names preserve case Port / libcsv / usage-readstat-csv-uppercase-column-names Passed

Converts a CSV whose header row uses fully uppercase column names through DTA and verifies the readback emits the column names in the same all-uppercase form, locking in that readstat does not lowercase or normalize the casing.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv header case
Log

            
readstat treats .CSV uppercase as a CSV input Port / libcsv / usage-readstat-csv-uppercase-extension-accepted Passed

Stores the input fixture with an uppercase ".CSV" extension and verifies readstat still recognizes the format, ingests both rows, and writes a valid DTA. Documents that readstat's input-format dispatch is not strictly case-sensitive and matches the ".csv" path that lowercase fixtures exercise.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv extension case-insensitive
Log

            
readstat does not strip UTF-8 BOM from CSV header Port / libcsv / usage-readstat-csv-utf8-bom-header-rejected Passed

Prepends a UTF-8 BOM (EF BB BF) to a CSV header row and verifies readstat treats the BOM bytes as part of the first column name, fails the metadata lookup with an explicit "Could not find type of variable" diagnostic, and exits non-zero rather than silently dropping the BOM.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv bom encoding negative
Log

            
readstat preserves multi-word variable labels in DTA Port / libcsv / usage-readstat-csv-variable-labels-embedded-in-dta Passed

Drives readstat with a JSON metadata file declaring three columns whose labels are multi-word strings ("First Name", "Family Surname", "Age in Years"), converts the CSV to DTA, and verifies all three label strings are present in the binary DTA payload by scanning with strings(1). Variable labels are part of the libreadstat contract that calling code (Stata, pandas) relies on for column documentation.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta labels metadata
Log

            
readstat CSV with a 1500 character single field Port / libcsv / usage-readstat-csv-very-long-field Passed

Builds a CSV whose string column carries a single field longer than 1500 characters, declares its width via metadata, converts through DTA, and verifies the full string reappears verbatim on readback alongside its sibling short-field row.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv long-field
Log

            
readstat whitespace-only string field normalized to empty Port / libcsv / usage-readstat-csv-whitespace-only-field Passed

Converts a CSV whose string field contains only space characters through DTA and verifies readstat normalizes whitespace-only fields to empty strings while preserving row count and other columns.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv whitespace
Log

            
readstat accepts CSV with no terminating newline Port / libcsv / usage-readstat-csv-without-trailing-newline-accepted Passed

Writes a CSV whose final byte is a digit rather than a line feed and verifies readstat ingests both data rows, reports two rows in the DTA summary, and emits both records in the readback CSV. RFC 4180 makes the trailing CRLF optional and many spreadsheet exports omit it; this locks in the behavior.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv line-endings rfc4180
Log

            
readstat DTA column count Port / libcsv / usage-readstat-dta-column-count Passed

Writes five columns to DTA and checks readstat summary metadata.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv metadata
Log

            
readstat DTA comma value Port / libcsv / usage-readstat-dta-comma-value Passed

Converts a quoted comma-containing string through DTA and verifies the field survives export.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA count sum Port / libcsv / usage-readstat-dta-count-sum Passed

Exercises readstat dta count sum through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat DTA to CSV preserves exact decimal representation Port / libcsv / usage-readstat-dta-csv-exact-decimal-preservation Passed

Builds a DTA from a CSV whose numeric column carries exactly representable binary decimals (0.5, 0.25, 0.125, 0.0625), then reads the DTA back to CSV twice — once into a reference file and once into a comparison file — and verifies the decimal cells are emitted in their exact canonical six-decimal form (0.500000, 0.250000, 0.125000, 0.062500), that the two readbacks are byte-identical, and that no value drifts into long-form scientific notation or extra digits.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv decimal exact preservation
Log

            
readstat DTA date string Port / libcsv / usage-readstat-dta-date-string-batch11 Passed

Preserves a date-like string through readstat DTA conversion.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA decimal number Port / libcsv / usage-readstat-dta-decimal-number Passed

Converts decimal numeric data through DTA and verifies numeric formatting.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA double quote string Port / libcsv / usage-readstat-dta-double-quote-string-batch11 Passed

Roundtrips an escaped double quote string through readstat DTA conversion.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA empty string row Port / libcsv / usage-readstat-dta-empty-string-row Passed

Converts a CSV row containing an empty quoted string to DTA with readstat and verifies the summary still reports a single column.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA header fields Port / libcsv / usage-readstat-dta-header-fields Passed

Converts CSV to DTA with readstat and verifies the exported CSV header row preserves the expected field order.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA large positive number Port / libcsv / usage-readstat-dta-large-positive-number Passed

Converts a six-digit positive integer to DTA with readstat and verifies the formatted decimal value in the output CSV.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA leading space note Port / libcsv / usage-readstat-dta-leading-space-note Passed

Exercises readstat dta leading space note through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat DTA leading zero string Port / libcsv / usage-readstat-dta-leading-zero-string Passed

Converts a string field with leading zeros through DTA and verifies the leading zeros survive export.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA long string Port / libcsv / usage-readstat-dta-long-string Passed

Converts a longer string field through DTA and verifies the text survives.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA mixed-case header Port / libcsv / usage-readstat-dta-mixed-case-header-roundtrip Passed

Converts a mixed-case CSV header to DTA with readstat and verifies the round-tripped header preserves the original column casing.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA mixed decimal sign Port / libcsv / usage-readstat-dta-mixed-decimal-sign Passed

Converts signed decimal numbers to DTA with readstat and verifies both formatted values in the output CSV.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA mixed group value Port / libcsv / usage-readstat-dta-mixed-group Passed

Exercises readstat dta mixed group value through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat DTA multiline note Port / libcsv / usage-readstat-dta-multiline-note-roundtrip Passed

Converts a quoted multiline CSV field to DTA with readstat and verifies both lines survive the round-tripped output.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA negative number Port / libcsv / usage-readstat-dta-negative-number Passed

Converts a negative numeric field through DTA and verifies the value.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA numeric-looking string Port / libcsv / usage-readstat-dta-numeric-string-roundtrip Passed

Converts a decimal-looking string column to DTA with readstat and verifies the round-tripped output still preserves the quoted text form.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA pipe note Port / libcsv / usage-readstat-dta-pipe-note Passed

Exercises readstat dta pipe note through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat DTA quoted comma string Port / libcsv / usage-readstat-dta-quoted-comma-string Passed

Converts a quoted CSV field containing a comma to DTA with readstat and verifies the embedded comma survives the round trip.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA to DTA preserves variable order Port / libcsv / usage-readstat-dta-roundtrip-variable-order Passed

Converts a CSV with a deliberately non-alphabetical column order (zulu, alpha, mike) into DTA, then re-encodes that DTA into a second DTA file, and verifies the readback header on both DTAs lists the columns in the original input order rather than reordered.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv ordering
Log

            
readstat DTA row count Port / libcsv / usage-readstat-dta-row-count Passed

Writes a multi-row DTA dataset and verifies readstat reports the expected row count.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA row order Port / libcsv / usage-readstat-dta-row-order Passed

Converts multiple CSV rows through DTA and verifies row ordering is preserved in exported data.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat numeric column survives DTA SAV DTA hop Port / libcsv / usage-readstat-dta-sav-dta-numeric-type Passed

Converts a CSV with one string column and one numeric column to DTA, hops through SAV, then back to a second DTA, and verifies the numeric column still emits six-decimal numeric values (rather than quoted strings) on the final readback, confirming type information survives the cross-format hop.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv types multistep
Log

            
readstat DTA scientific number Port / libcsv / usage-readstat-dta-scientific-number Passed

Converts a scientific-notation numeric CSV field to DTA with readstat and verifies the normalized numeric output.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA score sum Port / libcsv / usage-readstat-dta-score-sum Passed

Converts multiple CSV rows through DTA and verifies numeric score aggregation over the exported data.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA single column Port / libcsv / usage-readstat-dta-single-column Passed

Converts a single-column CSV to DTA with readstat and verifies the summary reports one column.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA slash note Port / libcsv / usage-readstat-dta-slash-note Passed

Converts a slash-delimited text field through DTA and verifies the punctuation survives export.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA small decimal Port / libcsv / usage-readstat-dta-small-decimal-batch11 Passed

Roundtrips a small decimal through readstat DTA conversion.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat spaced string value Port / libcsv / usage-readstat-dta-spaced-value Passed

Converts a string containing spaces through DTA and verifies output quoting.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA single row summary Port / libcsv / usage-readstat-dta-summary-single-row Passed

Exercises readstat dta single row summary through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat DTA tab note Port / libcsv / usage-readstat-dta-tab-note Passed

Converts a CSV field containing a tab to DTA with readstat and verifies the tab survives the round trip.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA three row numbers Port / libcsv / usage-readstat-dta-three-row-numbers Passed

Converts three numeric rows to DTA with readstat and verifies all three formatted decimal values appear in the output CSV.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA three rows Port / libcsv / usage-readstat-dta-three-rows Passed

Writes three CSV rows to DTA with readstat and verifies all rows return.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA to CSV with metadata file inspection Port / libcsv / usage-readstat-dta-to-csv-with-meta-inspection Passed

Converts a CSV through DTA, then independently dumps the DTA back to CSV and the DTA metadata summary to a separate file, and verifies both that the data file readback carries the input rows and that the metadata file inspection reports the matching row, column, format header, and byte order alongside it.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv metadata inspection
Log

            
readstat DTA to CSV Port / libcsv / usage-readstat-dta-to-csv Passed

Runs readstat to convert a CSV-derived DTA dataset back to CSV and verifies row values.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat DTA two-column summary Port / libcsv / usage-readstat-dta-two-column-summary Passed

Converts a two-column CSV to DTA with readstat and verifies the summary reports two columns.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA two-row strings Port / libcsv / usage-readstat-dta-two-row-strings Passed

Converts two string rows to DTA with readstat and verifies both rows survive round trip in the original order.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA two string columns Port / libcsv / usage-readstat-dta-two-string-columns-batch11 Passed

Roundtrips two string columns through readstat DTA conversion.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA underscore header Port / libcsv / usage-readstat-dta-underscore-header-batch11 Passed

Writes a DTA file from a CSV column with an underscore header.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA Unicode string Port / libcsv / usage-readstat-dta-unicode-string Passed

Converts a CSV containing Unicode text to DTA with readstat and verifies the decoded string survives the round trip.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat DTA zero number Port / libcsv / usage-readstat-dta-zero-number Passed

Converts a zero-valued numeric column to DTA with readstat and verifies the zero survives round trip.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat zero numeric value Port / libcsv / usage-readstat-dta-zero-value Passed

Converts zero-valued numeric data through DTA and verifies it remains numeric.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat escaped quote CSV fields Port / libcsv / usage-readstat-escaped-quotes-csv Passed

Runs readstat through DTA conversion and verifies escaped double quotes survive CSV export.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat -f flag overwrites a pre-existing output file Port / libcsv / usage-readstat-force-flag-overwrites-existing Passed

Generates a DTA from a CSV, runs readstat once to produce out.csv, then re-runs the same conversion with -f and verifies the second invocation succeeds quietly, leaves no "File exists" diagnostic, and that the output file's mtime advances (proving it was rewritten rather than skipped).

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv force overwrite
Log

            
readstat preserves 14-digit double precision through DTA round-trip Port / libcsv / usage-readstat-high-precision-double-preserved Passed

Round-trips three irrational mathematical constants (pi, e, sqrt(2)) carried to fourteen digits past the decimal point through CSV to DTA and back to CSV, and verifies every output digit string matches the input character-for-character so no precision is silently truncated by the readstat numeric pipeline.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv precision double
Log

            
readstat metadata summary Port / libcsv / usage-readstat-metadata-summary Passed

Runs readstat against a CSV-derived DTA file and verifies the reported variable and row metadata.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat reports diagnostic on a non-existent input file Port / libcsv / usage-readstat-missing-input-file-fails Passed

Asks readstat to convert from an input path that does not exist to a CSV output, captures stderr, and verifies the diagnostic mentions an unable-to-open error and refuses to write any rows of output content beyond an empty placeholder, locking in the failure pathway for missing inputs.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv error
Log

            
readstat missing CSV values Port / libcsv / usage-readstat-missing-values Passed

Runs readstat on CSV input with an empty numeric value and verifies the missing value is preserved.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat without arguments prints usage banner Port / libcsv / usage-readstat-no-args-emits-usage Passed

Invokes readstat with no positional arguments, captures stdout and stderr, and verifies the binary prints the standard banner including the version line, the supported input extensions list, and the convert syntax describing input and output filenames.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv cli banner
Log

            
readstat normalized CSV output Port / libcsv / usage-readstat-normalize-csv Passed

Runs readstat to parse CSV with metadata and write normalized CSV output.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat refuses to overwrite an existing output without -f Port / libcsv / usage-readstat-overwrite-protection-without-f Passed

Generates a DTA from CSV, converts it to CSV once, then attempts the same conversion a second time without the -f flag and verifies readstat emits a "File exists (Use -f to overwrite)" diagnostic and leaves the existing output file's bytes byte-for-byte unchanged.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv overwrite safety
Log

            
readstat quoted CSV fields Port / libcsv / usage-readstat-quoted-csv Passed

Runs readstat on a quoted CSV field containing a comma and verifies the parsed value survives conversion.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat preserves a 14-significant-digit double through DTA roundtrip Port / libcsv / usage-readstat-r10-csv-extreme-double-precision-preserved Passed

Round-trips two well-known irrational constants with at least 15 input digits (pi 3.141592653589793, sqrt2 1.4142135623730951) through DTA and back to CSV and verifies the readstat CSV writer emits the values with the high-precision 14-significant-digit rendering that occurs whenever the truncation to the default 6-decimal form would lose information.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv double precision
Log

            
readstat rejects a CSV that has only a header row Port / libcsv / usage-readstat-r10-csv-header-only-no-data-rejected Passed

Provides a CSV consisting solely of a header line with no data rows and verifies readstat fails the conversion with a "One or more columns must be provided" diagnostic on stderr while leaving no output file behind, distinguishing the empty-data-row case from the empty-file case which has its own dedicated diagnostic.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv parsing negative
Log

            
readstat preserves leading-zero codes when the column is STRING Port / libcsv / usage-readstat-r10-csv-leading-zero-string-preserved Passed

Round-trips a CSV column containing zero-padded numeric-looking codes (007, 042, 099) declared as STRING through DTA and back to CSV, verifying the leading zeros survive intact rather than being silently coerced to numeric values like 7, 42, 99.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv string leading-zero
Log

            
readstat SAV summary reports Text encoding UTF-8 by default Port / libcsv / usage-readstat-r10-csv-sav-text-encoding-utf8-default Passed

Converts a CSV containing pure ASCII content directly into an SPSS SAV file using the SPSS metadata type and verifies the readstat summary reports the "Text encoding: UTF-8" line, locking in that newly created SAV files default to UTF-8 even when no Unicode characters are present in the source data.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav encoding
Log

            
readstat distinguishes SAV row compression from ZSAV binary compression Port / libcsv / usage-readstat-r10-csv-sav-zsav-compression-distinguished Passed

Builds the same CSV through DTA into both an SPSS SAV file and an SPSS ZSAV file and verifies the metadata summaries report distinct compression algorithms (Compression: rows for SAV, Compression: binary for ZSAV), confirming the two SPSS variants are not collapsed onto a single compression mode in the readstat CLI output.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav zsav compression
Log

            
readstat reports Table label (null) when the JSON metadata supplies no label Port / libcsv / usage-readstat-r10-csv-table-label-null-when-unset Passed

Converts a CSV through DTA and SAV using a JSON metadata file that declares no top-level table label and verifies both readstat summaries emit the literal "Table label: (null)" line, locking in the canonical placeholder used by the CLI when no Stata or SPSS dataset label was supplied.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv summary table-label
Log

            
readstat -h prints the full help banner with all conversion modes Port / libcsv / usage-readstat-r10-help-flag-banner-shape Passed

Invokes readstat with the -h flag and verifies the help banner enumerates every documented mode of operation including the metadata view, the CSV-to-stdout dump, the format-to-format conversion, the CSV+JSON metadata conversion, the CSV+command-file conversion, and the SAS7BDAT-with-catalog conversion, ensuring no documented entry point disappears from the help text.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv cli help
Log

            
readstat surfaces an explicit error reading SPSS portable POR back to CSV Port / libcsv / usage-readstat-r10-por-readback-error-message Passed

Builds an SPSS portable POR file from a CSV via DTA and then attempts to convert that POR file back to CSV, verifying readstat does not silently produce empty output but instead emits an "Error processing" diagnostic naming the POR path with an "Invalid file, or file has unsupported features" reason and refuses to create the destination CSV file.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv por negative
Log

            
readstat -v prints only the version line on stdout Port / libcsv / usage-readstat-r10-version-flag-stdout Passed

Invokes readstat with the -v flag and verifies the binary prints exactly one stdout line of the form "ReadStat version X.Y.Z" with stderr empty and exits zero, distinguishing the version-only output from the full help banner emitted with no arguments.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv cli version
Log

            
readstat XPT summary reports Rows -1 and omits byte-order encoding compression lines Port / libcsv / usage-readstat-r10-xpt-summary-rows-minus-one-quirk Passed

Builds a SAS XPORT file from a five-row CSV via DTA and verifies the readstat metadata summary reports the documented "Rows: -1" placeholder (XPORT does not store the row count in its header) and that the summary intentionally omits the Byte order, Text encoding, and Compression lines that DTA, SAV, and ZSAV emit, locking in the XPT-specific metadata shape.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt summary
Log

            
readstat DTA writer pins Format version to 118 by default Port / libcsv / usage-readstat-r11-dta-format-version-118-default Passed

Builds a DTA from a CSV with no version override and verifies the readstat summary reports "Format version: 118" rather than leaving the version field unpinned, locking in the Stata 14+ wire format as the default DTA version emitted by the readstat writer on Ubuntu 24.04.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta format-version
Log

            
readstat dta-to-sas7bdat summary reports little-endian byte order Port / libcsv / usage-readstat-r11-dta-to-sas7bdat-byte-order-little-endian Passed

Builds a SAS7BDAT from a CSV via DTA and verifies the readstat summary contains the "Byte order: little-endian" line, locking in that the SAS7BDAT writer on Ubuntu 24.04 emits little-endian byte order in its header (a field that the format records explicitly, unlike XPT which omits the line entirely).

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat byte-order
Log

            
readstat dta-to-sas7bdat summary pins Format version to 9 Port / libcsv / usage-readstat-r11-dta-to-sas7bdat-format-version-9 Passed

Builds a SAS7BDAT from a CSV via DTA and verifies the readstat summary reports the SAS data file format with the specific "Format version: 9" line that locks in SAS7BDAT v9 as the format version emitted by the readstat SAS7BDAT writer on Ubuntu 24.04.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat format-version
Log

            
readstat dta-to-xpt summary pins Format version to 8 Port / libcsv / usage-readstat-r11-dta-to-xpt-format-version-8 Passed

Builds an XPT from a CSV via DTA and verifies the readstat summary reports the SAS Transport file format with the specific "Format version: 8" line that locks in XPT v8 as the format version emitted by the readstat XPT writer on Ubuntu 24.04.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt format-version
Log

            
readstat SAS7BDAT to CSV renders integer-valued numerics with six trailing decimals Port / libcsv / usage-readstat-r11-sas7bdat-csv-six-decimal-rendering Passed

Round-trips three integer-valued ids (1, 2, 3) through SAS7BDAT (built via DTA) and back to CSV and verifies the readstat CSV writer emits each integer with the six-trailing-decimal "1.000000" / "2.000000" / "3.000000" rendering rather than as bare integers, exercising the SAS7BDAT-reader -> CSV-writer pipeline's numeric formatting on Ubuntu 24.04.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat decimal-rendering
Log

            
readstat XLSX [Content_Types].xml advertises spreadsheetml worksheet content type Port / libcsv / usage-readstat-r11-xlsx-content-types-spreadsheetml Passed

Builds an XLSX from a small CSV via DTA and parses [Content_Types].xml inside the OOXML zip to verify the worksheet content type "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" is registered, locking in OOXML conformance of the readstat XLSX writer beyond the previously-checked sheet1.xml dimension.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xlsx content-types
Log

            
readstat XLSX root _rels/.rels declares xl/workbook.xml as the office document target Port / libcsv / usage-readstat-r11-xlsx-rels-targets-workbook-xml Passed

Builds an XLSX from a small CSV via DTA and parses _rels/.rels inside the OOXML zip to verify the package-level relationship of type "officeDocument" targets exactly "xl/workbook.xml", locking in the OOXML root-relationships layout produced by the readstat XLSX writer.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xlsx rels
Log

            
readstat XLSX xl/workbook.xml registers a single named worksheet Port / libcsv / usage-readstat-r11-xlsx-workbook-xml-references-sheet Passed

Builds an XLSX from a small CSV via DTA and parses xl/workbook.xml inside the OOXML zip to verify the workbook lists exactly one <sheet> element with sheetId="1" and a non-empty name attribute, locking in single-sheet workbook structure rather than only checking the per-sheet content.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xlsx workbook
Log

            
readstat XPT to CSV emits all rows even though the XPT header reports Rows -1 Port / libcsv / usage-readstat-r11-xpt-csv-row-count-correct-after-conversion Passed

Builds an XPT from a five-row CSV via DTA and verifies that, despite the XPT summary reporting the documented "Rows: -1" placeholder, the readstat XPT-to-CSV conversion still emits a header line and all five data rows, locking in the asymmetry between XPT metadata row reporting and actual row enumeration during conversion.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt row-count
Log

            
readstat XPT to CSV renders integer-valued numerics with six trailing decimals Port / libcsv / usage-readstat-r11-xpt-csv-six-decimal-rendering Passed

Round-trips three integer-valued ids (1, 2, 3) through XPT (built via DTA) and back to CSV and verifies the readstat CSV writer emits each integer with the six-trailing-decimal "1.000000" / "2.000000" / "3.000000" rendering rather than as bare integers, exercising the XPT-reader -> CSV-writer pipeline's numeric formatting on Ubuntu 24.04.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt decimal-rendering
Log

            
readstat preserves a quoted CRLF in a string field across DTA roundtrip Port / libcsv / usage-readstat-r12-csv-quoted-newline-roundtrip Passed

Round-trips a quoted CSV field whose embedded newline is a CRLF (carriage-return + line-feed) through DTA and back to CSV and asserts the multi-line content reappears in the output, distinguishing the CRLF embedded-newline case from the LF-only case.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta quoted-newline
Log

            
readstat csv -> DTA writes a 2-column, 2-row file the reader summarises consistently Port / libcsv / usage-readstat-r12-csv-table-label-set-from-meta Passed

Round-trips a 2-column 2-row CSV through DTA via readstat and asserts the readstat reader summary reports "Stata binary file" with "Columns: 2" and "Rows: 2", locking in the CSV→DTA writer round-trip without depending on label propagation (top-level "label" → Table label and per-variable labels are both unstable across readstat 1.1.9 — the column/row totals are the documented stable surface).

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta table-label
Log

            
readstat dta - writes CSV body to stdout Port / libcsv / usage-readstat-r12-csv-to-stdout-dash-target Passed

Uses the documented "-" output target with a DTA input and asserts the CSV body lands on stdout (file descriptor 1) with the expected header and data rows, exercising the dump-to-stdout entry point distinct from a named .csv output file.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta stdout
Log

            
readstat csv -> .sav produces an SPSS binary file readable by readstat Port / libcsv / usage-readstat-r12-csv-to-zsav-file-suffix Passed

Converts a CSV directly to a .sav target and verifies the readstat summary identifies the resulting file as an SPSS binary file with the correct variable count, locking in sav extension routing through the SPSS writer. (csv -> .zsav segfaults on readstat 1.1.9 with the noble build options; .sav is the stable SPSS surface.)

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav compression
Log

            
readstat DTA summary reports Columns: 3 and Rows: 4 for a 4x3 input Port / libcsv / usage-readstat-r12-dta-summary-columns-rows-line Passed

Builds a 4-row 3-column DTA from CSV and asserts the readstat summary contains the precise "Columns: 3" and "Rows: 4" lines, locking in the count-line shape of the metadata view for a known-shape file.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta summary shape
Log

            
readstat with no arguments prints the usage banner including ReadStat version Port / libcsv / usage-readstat-r12-no-args-banner-includes-version Passed

Invokes readstat with no arguments, captures stdout+stderr, and asserts the resulting banner contains both the "ReadStat version" line and the conversion-mode descriptions, ensuring the bare-invocation path matches the help-flag content shape.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv cli banner
Log

            
readstat SAV writer reports a positive Format version line Port / libcsv / usage-readstat-r12-sav-format-version-3 Passed

Builds a SAV from a CSV and verifies the readstat summary reports "SPSS binary file" together with a "Format version: N" line where N is a positive integer. (readstat 1.1.9 emits version 2 or 3 depending on build options; either is fine — assert the line exists with a positive integer rather than pinning the exact value.)

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav format-version
Log

            
readstat XLSX archive contains xl/worksheets/sheet1.xml Port / libcsv / usage-readstat-r12-xlsx-sheet-1-xml-present Passed

Builds an XLSX from a CSV via DTA and verifies the resulting OOXML zip archive contains the worksheet entry "xl/worksheets/sheet1.xml", locking in the conventional sheet path used by the readstat XLSX writer.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xlsx archive
Log

            
readstat XPT summary reports Format: SAS transport file (XPORT) Port / libcsv / usage-readstat-r12-xpt-format-line-exact-text Passed

Builds an XPT from a CSV via DTA and verifies the readstat summary contains the precise "Format: SAS transport file (XPORT)" line, locking in the literal format-line text used by the readstat metadata view for XPT files on Ubuntu 24.04.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt format
Log

            
readstat XPT summary reports Table name: DATASET by default Port / libcsv / usage-readstat-r12-xpt-table-name-default-dataset Passed

Builds an XPT from a CSV via DTA and verifies the readstat summary contains the canonical "Table name: DATASET" line that the XPT writer emits in the absence of an explicit table-name override, distinguishing XPT defaults from formats that use the dataset label slot instead.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt table-name
Log

            
readstat DTA-to-CSV stdout dump emits exactly N+1 lines for N data rows Port / libcsv / usage-readstat-r13-csv-to-dta-multi-row-csv-readback-line-count Passed

Round-trips a 7-row 2-column CSV through DTA, dumps the DTA back to CSV via the dash stdout target, and asserts the resulting stdout contains exactly 8 newline-terminated lines (one header + seven data rows), pinning the line-count contract of the CSV-to-stdout dump path for a known shape.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta line-count
Log

            
readstat CSV to DTA to CSV preserves a 1.000000 numeric value exactly Port / libcsv / usage-readstat-r13-csv-to-dta-roundtrip-numeric-exact Passed

Round-trips a CSV row whose numeric column carries the integer 1 through DTA and back to CSV via the dash stdout target, and asserts the readback CSV renders the value as the canonical six-decimal fixed-point form "1.000000" rather than the bare integer or a scientific-notation form.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta numeric roundtrip
Log

            
readstat-produced POR contains the SPSS PORT FILE marker in its leading region Port / libcsv / usage-readstat-r13-csv-to-por-file-magic-spss-port Passed

Builds an SPSS portable POR file from a CSV via DTA and asserts the first kilobyte of the output contains the literal "SPSS PORT FILE" marker that the SPSS portable header embeds, locking in that the readstat POR writer emits a structurally recognisable SPSS portable text file rather than a CSV-shaped placeholder.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv por magic
Log

            
readstat-produced SAS7BDAT contains the canonical SAS7BDAT magic in its header Port / libcsv / usage-readstat-r13-csv-to-sas7bdat-file-magic-binary Passed

Builds a SAS7BDAT from a CSV via DTA and asserts the first kilobyte of the output contains the canonical SAS7BDAT magic byte sequence (c2 ea 81 60 b3 14 11 cf bd 92 08 00 09 c7 31 8c), locking in that the readstat SAS7BDAT writer emits a byte-recognisable SAS data file rather than a CSV-shaped placeholder.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat magic
Log

            
readstat-produced XPT carries the HEADER RECORD LIBV8 magic in the first 80 bytes Port / libcsv / usage-readstat-r13-csv-to-xpt-header-libname Passed

Builds an XPT from a CSV via DTA and asserts the first 80-byte record of the output contains the canonical "HEADER RECORD" preamble and the "LIBV8" library-version-8 token that marks a SAS XPORT v8 transport file as written by readstat on Ubuntu 24.04, locking in that the readstat XPT writer emits a structurally recognisable XPORT file rather than an arbitrarily-formed binary.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt magic
Log

            
readstat DTA summary reports Byte order: little-endian by default Port / libcsv / usage-readstat-r13-dta-summary-byte-order-line Passed

Builds a DTA from a CSV with no byte-order override and verifies the readstat summary contains the literal "Byte order: little-endian" line, locking in little-endian as the default byte order emitted by the readstat DTA writer on Ubuntu 24.04 — distinguishing the byte-order line from the format-version line and exercising the DTA path specifically.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta byte-order
Log

            
readstat DTA-to-SAV summary reports Format version: 2 Port / libcsv / usage-readstat-r13-dta-to-sav-format-version-line Passed

Builds an SPSS SAV file from a CSV via DTA and verifies the readstat summary reports the precise "Format version: 2" line on the SAV path, locking in that readstat 1.1.9 on Ubuntu 24.04 emits SPSS layout version 2 (not 3) for newly written SAV files — distinguishing the SAV version line from the DTA 118 default.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav format-version
Log

            
readstat POR summary reports Rows: -1 because the portable header lacks a row count Port / libcsv / usage-readstat-r13-por-summary-rows-line Passed

Builds an SPSS POR file from a CSV via DTA using uppercase variable names that the portable format requires, and verifies the readstat summary reports the literal "Rows: -1" line, locking in that POR shares the XPORT-style "row count not available from header" behaviour and distinguishing it from the DTA path which reports the precise row count.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv por summary
Log

            
readstat SAS7BDAT summary reports Text encoding UTF-8 by default Port / libcsv / usage-readstat-r13-sas7bdat-summary-encoding-utf8 Passed

Builds a SAS7BDAT from a CSV via DTA and verifies the readstat summary contains the literal "Text encoding: UTF-8" line on the SAS7BDAT path, distinguishing the SAS data file encoding default from the (well-known) DTA default and from the XPT path which omits the encoding line.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat encoding
Log

            
readstat XPT summary reports Rows: -1 because XPORT lacks a row count Port / libcsv / usage-readstat-r13-xpt-summary-rows-minus-one Passed

Builds an XPT file from a CSV via DTA and verifies the readstat summary reports "Rows: -1" rather than the actual row count, locking in the well-known XPORT behaviour where the writer cannot report a row count from the header alone — distinguishing the XPT path from DTA and SAS7BDAT which report the precise row count.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt rows
Log

            
readstat-produced POR carries the "ASCII SPSS PORT FILE" prefix in its leading region Port / libcsv / usage-readstat-r14-csv-to-por-ascii-prefix-marker Passed

Builds an SPSS POR from a CSV via DTA and asserts the first kilobyte of the output contains the literal "ASCII SPSS PORT FILE" prefix that the readstat POR writer emits, distinguishing the more specific ASCII-prefixed marker from the bare "SPSS PORT FILE" substring already covered.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv por magic
Log

            
readstat-produced XLSX is a ZIP container that unzips to expose [Content_Types].xml Port / libcsv / usage-readstat-r14-csv-to-xlsx-via-dta-content-type Passed

Round-trips a CSV through DTA and into XLSX via readstat, then runs the unzip(1) listing on the result and asserts it includes the "[Content_Types].xml" member that every Office Open XML package must contain — locking in that the XLSX writer emits a structurally valid ZIP/OOXML archive rather than a CSV-shaped placeholder.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xlsx ooxml
Log

            
readstat ZSAV summary reports Format: SPSS compressed binary file (ZSAV) Port / libcsv / usage-readstat-r14-csv-to-zsav-summary-format-line Passed

Builds a ZSAV from a CSV via DTA and verifies the readstat summary contains the precise "Format: SPSS compressed binary file (ZSAV)" line and a binary compression marker, locking in the literal format-line text used by the readstat metadata view for ZSAV files on Ubuntu 24.04 — distinguishing ZSAV's binary compression from SAV's row compression.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav format
Log

            
readstat DTA-to-ZSAV preserves the precise row count across the binary-compressed write Port / libcsv / usage-readstat-r14-dta-to-zsav-roundtrip-row-count Passed

Round-trips a 5-row CSV through DTA, then writes the DTA out as a ZSAV (binary-compressed SPSS), and verifies the ZSAV summary reports exactly the same row count as the source — confirming the binary-compression path of the ZSAV writer does not lose or duplicate rows on Ubuntu 24.04 readstat 1.1.9.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav roundtrip
Log

            
readstat SAS7BDAT summary reports Format version: 9 by default Port / libcsv / usage-readstat-r14-sas7bdat-format-version-nine Passed

Builds a SAS7BDAT from a CSV via DTA and verifies the readstat summary contains the literal "Format version: 9" line on the SAS7BDAT path, locking in version 9 as the default emitted by the SAS7BDAT writer on Ubuntu 24.04 — distinguishing it from the DTA default (118), the SAV default (2), and the XPT default (8).

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat format-version
Log

            
readstat SAS7BDAT summary reports Byte order: little-endian by default Port / libcsv / usage-readstat-r14-sas7bdat-summary-byte-order-line Passed

Builds a SAS7BDAT from a CSV via DTA and verifies the readstat summary contains the literal "Byte order: little-endian" line on the SAS7BDAT path, locking in little-endian as the default byte order emitted by the SAS7BDAT writer on Ubuntu 24.04 — distinguishing the SAS7BDAT byte-order line from the encoding line.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat byte-order
Log

            
readstat SAS7BDAT summary reports Table name: DATASET by default Port / libcsv / usage-readstat-r14-sas7bdat-table-name-default-dataset Passed

Builds a SAS7BDAT from a CSV via DTA and verifies the readstat summary contains the canonical "Table name: DATASET" line that the SAS7BDAT writer emits in the absence of an explicit table-name override, distinguishing the SAS7BDAT default from the DTA path which has no table-name slot in its summary.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat table-name
Log

            
readstat SAV summary reports Compression: rows by default Port / libcsv / usage-readstat-r14-sav-summary-compression-rows Passed

Builds a SAV from a CSV via DTA and verifies the readstat summary contains the literal "Compression: rows" line, locking in row-level compression as the default emitted by the readstat SAV writer on Ubuntu 24.04 — distinguishing SAV's row compression from ZSAV's binary compression.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav compression
Log

            
readstat XPT summary reports Format version: 8 by default Port / libcsv / usage-readstat-r14-xpt-format-version-eight Passed

Builds an XPT from a CSV via DTA and verifies the readstat summary contains the literal "Format version: 8" line on the XPT path, locking in XPORT v8 as the default emitted by the XPT writer on Ubuntu 24.04 — matching the LIBV8 token observed in the binary header and distinguishing it from the SAS7BDAT version 9 default.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt format-version
Log

            
readstat ZSAV summary reports Format version: 3 (vs SAV's 2) Port / libcsv / usage-readstat-r14-zsav-format-version-three Passed

Builds a ZSAV from a CSV via DTA and verifies the readstat summary contains the precise "Format version: 3" line, locking in that ZSAV files use SPSS layout version 3 in contrast to plain SAV files which use version 2 on Ubuntu 24.04 readstat 1.1.9.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav format-version
Log

            
readstat DTA summary reports Table label: (null) when no label is set Port / libcsv / usage-readstat-r15-dta-table-label-null-default Passed

Builds a DTA from a CSV with no explicit dataset label and verifies the readstat summary contains the literal "Table label: (null)" line — locking in that the readstat DTA writer leaves the dataset-label slot null and the metadata view formats null as the literal string "(null)" on Ubuntu 24.04 readstat 1.1.9. Distinct from the table-name line emitted by the SAS7BDAT and XPT paths.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta table-label
Log

            
readstat dta-to-sas7bdat preserves the precise row count across the conversion Port / libcsv / usage-readstat-r15-sas7bdat-rows-preserved-from-dta Passed

Builds a 4-row DTA from a CSV and converts it to SAS7BDAT, then asserts the SAS7BDAT readstat summary reports "Rows: 4" — locking in that the SAS7BDAT writer preserves the exact source row count when the input is a DTA on Ubuntu 24.04 readstat 1.1.9, complementary to the existing csv-to-sas7bdat magic and version tests.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat roundtrip rows
Log

            
readstat sas7bdat-to-csv conversion emits exactly the source row count plus a header Port / libcsv / usage-readstat-r15-sas7bdat-to-csv-row-count-correct Passed

Round-trips a 5-row CSV through DTA into SAS7BDAT, then converts the SAS7BDAT back to CSV via stdout and asserts the resulting CSV has exactly 6 lines (1 header + 5 data rows) — locking in that the SAS7BDAT read path enumerates all rows correctly on Ubuntu 24.04 readstat 1.1.9, distinct from XPT (which reports -1 in summary but still enumerates rows) and SAV/ZSAV roundtrips.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat conversion rows
Log

            
readstat SAV summary reports Byte order: little-endian by default Port / libcsv / usage-readstat-r15-sav-byte-order-little-endian Passed

Builds a SAV from a CSV via DTA and verifies the readstat summary contains the literal "Byte order: little-endian" line on the SAV path — locking in little-endian as the default byte order emitted by the readstat SAV writer on Ubuntu 24.04 readstat 1.1.9. Distinct from the DTA and SAS7BDAT byte-order tests already in r13/r14.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav byte-order
Log

            
readstat SAV summary reports Text encoding: UTF-8 by default Port / libcsv / usage-readstat-r15-sav-text-encoding-utf8-line Passed

Builds a SAV from a CSV via DTA and verifies the readstat summary contains the literal "Text encoding: UTF-8" line on the SAV path — locking in UTF-8 as the default text encoding emitted by the readstat SAV writer on Ubuntu 24.04 readstat 1.1.9. Distinct from the SAS7BDAT encoding-utf8 test in r13.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav encoding
Log

            
readstat sav-to-csv renders numeric integers as 6-decimal floating-point literals Port / libcsv / usage-readstat-r15-sav-to-csv-numeric-decimal-format Passed

Round-trips a 2-row CSV (with integer-looking numeric values) through DTA into SAV and back to CSV, and asserts the body contains the literal "1.000000" and "2.000000" forms — locking in that the SAV read path renders numeric fields with six decimal places by default on Ubuntu 24.04 readstat 1.1.9, matching the XPT and SAS7BDAT six-decimal rendering tests already in r11.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav decimal-format
Log

            
readstat XPT summary intentionally omits the Byte order line Port / libcsv / usage-readstat-r15-xpt-omits-byte-order-line Passed

Builds an XPT from a CSV via DTA and asserts the readstat summary contains NO line beginning with "Byte order:" — locking in the well-known XPT-specific shape where SAS XPORT files do not carry a runtime byte-order field, in contrast to DTA, SAV, ZSAV, and SAS7BDAT which all emit a Byte order line. Asserts the absence with -c 0.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt byte-order negative
Log

            
readstat XPT summary reports Columns: 2 for a 2-column input Port / libcsv / usage-readstat-r15-xpt-summary-columns-line Passed

Builds a 2-column XPT from a CSV via DTA and verifies the readstat summary contains the literal "Columns: 2" line — locking in that the SAS XPORT writer's metadata path reports column count as a top-level summary field on Ubuntu 24.04 readstat 1.1.9, complementary to the existing XPT format-version-8 and table-name tests.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt columns
Log

            
readstat ZSAV summary reports Columns: 2 like SAV does Port / libcsv / usage-readstat-r15-zsav-summary-columns-line Passed

Builds a 2-column ZSAV from a CSV via DTA and verifies the readstat summary contains the literal "Columns: 2" line — locking in that the ZSAV (binary-compressed SPSS) writer reports column count identically to plain SAV on Ubuntu 24.04 readstat 1.1.9, even though the format-version differs (3 for ZSAV vs 2 for SAV).

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav columns
Log

            
readstat zsav-to-csv conversion emits exactly the source row count plus a header Port / libcsv / usage-readstat-r15-zsav-to-csv-row-count-correct Passed

Round-trips a 5-row CSV through DTA into ZSAV, then converts the ZSAV back to CSV via stdout and asserts the resulting CSV has exactly 6 lines (1 header + 5 data rows) — locking in that the binary-compressed SPSS read path correctly enumerates all rows on Ubuntu 24.04 readstat 1.1.9, despite ZSAV summary metadata expressing the rows differently from DTA.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav conversion rows
Log

            
readstat preserves an embedded comma in a quoted string cell through DTA Port / libcsv / usage-readstat-r16-csv-comma-in-quoted-cell-survives Passed

Builds a CSV with a comma inside a quoted string field then round-trips it through DTA back to stdout CSV and asserts the recovered text retains the comma in a single quoted cell — verifying the libcsv-backed CSV reader does not split on inner commas.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv quoting dta
Log

            
readstat ingests a CSV with a newline inside a quoted string cell Port / libcsv / usage-readstat-r16-csv-embedded-newline-quoted-field Passed

Builds a CSV whose first string field contains an embedded newline within a quoted cell and asserts readstat reads it as a single row with 2 columns by checking the .dta summary reports Rows: 1 and Columns: 2.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv quoting embedded-newline
Log

            
readstat tolerates leading whitespace before unquoted numeric cells Port / libcsv / usage-readstat-r16-csv-leading-space-in-numeric-tolerated Passed

Builds a CSV whose numeric column cells carry one leading space before the digit, converts to DTA, and asserts the .dta summary reports the expected 3 rows and 2 columns — locking in readstat's tolerance for leading whitespace on numeric fields.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric whitespace
Log

            
readstat round-trips a one-data-row CSV through DTA back to stdout CSV exactly Port / libcsv / usage-readstat-r16-csv-single-data-row-stdout-csv Passed

Converts a CSV containing a single non-header row to .dta then back to CSV via stdout, asserting the recovered CSV has exactly 2 lines and preserves the data cell values byte-for-byte through the DTA hop.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta single-row
Log

            
readstat dta-to-stdout dash target emits a CSV with quoted header Port / libcsv / usage-readstat-r16-dta-stdout-dash-csv-shape Passed

Converts a small CSV to .dta and back to stdout CSV via the "-" target, asserting the produced CSV's first line is a comma-separated quoted header listing both column names — locking in the dash-target stdout CSV output shape.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta stdout dash
Log

            
readstat POR summary reports an SPSS portable format-version line Port / libcsv / usage-readstat-r16-por-format-version-line Passed

Converts a small CSV to .por via SAV, reads back the .por summary, and asserts the summary contains a "Format:" line that mentions SPSS portable — locking in readstat's portable-write surface without committing to a specific version number text.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv por format
Log

            
readstat-built xlsx contains xl/workbook.xml when inspected via python zipfile Port / libcsv / usage-readstat-r16-xlsx-zipfile-has-workbook-xml Passed

Converts CSV through DTA into an XLSX via readstat, then uses python3 zipfile to list the archive entries and asserts the standard "xl/workbook.xml" member is present — locking in the OOXML container structure of the readstat XLSX writer without relying on unzip or openpyxl.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xlsx ooxml
Log

            
readstat-built ZSAV file reports format-version 3 in its summary Port / libcsv / usage-readstat-r16-zsav-format-version-three Passed

Builds a ZSAV via the CSV->DTA->ZSAV chain and asserts the summary contains both "Format version: 3" and the "ZSAV" format label — locking in the binary-compressed SPSS writer's metadata shape on Ubuntu 24.04.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav format-version
Log

            
readstat reads its own stdout CSV back through a second conversion Port / libcsv / usage-readstat-r17-dta-stdout-csv-reparses Passed

Converts a CSV to .dta, then to stdout CSV, captures it as a new file, and asserts a follow-up CSV-to-DTA conversion against the captured output emits the same row/variable count log line as the original conversion — locking in stdout-csv re-readability.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta reparse
Log

            
readstat exits non-zero when the metadata declares zero variables Port / libcsv / usage-readstat-r17-empty-variables-rejected Passed

Feeds readstat a CSV with a header and a row paired with a metadata JSON whose variables array is empty, asserting the invocation exits non-zero — locking in that the writer refuses to produce output when no variables are declared.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv metadata error
Log

            
readstat conversion log encodes a numeric duration-seconds value Port / libcsv / usage-readstat-r17-log-duration-seconds-numeric Passed

Captures readstat's stdout from a CSV-to-DTA conversion and asserts the log contains a "Converted N variables and M rows in T seconds" line where the T token parses as a positive float — locking in the structured duration emission.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv log duration
Log

            
readstat SAV summary includes a Format-version line with any positive integer Port / libcsv / usage-readstat-r17-sav-summary-format-line-present Passed

Builds a SAV from a small CSV and asserts the summary contains an "SPSS" marker plus any Format-version line with a positive integer, deliberately accepting noble's actual emitted value (version 2) rather than pinning the exact number.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav version
Log

            
readstat round-trips a 3-row 2-column CSV through DTA back to stdout CSV with stable shape Port / libcsv / usage-readstat-r17-tiny-csv-stdout-shape Passed

Converts a CSV with three data rows and two columns to .dta then back to CSV via stdout, asserting the recovered CSV has exactly four lines (header + 3 rows) and contains all six data cell tokens — locking in tiny-grid shape preservation.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta roundtrip
Log

            
readstat stdout CSV output ends with a trailing newline Port / libcsv / usage-readstat-r17-trailing-newline-preserved Passed

Converts a small CSV to .dta and back to stdout CSV, then asserts the last byte of the recovered stream is a newline (0x0a) — locking in the trailing-newline contract of readstat's stdout CSV writer.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta trailing-newline
Log

            
readstat ZSAV summary still reports Format version 3 for a three-column input Port / libcsv / usage-readstat-r17-zsav-summary-format-version-three Passed

Builds a ZSAV from a three-column CSV via the DTA intermediate path and asserts the summary contains "Format version: 3" plus the ZSAV format label — locking in noble's compressed-SPSS writer for a wider input than the r16 two-column variant.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav version
Log

            
readstat round-trips a five-row two-column CSV through DTA back to stdout CSV Port / libcsv / usage-readstat-r18-csv-five-row-dta-roundtrip Passed

Builds a CSV with five data rows and two numeric columns, converts to .dta, then back to stdout CSV, and asserts the recovered output has exactly six lines (header + 5 rows) and contains every data cell — locking in row-count and content preservation for a slightly larger payload than the r17 tiny case.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta roundtrip r18
Log

            
readstat reports zero converted rows when a CSV has only a header line Port / libcsv / usage-readstat-r18-empty-data-rows-rejected Passed

Feeds readstat a header-only CSV with no data rows and asserts the log line emits "Converted 0 variables and 0 rows" along with the "One or more columns must be provided" diagnostic — locking in the structured complaint for header-only inputs.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv header-only diagnostic r18
Log

            
readstat preserves negative integer cells in CSV-to-DTA-to-CSV roundtrips Port / libcsv / usage-readstat-r18-negative-integer-rendering Passed

Converts a CSV containing a column of negative integers through DTA and back to stdout CSV, then asserts each negative value appears in the recovered output with the six-decimal numeric rendering ("-1.000000", "-2.000000", "-3.000000").

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta negative r18
Log

            
readstat stdout CSV renders integer cells as N.000000 with six decimal places Port / libcsv / usage-readstat-r18-numeric-value-six-decimals Passed

Converts a CSV with a single integer column through DTA and back to stdout CSV, then asserts the lone data row equals "7.000000" — locking in the six-decimal default rendering of numeric cells for integer inputs.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta numeric decimals r18
Log

            
readstat SAS7BDAT summary carries the SAS7BDAT format label Port / libcsv / usage-readstat-r18-sas7bdat-summary-format-line Passed

Builds a SAS7BDAT from a small two-column CSV via the DTA intermediate path and asserts the summary contains a "Format:" line mentioning SAS7BDAT — locking in the SAS binary writer's format-label emission.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat format r18
Log

            
readstat CSV-to-SAV-to-CSV roundtrip preserves the column header tokens Port / libcsv / usage-readstat-r18-sav-roundtrip-header-preserved Passed

Converts a small CSV to SAV via SPSS metadata, then back to stdout CSV, and asserts the recovered first line contains both column tokens "p" and "q" — locking in column header preservation through the SAV writer/reader pair.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav header roundtrip r18
Log

            
readstat stdout CSV writer wraps each header column name in double quotes Port / libcsv / usage-readstat-r18-stdout-csv-double-quoted-header Passed

Converts a small CSV with two named columns through DTA and back to stdout CSV, then asserts the first line of the recovered output is exactly the double-quoted comma-separated header — locking in the stdout writer's quoted-header convention.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta header quote r18
Log

            
readstat summary reports the exact Rows count for a four-row input Port / libcsv / usage-readstat-r18-summary-rowcount-line Passed

Converts a CSV with exactly four data rows to .dta then captures the summary by invoking readstat against the .dta with no output destination, and asserts the summary contains "Rows: 4" — locking in row-count summary emission for known cardinality.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta summary r18
Log

            
readstat summary of a three-column DTA reports Columns 3 and matching Rows Port / libcsv / usage-readstat-r18-three-column-summary-shape Passed

Builds a three-column CSV with three data rows, converts to .dta, captures the summary, and asserts the summary contains both "Columns: 3" and "Rows: 3" — locking in the shape report for an explicitly multi-column input.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta summary shape r18
Log

            
readstat builds a non-empty XPT file from CSV via the DTA intermediate Port / libcsv / usage-readstat-r18-xpt-output-non-empty Passed

Converts a small two-column CSV through DTA to SAS XPORT format, asserts the resulting .xpt file exists with non-zero size, then runs readstat against the .xpt to capture a summary that mentions XPORT — locking in the SAS XPT writer path.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt sas r18
Log

            
readstat CSV-DTA-CSV roundtrip preserves every data cell across three rows Port / libcsv / usage-readstat-r19-csv-dta-csv-data-cells-preserved Passed

Converts a three-row two-column CSV through DTA and back to stdout CSV, then asserts the recovered output contains every distinct numeric value from the source - locking in cell-by-cell content preservation for a small mixed-value payload.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta cells roundtrip r19
Log

            
readstat stdout CSV preserves all three header tokens through a DTA hop Port / libcsv / usage-readstat-r19-csv-three-cols-stdout-headers-present Passed

Builds a CSV with three numeric columns named alpha, beta, gamma, converts to .dta, then back to stdout CSV and asserts the recovered first line contains all three header tokens - locking in three-column header preservation through the DTA reader and writer.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta header three-columns r19
Log

            
readstat stdout CSV of a two-row DTA emits exactly three lines including header Port / libcsv / usage-readstat-r19-csv-two-row-stdout-row-count Passed

Converts a two-row two-column CSV through DTA and back to stdout CSV, then asserts the recovered CSV has exactly three lines (one header plus two data rows) - locking in stdout line-count fidelity for the smallest non-trivial multi-row payload.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta stdout r19
Log

            
readstat preserves a positive decimal cell 1.5 through the CSV-DTA-CSV roundtrip Port / libcsv / usage-readstat-r19-dta-numeric-column-positive-float Passed

Converts a single-row CSV containing the value 1.5 through DTA and back to stdout CSV, then asserts the lone data row equals "1.500000" - locking in fractional decimal rendering at the readstat six-decimal default.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta decimal r19
Log

            
readstat summary of a six-row DTA reports Rows: 6 Port / libcsv / usage-readstat-r19-dta-rows-line-matches-six-rows Passed

Builds a single-column CSV with six data rows, converts to .dta, captures the summary output, and asserts it contains the literal "Rows: 6" - locking in the row-count summary line on a row count distinct from existing r17/r18 cases.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta summary rows r19
Log

            
readstat summary of a two-column DTA reports Columns: 2 Port / libcsv / usage-readstat-r19-dta-summary-columns-two Passed

Builds a two-column CSV with three rows, converts to .dta, captures the summary, and asserts it contains the literal token "Columns: 2" - locking in the column-count line of the DTA summary for the exact two-column case.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta summary columns r19
Log

            
readstat writes a non-empty SAS7BDAT file from CSV via the DTA intermediate Port / libcsv / usage-readstat-r19-sas7bdat-output-non-empty Passed

Converts a two-row two-column CSV through DTA and into a .sas7bdat file, asserts the produced file exists with non-zero size, and runs readstat over the .sas7bdat to capture a summary containing the SAS7BDAT format label - locking in the SAS7BDAT writer output path with two numeric columns.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat output r19
Log

            
readstat summary of a four-row SAV reports Rows: 4 Port / libcsv / usage-readstat-r19-sav-summary-rows-line Passed

Builds a CSV with four data rows, converts to .sav via SPSS metadata, captures the summary output, and asserts it contains the literal "Rows: 4" - locking in the row-count summary line on the SAV writer path with a row count distinct from existing tests.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav summary rows r19
Log

            
readstat stdout CSV output ends with a trailing newline byte Port / libcsv / usage-readstat-r19-stdout-csv-trailing-newline Passed

Converts a two-row CSV through DTA back to stdout CSV redirected to a file, reads the last byte of that file, and asserts it is the LF (0x0a) character - locking in stdout CSV terminator behavior of the readstat client.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta stdout newline r19
Log

            
readstat builds a non-empty ZSAV from CSV via the DTA intermediate Port / libcsv / usage-readstat-r19-zsav-output-non-empty Passed

Converts a small CSV through DTA into a .zsav, asserts the produced file exists with non-zero size, and runs readstat over the .zsav to capture a summary containing the ZSAV format label - locking in the ZSAV writer output path for a small two-column input.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav output r19
Log

            
readstat CSV-DTA-CSV preserves a decimal fraction (3.5) through the roundtrip Port / libcsv / usage-readstat-r20-csv-decimal-roundtrip-preserved Passed

Builds a one-row CSV containing 3.5, converts through .dta and back to stdout CSV, and asserts the recovered output contains the token "3.5" - locking in fractional-value preservation through the DTA roundtrip.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta decimal r20
Log

            
readstat CSV-DTA-CSV preserves five distinct integer values in a single column Port / libcsv / usage-readstat-r20-csv-five-distinct-values-survive Passed

Builds a single-column CSV with five distinct integers, converts to .dta and back to stdout CSV, then asserts each integer is recovered in the output - locking in single-column row preservation through the DTA roundtrip path.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta single-column integers r20
Log

            
readstat CSV-DTA-CSV preserves a negative integer value Port / libcsv / usage-readstat-r20-csv-negative-value-survives Passed

Builds a CSV containing a negative integer (-42), converts through .dta back to stdout CSV, and asserts the recovered output contains the literal "-42" - locking in sign preservation through the DTA writer/reader.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta negative r20
Log

            
readstat summary of a four-row SAS7BDAT (via DTA) reports Rows: 4 Port / libcsv / usage-readstat-r20-csv-sas7bdat-summary-rows Passed

Builds a four-row CSV, converts to .dta via Stata metadata, converts the .dta to .sas7bdat, then captures the summary output and asserts it contains the literal "Rows: 4" - locking in row-count reporting on the SAS7BDAT writer/reader path.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat summary rows r20
Log

            
readstat CSV-SAV-CSV roundtrip preserves every data cell across three rows Port / libcsv / usage-readstat-r20-csv-sav-csv-roundtrip-cells Passed

Converts a three-row two-column CSV through SAV and back to stdout CSV, then asserts the recovered output contains every distinct numeric value from the source - locking in cell preservation for the SAV writer/reader paths.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav cells roundtrip r20
Log

            
readstat CSV-DTA stdout reader emits five data lines plus one header Port / libcsv / usage-readstat-r20-csv-stdout-row-count-five Passed

Builds a CSV with five data rows, converts to .dta, then reads it back to stdout CSV, and asserts the output has exactly six total non-empty lines (one header + five data) - locking in the row-count fidelity through the stdout CSV writer.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta stdout rowcount r20
Log

            
readstat CSV-DTA-XPT writer produces a non-empty XPT file Port / libcsv / usage-readstat-r20-csv-xpt-output-non-empty Passed

Builds a tiny CSV, converts to .dta via Stata metadata, then converts the .dta to a SAS Transport (.xpt) file and asserts the produced .xpt exists with positive byte length - locking in the XPT writer output path via the DTA intermediate.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt output r20
Log

            
readstat summary of a DTA file emits a Format: line referencing Stata Port / libcsv / usage-readstat-r20-dta-summary-format-line Passed

Converts a tiny CSV to .dta via Stata metadata, captures the summary output for the .dta file, and asserts it contains a line starting with "Format:" - locking in the format-line summary path on the DTA reader.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage dta summary format r20
Log

            
readstat summary of a single-column SAV reports Columns: 1 Port / libcsv / usage-readstat-r20-sav-summary-columns-one Passed

Builds a single-column CSV, converts to .sav, captures the summary output, and asserts it contains the literal "Columns: 1" - locking in the column-count summary line on the SAV writer path for a width of one.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage sav summary columns r20
Log

            
readstat summary of a three-row ZSAV (via DTA) reports Rows: 3 Port / libcsv / usage-readstat-r20-zsav-summary-rows-three Passed

Builds a CSV with three data rows, converts to .dta via Stata metadata, then converts the .dta to .zsav, captures the summary output, and asserts it contains the literal "Rows: 3" - locking in row-count summary reporting on the compressed SAV (ZSAV) writer path via the DTA intermediate.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage zsav summary rows r20
Log

            
readstat CSV-DTA-CSV preserves four distinct ASCII strings in row order Port / libcsv / usage-readstat-r21-csv-dta-string-roundtrip-four-rows Passed

Builds a four-row string-only CSV with metadata Stata STRING column, converts to DTA and back to CSV, then asserts the recovered stdout CSV preserves each ASCII token verbatim and in the same row order - locking in a four-row string roundtrip distinct from the existing five-row integer/three-string roundtrip tests.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta string r21
Log

            
readstat CSV with one numeric and one string column preserved through DTA Port / libcsv / usage-readstat-r21-csv-mixed-types-survive-roundtrip Passed

Builds a 3-row CSV with a numeric column and a string column, converts through .dta and back to stdout CSV, and asserts both columns' values appear in the recovered output - locking in mixed-type-column roundtrip behavior at 3 rows distinct from existing one-numeric-one-string and r9-mixed tests by checking specific token presence in both columns.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta mixed-types r21
Log

            
readstat CSV-DTA-CSV roundtrip preserves six distinct ASCII strings Port / libcsv / usage-readstat-r21-csv-multi-distinct-strings-survive Passed

Builds a six-row string CSV with non-overlapping tokens, converts through .dta and back to stdout CSV, and asserts each unique token appears in the recovered output - locking in a six-distinct-string survival contract distinct from prior four/five-row string tests.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta multi-string r21
Log

            
readstat CSV-to-SAS7BDAT preserves six rows on stdout CSV readback Port / libcsv / usage-readstat-r21-csv-sas7bdat-rowcount-six Passed

Builds a six-row CSV, converts through .dta to .sas7bdat, reads back to stdout CSV, and asserts the recovered output has exactly seven non-empty lines (one header + six data rows) - locking in SAS7BDAT row-count fidelity on six-row input distinct from prior summary-rows tests.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage sas7bdat rowcount r21
Log

            
readstat CSV-SAV-CSV roundtrip preserves four distinct decimal values Port / libcsv / usage-readstat-r21-csv-sav-distinct-floats-survive Passed

Builds a four-row CSV with distinct decimal values (1.5, 2.5, 3.5, 4.5), converts through .sav and back to stdout CSV, and asserts each decimal token appears in the recovered output - locking in decimal preservation through the SAV writer path on a four-value sequence distinct from prior 3.5-only or integer tests.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sav decimals r21
Log

            
readstat summary of a four-row SAV converted from CSV reports Rows: 4 Port / libcsv / usage-readstat-r21-csv-sav-rows-four-summary Passed

Builds a four-row CSV with SPSS metadata, converts to .sav directly (skipping the DTA intermediate), captures the summary, and asserts it contains "Rows: 4" - locking in row-count summary reporting on the direct CSV-to-SAV writer path with four data rows specifically.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage sav summary rows r21
Log

            
readstat CSV stdout output begins with quoted header column name Port / libcsv / usage-readstat-r21-csv-stdout-header-present Passed

Converts a two-row CSV through DTA and asserts the very first line of the stdout CSV is the quoted header `"vname"` (matching readstat's header-quoting convention) - locking in header emission on the stdout dash output distinct from existing header-line tests which check column count or three-column shapes.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv dta stdout-header r21
Log

            
readstat XPT summary reports Columns: 2 for a two-column CSV input Port / libcsv / usage-readstat-r21-csv-xpt-summary-columns-two Passed

Builds a two-column CSV with Stata metadata, converts to .dta then to .xpt, captures the summary, and asserts the literal "Columns: 2" appears - locking in XPT column-count summary specifically (existing XPT tests check rows or single columns).

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage xpt summary columns r21
Log

            
readstat summary of a six-row ZSAV reports Rows: 6 Port / libcsv / usage-readstat-r21-csv-zsav-rowcount-summary Passed

Builds a six-row CSV, converts to .dta then to .zsav, captures the summary, and asserts the literal "Rows: 6" appears - locking in compressed SAV row-count summary on a non-zero non-{3,5} row count (existing zsav tests cover 3-row and 5-row counts).

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage zsav summary rows r21
Log

            
readstat summary of a three-column DTA reports Columns: 3 Port / libcsv / usage-readstat-r21-dta-summary-columns-three Passed

Builds a three-column CSV with Stata metadata declaring three NUMERIC variables, converts to DTA, captures the summary, and asserts it contains "Columns: 3" - locking in column-count summary reporting for three-column input specifically (existing tests cover one/two column counts).

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage dta summary columns r21
Log

            
readstat handles doubled-quote escape Port / libcsv / usage-readstat-r9-csv-double-quote-escape Passed

Provides a CSV cell containing an escaped double-quote ("") and confirms readstat parses the row as a single quoted field whose value contains a literal double quote.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv escaping
Log

            
readstat 200 string rows Port / libcsv / usage-readstat-r9-csv-many-string-rows Passed

Stores 200 short string rows into Stata DTA via readstat and verifies the row count and a known cell are preserved on read-back.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv strings
Log

            
readstat mixed numeric and string columns Port / libcsv / usage-readstat-r9-csv-mixed-numeric-string-cols Passed

Builds a CSV with one numeric and two string columns, converts to DTA, and confirms both column kinds are preserved on readback.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv types
Log

            
readstat preserves negative float values Port / libcsv / usage-readstat-r9-csv-negative-floats-roundtrip Passed

Roundtrips a CSV containing negative fractional values through DTA and back to CSV, asserting each negative value is preserved with six-decimal formatting.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv numeric
Log

            
readstat preserves quoted comma cell Port / libcsv / usage-readstat-r9-csv-quoted-comma-cell Passed

Embeds a literal comma inside a quoted CSV cell and verifies readstat keeps the field as a single column without splitting on the inner comma.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv quoting
Log

            
readstat single column 100 rows Port / libcsv / usage-readstat-r9-csv-single-column-100-rows Passed

Converts a 100-row single-column CSV through DTA and confirms the row count and a representative middle value are preserved.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv large
Log

            
readstat CSV through SPSS SAV format Port / libcsv / usage-readstat-r9-csv-spss-sav-roundtrip Passed

Converts a CSV through the SPSS .sav format and back to CSV and confirms the cell values reappear unchanged.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv spss
Log

            
readstat preserves tab separators as cell content Port / libcsv / usage-readstat-r9-csv-tab-not-comma-rejected Passed

Feeds a tab-separated input through readstat and verifies the comma parser treats the line as a single column rather than splitting on tabs.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv parsing
Log

            
readstat tolerates extra trailing newlines Port / libcsv / usage-readstat-r9-csv-trailing-newline-tolerance Passed

Appends multiple trailing blank lines to a small CSV and confirms readstat does not count them as additional rows.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv parsing
Log

            
readstat writes SPSS .sav with compression Port / libcsv / usage-readstat-r9-csv-zsav-compressed-output Passed

Writes a CSV through readstat into the SPSS .sav format and verifies the output is non-empty and round-trips back through readstat with the right shape.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav
Log

            
readstat SAS7BDAT summary metadata Port / libcsv / usage-readstat-sas7bdat-summary-format Passed

Builds a SAS7BDAT file from CSV via DTA and verifies the metadata summary identifies the SAS data format and reports the dataset shape.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv sas7bdat metadata
Log

            
readstat SAV column count Port / libcsv / usage-readstat-sav-column-count Passed

Writes a SAV dataset and verifies readstat reports the expected column count.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat comma string value Port / libcsv / usage-readstat-sav-comma-value Passed

Converts a string containing a comma through SAV and verifies CSV escaping.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV count sum Port / libcsv / usage-readstat-sav-count-sum Passed

Exercises readstat sav count sum through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat SAV date string Port / libcsv / usage-readstat-sav-date-string-batch11 Passed

Preserves a date-like string through readstat SAV conversion.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV decimal number Port / libcsv / usage-readstat-sav-decimal-number Passed

Converts decimal numeric data through SAV and verifies numeric formatting.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV double quote string Port / libcsv / usage-readstat-sav-double-quote-string-batch11 Passed

Roundtrips an escaped double quote string through readstat SAV conversion.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV empty string row Port / libcsv / usage-readstat-sav-empty-string-row Passed

Converts a CSV row containing an empty quoted string to SAV with readstat and verifies the summary still reports a single column.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV empty string Port / libcsv / usage-readstat-sav-empty-string Passed

Converts an empty string field through SAV and verifies the row is preserved.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV header fields Port / libcsv / usage-readstat-sav-header-fields Passed

Converts CSV to SAV with readstat and verifies the exported CSV header row preserves the expected field order.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV large positive number Port / libcsv / usage-readstat-sav-large-positive-number Passed

Converts a six-digit positive integer to SAV with readstat and verifies the formatted decimal value in the output CSV.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV leading space note Port / libcsv / usage-readstat-sav-leading-space-note Passed

Exercises readstat sav leading space note through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat SAV leading zero string Port / libcsv / usage-readstat-sav-leading-zero-string Passed

Converts a string field with leading zeros through SAV and verifies the leading zeros survive export.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV long string Port / libcsv / usage-readstat-sav-long-string Passed

Converts a longer string field through SAV and verifies the text survives.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV mixed-case header Port / libcsv / usage-readstat-sav-mixed-case-header-roundtrip Passed

Converts a mixed-case CSV header to SAV with readstat and verifies the round-tripped header preserves the original column casing.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV mixed decimal sign Port / libcsv / usage-readstat-sav-mixed-decimal-sign Passed

Converts signed decimal numbers to SAV with readstat and verifies both formatted values in the output CSV.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV mixed group value Port / libcsv / usage-readstat-sav-mixed-group Passed

Exercises readstat sav mixed group value through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat SAV multiline note Port / libcsv / usage-readstat-sav-multiline-note-roundtrip Passed

Converts a quoted multiline CSV field to SAV with readstat and verifies both lines survive the round-tripped output.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV negative number Port / libcsv / usage-readstat-sav-negative-number Passed

Converts a negative numeric field through SAV and verifies the value survives export.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV numeric-looking string Port / libcsv / usage-readstat-sav-numeric-string-roundtrip Passed

Converts a decimal-looking string column to SAV with readstat and verifies the round-tripped output still preserves the quoted text form.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV pipe note Port / libcsv / usage-readstat-sav-pipe-note Passed

Exercises readstat sav pipe note through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat SAV quoted comma string Port / libcsv / usage-readstat-sav-quoted-comma-string Passed

Converts a quoted CSV field containing a comma to SAV with readstat and verifies the embedded comma survives the round trip.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV row count Port / libcsv / usage-readstat-sav-row-count Passed

Writes four rows to SAV and checks readstat summary row metadata.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv metadata
Log

            
readstat SAV row order Port / libcsv / usage-readstat-sav-row-order Passed

Converts multiple CSV rows through SAV and verifies row ordering is preserved in exported data.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV scientific number Port / libcsv / usage-readstat-sav-scientific-number Passed

Converts a scientific-notation numeric CSV field to SAV with readstat and verifies the normalized numeric output.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV score sum Port / libcsv / usage-readstat-sav-score-sum Passed

Converts multiple CSV rows through SAV and verifies numeric score aggregation over the exported data.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV single column Port / libcsv / usage-readstat-sav-single-column Passed

Converts a single-column CSV to SAV with readstat and verifies the summary reports one column.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV slash note Port / libcsv / usage-readstat-sav-slash-note Passed

Converts a slash-delimited text field through SAV and verifies the punctuation survives export.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV small decimal Port / libcsv / usage-readstat-sav-small-decimal-batch11 Passed

Roundtrips a small decimal through readstat SAV conversion.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV spaced value Port / libcsv / usage-readstat-sav-spaced-value Passed

Converts a spaced string field through SAV and verifies the text survives export.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV single row summary Port / libcsv / usage-readstat-sav-summary-single-row Passed

Exercises readstat sav single row summary through a dependent-client usage scenario.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage
Log

            
readstat SAV tab note Port / libcsv / usage-readstat-sav-tab-note Passed

Converts a CSV field containing a tab to SAV with readstat and verifies the tab survives the round trip.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV three row numbers Port / libcsv / usage-readstat-sav-three-row-numbers Passed

Converts three numeric rows to SAV with readstat and verifies all three formatted decimal values appear in the output CSV.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV three rows Port / libcsv / usage-readstat-sav-three-rows Passed

Writes three CSV rows to SAV with readstat and verifies all rows return.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV to CSV Port / libcsv / usage-readstat-sav-to-csv Passed

Runs readstat to read an SPSS SAV dataset generated from CSV and emit CSV rows.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat SAV two-column summary Port / libcsv / usage-readstat-sav-two-column-summary Passed

Converts a two-column CSV to SAV with readstat and verifies the summary reports two columns.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV two-row strings Port / libcsv / usage-readstat-sav-two-row-strings-roundtrip Passed

Converts two string rows to SAV with readstat and verifies both rows survive round trip in the original order.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV two string columns Port / libcsv / usage-readstat-sav-two-string-columns-batch11 Passed

Roundtrips two string columns through readstat SAV conversion.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV underscore header Port / libcsv / usage-readstat-sav-underscore-header-batch11 Passed

Writes a SAV file from a CSV column with an underscore header.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV Unicode string Port / libcsv / usage-readstat-sav-unicode-string Passed

Converts a CSV containing Unicode text to SAV with readstat and verifies the decoded string survives the round trip.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV zero number Port / libcsv / usage-readstat-sav-zero-number Passed

Converts a zero-valued numeric column to SAV with readstat and verifies the zero survives round trip.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv readstat
Log

            
readstat SAV zero value Port / libcsv / usage-readstat-sav-zero-value Passed

Converts a zero numeric field through SAV and verifies the zero value is preserved.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat honors user_width metadata for string columns Port / libcsv / usage-readstat-string-user-width-honored Passed

Builds a DTA from CSV with a STRING column carrying a 20-character "user_width" hint in metadata and a 20-character value, then verifies the round-trip back to CSV keeps the full unmodified string and the DTA summary still reports two rows and two columns.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv metadata width
Log

            
readstat summary line format parsed by regex Port / libcsv / usage-readstat-summary-line-format-regex Passed

Converts a CSV through DTA and SAV and parses each summary output with line-anchored regular expressions for the Columns, Rows, Compression, Text encoding, and Byte order fields, verifying both that the lines exist and that their values match the file shape rather than relying on plain substring search.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv summary regex
Log

            
readstat summary timestamp line matches expected calendar shape Port / libcsv / usage-readstat-summary-timestamp-line-shape Passed

Generates a DTA and a SAV from a CSV and verifies each summary's "Timestamp:" line matches the day-month-year hour:minute pattern (DD MMM YYYY HH:MM) emitted by readstat, locking in that the calendar field is well-formed even though the actual moment depends on the test run time.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv summary timestamp
Log

            
readstat wide CSV metadata Port / libcsv / usage-readstat-wide-csv Passed

Runs readstat with four CSV variables and verifies summary metadata and fourth-column export.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv
Log

            
readstat XLSX sheet dimension reflects three columns and eight data rows Port / libcsv / usage-readstat-xlsx-sheet-dimension-larger Passed

Builds an XLSX from an eight-row three-column CSV via DTA and parses the sheet1 XML to verify the dimension attribute is exactly A1:C9 (three columns and one header plus eight data rows) and that the eighth data row contains the trailing string code reference for the final group entry.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xlsx dimension
Log

            
readstat XPT summary metadata Port / libcsv / usage-readstat-xpt-summary-format Passed

Generates an XPT file from CSV via DTA and verifies the metadata summary identifies the SAS transport format and column count.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv xpt metadata
Log

            
readstat ZSAV compression summary Port / libcsv / usage-readstat-zsav-compression-summary Passed

Builds a ZSAV file from CSV via DTA and verifies the metadata summary reports binary compression and matching row and column counts.

Run
Port
Kind
usage
Client
readstat
Duration
0.00s
Tags
usage csv zsav metadata
Log