From 7bc653bfe7c68191c45a51aacbdc11c0cef02fff Mon Sep 17 00:00:00 2001 From: acpaquette Date: Thu, 18 Apr 2024 10:38:13 -0700 Subject: [PATCH 1/2] Fixed FitsToJson subprocess error --- isis/src/base/objs/FitsToJson/FitsToJson.cpp | 8 +++- .../ProcessImportFits/ProcessImportFits.cpp | 2 +- isis/tests/FitsToJsonTests.cpp | 44 +++++++++---------- 3 files changed, 29 insertions(+), 25 deletions(-) diff --git a/isis/src/base/objs/FitsToJson/FitsToJson.cpp b/isis/src/base/objs/FitsToJson/FitsToJson.cpp index bfb693ec25..b50f299a6e 100644 --- a/isis/src/base/objs/FitsToJson/FitsToJson.cpp +++ b/isis/src/base/objs/FitsToJson/FitsToJson.cpp @@ -85,7 +85,7 @@ namespace Isis { line.TrimHead(" "); } // If the line still has anything in it, treat it is as a comment. - if (line.size() > 0) { + if (line.size() > 2) { line.TrimHead(" /"); label.addComment(line.ToQt()); if (line != line.Token("[")) { @@ -101,9 +101,13 @@ namespace Isis { line = readBuf; place += 80; } + + // Save off the PvlGroup and the number of records read from this label fitsPvl.addGroup(*fitsLabel); + headerSizes->append((int)ceil(place / 2880.0)); + // Move the file pointer past the padding after the "END" (i.e., points to start of data) - std::streamoff jump; + std::streamoff jump = 0; jump = headerSizes->last() * 2880 - place; fileStream.seekg(jump, std::ios_base::cur); diff --git a/isis/src/base/objs/ProcessImportFits/ProcessImportFits.cpp b/isis/src/base/objs/ProcessImportFits/ProcessImportFits.cpp index 18f1da1af7..25c36b4686 100644 --- a/isis/src/base/objs/ProcessImportFits/ProcessImportFits.cpp +++ b/isis/src/base/objs/ProcessImportFits/ProcessImportFits.cpp @@ -118,7 +118,7 @@ namespace Isis { line.TrimHead(" "); } // If the line still has anything in it, treat it is as a comment. - if (line.size() > 0) { + if (line.size() > 2) { line.TrimHead(" /"); label.addComment(line.ToQt()); // A possible format for units, other possiblites exist. diff --git a/isis/tests/FitsToJsonTests.cpp b/isis/tests/FitsToJsonTests.cpp index 9582a0fb4c..c02b717056 100644 --- a/isis/tests/FitsToJsonTests.cpp +++ b/isis/tests/FitsToJsonTests.cpp @@ -19,21 +19,21 @@ TEST(FitsToJson, FitsConversion) { FAIL() << "Unable to convert lorri fits label to json " << e.toString().toStdString().c_str() << std::endl; } // Instrument info - EXPECT_EQ(jsonData["FitsLabels"]["HOSTNAME"]["Value"], "NEW HORIZONS"); - EXPECT_EQ(jsonData["FitsLabels"]["INSTRU"]["Value"], "lor"); - EXPECT_EQ(jsonData["FitsLabels"]["TARGET"]["Value"], "IO"); - EXPECT_EQ(jsonData["FitsLabels"]["SPCUTCAL"]["Value"], "2007-02-28T13:14:19.358"); - EXPECT_EQ(jsonData["FitsLabels"]["SPCSCLK"]["Value"], "1/0034974376:48500"); - EXPECT_EQ(jsonData["FitsLabels"]["SPCSCDP"]["Value"], "1748718848500.0"); - EXPECT_EQ(jsonData["FitsLabels"]["EXPTIME"]["Value"], "0.02"); + EXPECT_EQ(jsonData["FitsLabels"][0]["HOSTNAME"]["Value"], "NEW HORIZONS"); + EXPECT_EQ(jsonData["FitsLabels"][0]["INSTRU"]["Value"], "lor"); + EXPECT_EQ(jsonData["FitsLabels"][0]["TARGET"]["Value"], "IO"); + EXPECT_EQ(jsonData["FitsLabels"][0]["SPCUTCAL"]["Value"], "2007-02-28T13:14:19.358"); + EXPECT_EQ(jsonData["FitsLabels"][0]["SPCSCLK"]["Value"], "1/0034974376:48500"); + EXPECT_EQ(jsonData["FitsLabels"][0]["SPCSCDP"]["Value"], "1748718848500.0"); + EXPECT_EQ(jsonData["FitsLabels"][0]["EXPTIME"]["Value"], "0.02"); // Archive info - EXPECT_EQ(jsonData["FitsLabels"]["HSCOMPR"]["Value"], "LOSSLESS"); - EXPECT_EQ(jsonData["FitsLabels"]["OBSCOMPL"]["Value"], "COMPLETE"); - EXPECT_EQ(jsonData["FitsLabels"]["REQDESC"]["Value"], "Jupiter shine"); + EXPECT_EQ(jsonData["FitsLabels"][0]["HSCOMPR"]["Value"], "LOSSLESS"); + EXPECT_EQ(jsonData["FitsLabels"][0]["OBSCOMPL"]["Value"], "COMPLETE"); + EXPECT_EQ(jsonData["FitsLabels"][0]["REQDESC"]["Value"], "Jupiter shine"); // Kernels info - EXPECT_EQ(jsonData["FitsLabels"]["FORMAT"]["Value"], "0"); + EXPECT_EQ(jsonData["FitsLabels"][0]["FORMAT"]["Value"], "0"); fileTemplate = "data/leisa2isis/lsb_0034933739_0x53c_sci_1_cropped.fit"; @@ -45,21 +45,21 @@ TEST(FitsToJson, FitsConversion) { } // Instrument info - EXPECT_EQ(jsonData["FitsLabels"]["HOSTNAME"]["Value"], "NEW HORIZONS"); - EXPECT_EQ(jsonData["FitsLabels"]["INSTRU"]["Value"], "lei"); - EXPECT_EQ(jsonData["FitsLabels"]["TARGET"]["Value"], "EUROPA"); - EXPECT_EQ(jsonData["FitsLabels"]["SPCSCLK0"]["Value"], "1/0034931099:00000"); - EXPECT_EQ(jsonData["FitsLabels"]["RALPHEXP"]["Value"], "0.676"); + EXPECT_EQ(jsonData["FitsLabels"][0]["HOSTNAME"]["Value"], "NEW HORIZONS"); + EXPECT_EQ(jsonData["FitsLabels"][0]["INSTRU"]["Value"], "lei"); + EXPECT_EQ(jsonData["FitsLabels"][0]["TARGET"]["Value"], "EUROPA"); + EXPECT_EQ(jsonData["FitsLabels"][0]["SPCSCLK0"]["Value"], "1/0034931099:00000"); + EXPECT_EQ(jsonData["FitsLabels"][0]["RALPHEXP"]["Value"], "0.676"); // Archive info - EXPECT_EQ(jsonData["FitsLabels"]["SPCSCET"]["Value"], "225897372.0736388"); - EXPECT_EQ(jsonData["FitsLabels"]["DURMET"]["Value"], "251.0"); - EXPECT_EQ(jsonData["FitsLabels"]["DETECTOR"]["Value"], "LEISA"); - EXPECT_EQ(jsonData["FitsLabels"]["SCANTYPE"]["Value"], "LEISA"); + EXPECT_EQ(jsonData["FitsLabels"][0]["SPCSCET"]["Value"], "225897372.0736388"); + EXPECT_EQ(jsonData["FitsLabels"][0]["DURMET"]["Value"], "251.0"); + EXPECT_EQ(jsonData["FitsLabels"][0]["DETECTOR"]["Value"], "LEISA"); + EXPECT_EQ(jsonData["FitsLabels"][0]["SCANTYPE"]["Value"], "LEISA"); // BandBin info - EXPECT_EQ(jsonData["FitsLabels"]["FILTER"]["Value"], "WEDGE"); + EXPECT_EQ(jsonData["FitsLabels"][0]["FILTER"]["Value"], "WEDGE"); // Kernels info - EXPECT_EQ(jsonData["FitsLabels"]["SPCINSID"]["Value"], "-98201"); + EXPECT_EQ(jsonData["FitsLabels"][0]["SPCINSID"]["Value"], "-98201"); } From 7c12563502cc0e39213756d69993a6163d01a731 Mon Sep 17 00:00:00 2001 From: acpaquette Date: Thu, 18 Apr 2024 11:16:15 -0700 Subject: [PATCH 2/2] Added changelog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ff1706cfd..49b55ddf2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,6 +50,7 @@ release. - Fixed noproj bug where match cube not NULL when not specifying MATCH parameter [#5381](https://github.com/USGS-Astrogeology/ISIS3/issues/5381) - Fixed findFeaturesSegment trying to merge networks when only 1 segmented network was successfully created [5416](https://github.com/DOI-USGS/ISIS3/issues/5416) - Fixed rclone.conf/downloadIsisData pointing to old naif kernel location, updated to archived locations and https [5394](https://github.com/DOI-USGS/ISIS3/issues/5394) +- Fixed a parsing error in FitsToJson when an empty comment was reached. [#5469](https://github.com/DOI-USGS/ISIS3/pull/5469) ### Added - Added 8 new functions to the Sensor Utility Library: Slant Distance, Target Center Distance, Right Ascension Declination, Local Solar Time, Line Resolution, Sample Resolution, Pixel Resolution, and Solar Longitude.